-class exim::mx inherits exim {
- include clamav
- include postgrey
+# our heavy exim class
+# @param is_mailrelay this system is a mailrelay, both in and out, for debian hosts
+class exim::mx(
+ Boolean $is_mailrelay = false,
+){
+ class { 'exim':
+ use_smarthost => false,
+ is_mailrelay => $is_mailrelay,
+ }
- file { '/etc/exim4/ccTLD.txt':
- source => 'puppet:///modules/exim/common/ccTLD.txt',
- }
- file { '/etc/exim4/surbl_whitelist.txt':
- source => 'puppet:///modules/exim/common/surbl_whitelist.txt',
- }
- file { '/etc/exim4/exim_surbl.pl':
- source => 'puppet:///modules/exim/common/exim_surbl.pl',
- notify => Service['exim4'],
- }
+ include clamav
+ include postgrey
+ include fail2ban::exim
- # MXs used as smarthosts
- @ferm::rule { 'dsa-exim-submission':
- description => 'Allow SMTP',
- rule => '&SERVICE_RANGE(tcp, submission, $SMTP_SOURCES)'
- }
- @ferm::rule { 'dsa-exim-v6-submission':
- description => 'Allow SMTP',
- 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 => "${autocertdir}/${::fqdn}.crt",
- port => 587,
- hostname => "$::fqdn",
- }
- package { 'nagios-plugins-standard':
- ensure => installed,
- }
+ file { '/etc/exim4/ccTLD.txt':
+ source => 'puppet:///modules/exim/common/ccTLD.txt',
+ }
+ file { '/etc/exim4/surbl_whitelist.txt':
+ source => 'puppet:///modules/exim/common/surbl_whitelist.txt',
+ }
+ file { '/etc/exim4/two-level-tlds':
+ source => 'puppet:///modules/exim/common/two-level-tlds',
+ }
+ file { '/etc/exim4/three-level-tlds':
+ source => 'puppet:///modules/exim/common/three-level-tlds',
+ }
+ file { '/etc/exim4/exim_surbl.pl':
+ source => 'puppet:///modules/exim/common/exim_surbl.pl',
+ notify => Service['exim4'],
+ }
- 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,
- }
- }
+ package { 'monitoring-plugins-standard':
+ ensure => installed,
+ }
+
+ ferm::rule::simple { 'dsa-smtp':
+ description => 'Allow smtp access from the world',
+ port => '25',
+ }
}