]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/exim/manifests/init.pp
abe0237057178ca5435774aa711f30e8dd5a646b
[dsa-puppet.git] / modules / exim / manifests / init.pp
1 class exim {
2
3         munin::check { 'ps_exim4': script => 'ps_' }
4         munin::check { 'exim_mailqueue': }
5         munin::check { 'exim_mailstats': }
6
7         munin::check { 'postfix_mailqueue':  ensure => absent }
8         munin::check { 'postfix_mailstats':  ensure => absent }
9         munin::check { 'postfix_mailvolume': ensure => absent }
10
11         package { 'exim4-daemon-heavy': ensure => installed }
12
13         service { 'exim4':
14                 ensure  => running,
15                 require => [
16                         File['/etc/exim4/exim4.conf'],
17                         Package['exim4-daemon-heavy'],
18                 ]
19         }
20
21         file { '/etc/exim4/':
22                 ensure  => directory,
23                 mode    => '0755',
24                 require => Package['exim4-daemon-heavy'],
25                 purge   => true,
26         }
27         file { '/etc/exim4/Git':
28                 ensure  => directory,
29                 purge   => true,
30                 force   => true,
31                 recurse => true,
32                 source  => 'puppet:///files/empty/',
33         }
34         file { '/etc/exim4/conf.d':
35                 ensure  => directory,
36                 purge   => true,
37                 force   => true,
38                 recurse => true,
39                 source  => 'puppet:///files/empty/',
40         }
41         file { '/etc/exim4/ssl':
42                 ensure  => directory,
43                 group   => Debian-exim,
44                 mode    => '0750',
45                 purge   => true,
46         }
47         file { '/etc/exim4/exim4.conf':
48                 content => template('exim/eximconf.erb'),
49                 require => File['/etc/exim4/ssl/thishost.crt'],
50                 notify  => Service['exim4'],
51         }
52         file { '/etc/mailname':
53                 content => template('exim/mailname.erb'),
54         }
55         file { '/etc/exim4/manualroute':
56                 content => template('exim/manualroute.erb')
57         }
58         file { '/etc/exim4/locals':
59                 content => template('exim/locals.erb')
60         }
61         file { '/etc/exim4/virtualdomains':
62                 content => template('exim/virtualdomains.erb'),
63         }
64         file { '/etc/exim4/submission-domains':
65                 content => template('exim/submission-domains.erb'),
66         }
67         file { '/etc/exim4/host_blacklist':
68                 source => 'puppet:///modules/exim/common/host_blacklist',
69         }
70         file { '/etc/exim4/blacklist':
71                 source => 'puppet:///modules/exim/common/blacklist',
72         }
73         file { '/etc/exim4/callout_users':
74                 source => 'puppet:///modules/exim/common/callout_users',
75         }
76         file { '/etc/exim4/grey_users':
77                 source => 'puppet:///modules/exim/common/grey_users',
78         }
79         file { '/etc/exim4/helo-check':
80                 source => 'puppet:///modules/exim/common/helo-check',
81         }
82         file { '/etc/exim4/localusers':
83                 source => 'puppet:///modules/exim/common/localusers',
84         }
85         file { '/etc/exim4/rbllist':
86                 source => 'puppet:///modules/exim/common/rbllist',
87         }
88         file { '/etc/exim4/rhsbllist':
89                 source => 'puppet:///modules/exim/common/rhsbllist',
90         }
91         file { '/etc/exim4/whitelist':
92                 source => 'puppet:///modules/exim/common/whitelist',
93         }
94         file { '/etc/logrotate.d/exim4-base':
95                 source => 'puppet:///modules/exim/common/logrotate-exim4-base',
96         }
97         file { '/etc/logrotate.d/exim4-paniclog':
98                 source => 'puppet:///modules/exim/common/logrotate-exim4-paniclog'
99         }
100         file { '/etc/exim4/ssl/thishost.crt':
101                 source  => "puppet:///modules/exim/certs/${::fqdn}.crt",
102                 group   => Debian-exim,
103                 mode    => '0640',
104         }
105         file { '/etc/exim4/ssl/thishost.key':
106                 source  => "puppet:///modules/exim/certs/${::fqdn}.key",
107                 group   => Debian-exim,
108                 mode    => '0640',
109         }
110         file { '/etc/exim4/ssl/ca.crt':
111                 source  => 'puppet:///modules/exim/certs/ca.crt',
112                 group   => Debian-exim,
113                 mode    => '0640',
114         }
115         file { '/etc/exim4/ssl/ca.crl':
116                 source  => 'puppet:///modules/exim/certs/ca.crl',
117                 group   => Debian-exim,
118                 mode    => '0640',
119         }
120         file { '/var/log/exim4':
121                 ensure  => directory,
122                 mode    => '2750',
123                 owner   => Debian-exim,
124                 group   => maillog,
125         }
126
127         case getfromhash($site::nodeinfo, 'mail_port') {
128                 /^(\d+)$/: { $mail_port = $1 }
129                 default: { $mail_port = 'smtp' }
130         }
131
132         @ferm::rule { 'dsa-exim':
133                 description => 'Allow SMTP',
134                 rule        => "&SERVICE_RANGE(tcp, $mail_port, \$SMTP_SOURCES)"
135         }
136
137         @ferm::rule { 'dsa-exim-v6':
138                 description => 'Allow SMTP',
139                 domain      => 'ip6',
140                 rule        => "&SERVICE_RANGE(tcp, $mail_port, \$SMTP_V6_SOURCES)"
141         }
142
143         # Do we actually want this?  I'm only doing it because it's harmless
144         # and makes the logs quiet.  There are better ways of making logs quiet,
145         # though.
146         @ferm::rule { 'dsa-ident':
147                 domain      => '(ip ip6)',
148                 description => 'Allow ident access',
149                 rule        => '&SERVICE(tcp, 113)'
150         }
151
152 }