netfilter DROP traffic from some mail abusers
[mirror/dsa-puppet.git] / modules / exim / manifests / mx.pp
index 9b5bf4b..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/ssl/files/auto-certs/${::fqdn}.crt",
+               certfile => "${autocertdir}/${::fqdn}.crt",
                port => 587,
                hostname => "$::fqdn",
        }
@@ -34,12 +45,12 @@ class exim::mx inherits exim {
        }
 
        if has_role('mailrelay') {
-               file { '/etc/cron.d/dsa-email-virtualdomains':
-                       source => 'puppet:///modules/exim/dsa-email-virtualdomains.cron',
-               }
-       } else {
-               file { '/etc/cron.d/dsa-email-virtualdomains':
-                       ensure => absent,
+               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, }
 }