X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Froles%2Fmanifests%2Fmta.pp;h=22fbb6619fb6a0082986c89e2f86c566c0cb1eb2;hb=33a685862291e6f3c0c7f9df702b930430bbe419;hp=2a783b48035b07ac4d4622be50fa7f9fa57d2f84;hpb=1025496ebccd1d943ad0dddf58d4bee574be1464;p=mirror%2Fdsa-puppet.git diff --git a/modules/roles/manifests/mta.pp b/modules/roles/manifests/mta.pp index 2a783b480..22fbb6619 100644 --- a/modules/roles/manifests/mta.pp +++ b/modules/roles/manifests/mta.pp @@ -27,23 +27,38 @@ class roles::mta( $mxdata = dig($deprecated::nodeinfo, 'ldap', 'mXRecord') + $mailport = lookup( { 'name' => 'exim::mail_port', 'default_value' => 25 } ) + if $mxdata and $mxdata.any |$item| { $item =~ /INCOMING-MX/ } { - $mailport = lookup( { 'name' => 'exim::mail_port', 'default_value' => undef } ) - - @@concat::fragment { "manualroute-to-${::fqdn}": - tag => 'exim::manualroute::to::mailrelay', - target => '/etc/exim4/manualroute', - content => $mailport == undef ? { - true => "${::fqdn}: ${::fqdn}", - default => "${::fqdn}: ${::fqdn}::${mailport}", - } + # a mail satellite. Gets mail via the mailrelays and sends out mail via the mail relays + + exim::manualroute{ $::fqdn: } + + @@ferm::rule::simple { "submission-from-${::fqdn}": + tag => 'smtp::server::submission::to::mail-relay', + chain => 'submission', + saddr => $base::public_addresses, + } + + Ferm::Rule::Simple <<| tag == 'smtp::server::to::mail-satellite' |>> { + port => $mailport } - Ferm::Rule::Simple <<| tag == 'smtp::server::from::mailrelay' |>> { - port => $mailport == undef ? { - true => 25, - default => $mailport, - } + } else { + # not a mail satellite + + if ! defined(Class['exim::mx']) and ! defined(Class['postfix']) { + fail('We are not an exim::mx (or a postfix) yet do not have set our MXs to INCOMING-MX.') } + + # firewall allow is done by the exim::mx class + } + + $autocertdir = hiera('paths.auto_certs_dir') + dnsextras::tlsa_record{ 'tlsa-mailport': + zone => 'debian.org', + certfile => "${autocertdir}/${::fqdn}.crt", + port => $mailport, + hostname => $::fqdn, } }