-class postfix {
- package { 'postfix':
- ensure => installed
- }
+# postfix class
+# @param use_smarthost use the smarthost
+# @param smarthost host to relay through (if set and use_smarthost)
+class postfix(
+ Optional[String] $smarthost,
+ Boolean $use_smarthost = true,
+ Boolean $manage_maincf = true,
+) {
+ package { 'postfix':
+ ensure => installed
+ }
- service { 'postfix':
- ensure => running
- }
+ if $use_smarthost {
+ if ! smarthost {
+ fail('No smarthost set but use_smarthost is true')
+ }
+ } else {
+ $heavy = true
+ }
- include debian_org::mail_incoming_port
+ service { 'postfix':
+ ensure => running
+ }
- munin::check { 'ps_exim4': ensure => absent }
- munin::check { 'exim_mailqueue': ensure => absent }
- munin::check { 'exim_mailstats': ensure => absent }
+ munin::check { 'ps_exim4': ensure => absent }
+ munin::check { 'exim_mailqueue': ensure => absent }
+ munin::check { 'exim_mailstats': ensure => absent }
- munin::check { 'postfix_mailqueue': }
- munin::check { 'postfix_mailstats': }
- munin::check { 'postfix_mailvolume': }
- munin::check { 'ps_smtp': script => 'ps_' }
- munin::check { 'ps_smtpd': script => 'ps_' }
+ munin::check { 'postfix_mailqueue': }
+ munin::check { 'postfix_mailstats': }
+ munin::check { 'postfix_mailvolume': }
+ munin::check { 'ps_smtp': script => 'ps_' }
+ munin::check { 'ps_smtpd': script => 'ps_' }
+
+ if $manage_maincf {
+ concat { '/etc/postfix/main.cf':
+ notify => Exec['service postfix reload'],
+ }
+ concat::fragment { 'puppet-postfix-main.cf--header':
+ target => '/etc/postfix/main.cf',
+ order => '000',
+ content => template('postfix/main.cf-header.erb')
+ }
+ } else {
+ include fail2ban::postfix
+ }
+
+ exec { 'service postfix reload':
+ path => '/usr/bin:/usr/sbin:/bin:/sbin',
+ command => 'service postfix reload',
+ refreshonly => true,
+ require => Package['postfix'],
+ }
}