# Install custom config to Dovecot # # === Parameters # # $name: # Config name. # # $idx: # Config load order. Defaults to 99. # # === Sample usage # # dovecot::server::config { "passdb-pam": idx => 09 } # define dovecot::server::config($idx = 90) { include dovecot::server::v2 file { "${name}.conf": ensure => present, path => "/etc/dovecot/conf.d/${idx}-${name}.conf", source => [ "puppet:///files/dovecot/${name}.conf", "puppet:///modules/dovecot/${name}.conf", ], mode => "0644", owner => "root", group => $::operatingsystem ? { "openbsd" => "wheel", default => "root", }, notify => Service["dovecot"], require => Package["dovecot"], } } class dovecot::server::v2 { case $operatingsystem { centos,fedora: { $dovecot_ssl_dir = "/etc/pki/tls" } default: { fail("Dovecot module not supported in ${operatingsystem}.") } } service { "dovecot": ensure => running, enable => true, require => File["/etc/dovecot/conf.d/98-puppet.conf", "/etc/dovecot/conf.d/99-local.conf"], } file { "/etc/dovecot/conf.d/98-puppet.conf": ensure => present, content => template("dovecot/puppet.conf.erb"), mode => "0644", owner => "root", group => "root", notify => Service["dovecot"], require => Package["dovecot"], } file { "/etc/dovecot/conf.d/99-local.conf": ensure => present, source => [ "puppet:///files/dovecot/local.conf", "puppet:///modules/dovecot/empty", ], mode => "0644", owner => "root", group => "root", notify => Service["dovecot"], require => Package["dovecot"], } if $dovecot_ssl_csr { file { "$dovecot_ssl_dir/private/dovecot.csr": ensure => present, source => $dovecot_ssl_csr, mode => "0640", owner => "root", group => "root", notify => Service["dovecot"], } } if $dovecot_ssl_ca { file { "$dovecot_ssl_dir/certs/dovecot.ca.crt": ensure => present, source => $dovecot_ssl_ca, mode => "0644", owner => "root", group => "root", notify => Service["dovecot"], } } if $dovecot_ssl_cert { file { "$dovecot_ssl_dir/certs/dovecot.crt": ensure => present, source => $dovecot_ssl_cert, mode => "0644", owner => "root", group => "root", notify => Service["dovecot"], } } else { fail("You need to define an ssl_cert in your node manifest.") } if $dovecot_ssl_key { file { "$dovecot_ssl_dir/private/dovecot.key": ensure => present, source => $dovecot_ssl_key, mode => "0600", owner => "root", group => "root", notify => Service["dovecot"], } } else { fail("You need to define an ssl_key in your node manifest.") } }