netfilter DROP traffic from some mail abusers
[mirror/dsa-puppet.git] / modules / exim / manifests / mx.pp
index e035abb..dce0358 100644 (file)
@@ -13,6 +13,16 @@ class exim::mx inherits exim {
                notify  => Service['exim4'],
        }
 
+       # 20181010 many connections:
+       #  188.165.219.27
+       #  125.72.232.*
+       #  140.224.61.*
+       #  117.24.38.*
+       @ferm::rule { 'dsa-mail-abusers':
+               prio  => "000",
+               rule  => "saddr (188.165.219.27 125.72.232.0/24 140.224.61.0/24 117.24.38.0/24) DROP",
+       }
+
        # MXs used as smarthosts
        @ferm::rule { 'dsa-exim-submission':
                description => 'Allow SMTP',
@@ -23,9 +33,10 @@ class exim::mx inherits exim {
                domain      => 'ip6',
                rule        => '&SERVICE_RANGE(tcp, submission, $SMTP_V6_SOURCES)',
        }
+       $autocertdir = hiera('paths.auto_certs_dir')
        dnsextras::tlsa_record{ "tlsa-submission":
                zone => 'debian.org',
-               certfile => "/etc/puppet/modules/exim/files/certs/${::fqdn}.crt",
+               certfile => "${autocertdir}/${::fqdn}.crt",
                port => 587,
                hostname => "$::fqdn",
        }
@@ -33,7 +44,13 @@ class exim::mx inherits exim {
                ensure => installed,
        }
 
-       file { '/etc/cron.d/dsa-email-virtualdomains':
-               source => 'puppet:///modules/exim/dsa-email-virtualdomains.cron',
-       }
+       if has_role('mailrelay') {
+               concat::fragment { 'dsa-puppet-stuff--email-virtualdomains':
+                       target => '/etc/cron.d/dsa-puppet-stuff',
+                       content  => @(EOF)
+                               @hourly  root if [ ! -d /etc/exim4/email-virtualdomains ]; then cd /etc/exim4 && git clone mail-git:email-virtualdomains ; fi && cd /etc/exim4/email-virtualdomains && git pull --quiet --ff-only
+                               | EOF
+               }
+       }
+       file { '/etc/cron.d/dsa-email-virtualdomains': ensure => absent, }
 }