class firewall::virtual::mail($destination) { shorewall::rule { 'mail-1': action => 'DNAT', source => 'vm', destination => "fw:$destination:25", proto => 'tcp', destinationport => '25', originaldest => hiera('firewall::external_ip', $::ipaddress), ratelimit => '-', order => 1000, } shorewall::rule { 'mail-2': action => 'DNAT', source => 'net', destination => "vm:$destination:25", proto => 'tcp', destinationport => '25', originaldest => hiera('firewall::external_ip', $::ipaddress), ratelimit => '-', order => 1001, } shorewall::rule { 'mail-3': action => 'DNAT', source => 'vm', destination => "fw:$destination:993", proto => 'tcp', destinationport => '993', originaldest => hiera('firewall::external_ip', $::ipaddress), ratelimit => hiera("firewall::ssl_ratelimit", '-'), order => 1002, } shorewall::rule { 'mail-4': action => 'DNAT', source => 'net', destination => "vm:$destination:993", proto => 'tcp', destinationport => '993', originaldest => hiera('firewall::external_ip', $::ipaddress), ratelimit => hiera("firewall::ssl_ratelimit", '-'), order => 1003, } shorewall::rule { 'mail-5': action => 'DNAT', source => 'vm', destination => "fw:$destination:587", proto => 'tcp', destinationport => '587', originaldest => hiera('firewall::external_ip', $::ipaddress), ratelimit => hiera("firewall::ssl_ratelimit", '-'), order => 1004, } shorewall::rule { 'mail-6': action => 'DNAT', source => 'net', destination => "vm:$destination:587", proto => 'tcp', destinationport => '587', originaldest => hiera('firewall::external_ip', $::ipaddress), ratelimit => hiera("firewall::ssl_ratelimit", '-'), order => 1005, } }