From 39e4838d1ca1284906d38c320212c5fad8ed30fe Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Sat, 22 Feb 2014 23:01:30 +0200 Subject: [PATCH] smtpd: Add initial support for CentOS/RHEL 6 --- smtpd/files/smtpd.conf.CentOS | 5 + .../files/{smtpd.conf => smtpd.conf.OpenBSD} | 0 smtpd/files/smtpd.conf.RedHat | 5 + smtpd/manifests/init.pp | 110 +++++++++++++----- 4 files changed, 94 insertions(+), 26 deletions(-) create mode 100644 smtpd/files/smtpd.conf.CentOS rename smtpd/files/{smtpd.conf => smtpd.conf.OpenBSD} (100%) create mode 100644 smtpd/files/smtpd.conf.RedHat diff --git a/smtpd/files/smtpd.conf.CentOS b/smtpd/files/smtpd.conf.CentOS new file mode 100644 index 0000000..a2ea7b6 --- /dev/null +++ b/smtpd/files/smtpd.conf.CentOS @@ -0,0 +1,5 @@ +listen on localhost + +table aliases db:/etc/aliases.db + +include "/etc/opensmtpd/smtpd.conf.local" diff --git a/smtpd/files/smtpd.conf b/smtpd/files/smtpd.conf.OpenBSD similarity index 100% rename from smtpd/files/smtpd.conf rename to smtpd/files/smtpd.conf.OpenBSD diff --git a/smtpd/files/smtpd.conf.RedHat b/smtpd/files/smtpd.conf.RedHat new file mode 100644 index 0000000..a2ea7b6 --- /dev/null +++ b/smtpd/files/smtpd.conf.RedHat @@ -0,0 +1,5 @@ +listen on localhost + +table aliases db:/etc/aliases.db + +include "/etc/opensmtpd/smtpd.conf.local" diff --git a/smtpd/manifests/init.pp b/smtpd/manifests/init.pp index 844433e..0b2c294 100644 --- a/smtpd/manifests/init.pp +++ b/smtpd/manifests/init.pp @@ -14,43 +14,93 @@ class smtpd { $relay = "smtp+tls://${mail_server}" } - file { "/etc/mailer.conf": + case $::operatingsystem { + "centos","redhat": { + if versioncmp($::operatingsystemrelease, "6") < 0 { + fail("smtpd requires atleast ${::operatingsystem} 6") + } + + $package = "opensmtpd" + $service = "opensmtpd" + $confdir = "/etc/opensmtpd" + + package { $package: + ensure => installed, + before => [ + File["${confdir}/smtpd.conf"], + File["${confdir}/smtpd.conf.local"], + ], + } + + exec { "/usr/sbin/alternatives --set mta /usr/sbin/sendmail.opensmtpd": + refreshonly => true, + subscribe => Package[$package], + before => Service[$service], + } + + service { [ "postfix", "sendmail" ]: + ensure => stopped, + enable => false, + before => Service[$service], + } + + } + "openbsd": { + $package = undef + $service = "smtpd" + $confdir = "/etc/mail" + + file { "/etc/mailer.conf": + ensure => present, + mode => "0644", + owner => "root", + group => "wheel", + source => "puppet:///modules/smtpd/mailer.conf", + before => Service[$service], + } + + service { "sendmail": + ensure => stopped, + enable => false, + before => Service[$service], + } + } + default: { + fail("smtpd not supported on ${::operatingsystem}") + } + } + + file { "${confdir}/smtpd.conf": ensure => present, mode => "0644", owner => "root", - group => "wheel", - source => "puppet:///modules/smtpd/mailer.conf", - before => Service["smtpd"], + group => $::operatingsystem ? { + "openbsd" => "wheel", + default => "root", + }, + source => "puppet:///modules/smtpd/smtpd.conf.${::operatingsystem}", + notify => Service[$service], } - file { "/etc/mail/smtpd.conf": + file { "${confdir}/smtpd.conf.local": ensure => present, mode => "0644", owner => "root", - group => "wheel", - source => "puppet:///modules/smtpd/smtpd.conf", - notify => Service["smtpd"], - } - - file { "/etc/mail/smtpd.conf.local": - ensure => present, - mode => "0644", - owner => "root", - group => "wheel", + group => $::operatingsystem ? { + "openbsd" => "wheel", + default => "root", + }, content => template("smtpd/client.conf.erb"), - notify => Service["smtpd"], + notify => Service[$service], } - service { "sendmail": - ensure => stopped, - enable => false, - before => Service["smtpd"], - } - - service { "smtpd": + service { $service: ensure => running, enable => true, - start => "/usr/sbin/smtpd", + start => $::operatingsystem ? { + "openbsd" => "/usr/sbin/smtpd", + default => undef, + }, } } @@ -89,10 +139,14 @@ class smtpd::server( $gecos=false, $domains=undef, $virtual=undef, - $ssl_key="${puppet_ssldir}/private_keys/${homename}.pem", - $ssl_cert="${puppet_ssldir}/certs/${homename}.pem" + $ssl_key="${::puppet_ssldir}/private_keys/${::homename}.pem", + $ssl_cert="${::puppet_ssldir}/certs/${::homename}.pem" ) inherits smtpd { + if $::operatingsystem != "OpenBSD" { + fail("smtpd::server only supported on OpenBSD") + } + include procmail procmail::rc { "00-default.rc": @@ -209,6 +263,8 @@ class smtpd::server( } +# Install alias mapping for domain. +# define smtpd::aliases($gecos) { file { "/etc/mail/aliases.${name}": @@ -237,6 +293,8 @@ define smtpd::aliases($gecos) { } +# Install virtual user mapping for domain. +# define smtpd::virtual() { file { "/etc/mail/virtual.${name}":