summaryrefslogtreecommitdiff
path: root/puppet/modules/postfwd/manifests/init.pp
blob: 6db3fa52f30bffd2032cb82c9b29e46b269a49d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# This class provides rate-limiting for outgoing SMTP, using postfwd
# it is configured with some limits that seem reasonable for a generic
# use-case. Each of the following applies to sasl_authenticated users:
#
# . 150 recipients at a time
# . no more than 50 messages in 60 minutes
# . no more than 250 recipients in 60 minutes.
#
# This class could be easily extended to add overrides to these rules,
# maximum sizes per client, or additional rules
class postfwd {

  ensure_packages(['libnet-server-perl', 'libnet-dns-perl', 'postfwd'])

  file {
    '/etc/default/postfwd':
      source  => 'puppet:///modules/postfwd/postfwd_default',
      mode    => '0644',
      owner   => root,
      group   => root,
      before  => Package['postfwd'];

    '/etc/postfix/postfwd.cf':
      content => template('postfwd/postfwd.cf.erb'),
      mode    => '0644',
      owner   => root,
      group   => root,
      require => Package['postfix'],
      before  => Package['postfwd'];
  }

  service {
    'postfwd':
      ensure     => running,
      name       => postfwd,
      pattern    => '/usr/sbin/postfwd',
      enable     => true,
      hasrestart => true,
      hasstatus  => false,
      require    => [ File['/etc/default/postfwd'],
                      File['/etc/postfix/postfwd.cf']];
  }
}