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