smtpd: Added support for gecos aliases
This commit is contained in:
parent
baf347204b
commit
4f22f69766
2 changed files with 55 additions and 8 deletions
10
smtpd/files/generate-smtpd-gecos.sh
Normal file
10
smtpd/files/generate-smtpd-gecos.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "# Generated" > /etc/mail/gecos
|
||||||
|
|
||||||
|
/usr/bin/awk -F : '{
|
||||||
|
if($3 != "0" && $7 != "/sbin/nologin") {
|
||||||
|
gsub(/[[:space:]]+/, ".", $5);
|
||||||
|
print tolower($5)":"$1;
|
||||||
|
}
|
||||||
|
}' /etc/passwd >> /etc/mail/gecos
|
|
@ -67,6 +67,10 @@ class smtpd {
|
||||||
# Boolean for whether we accept mail for local recipients.
|
# Boolean for whether we accept mail for local recipients.
|
||||||
# Defaults to true.
|
# Defaults to true.
|
||||||
#
|
#
|
||||||
|
# $gecos:
|
||||||
|
# Boolean for whether to enable gecos aliases.
|
||||||
|
# Defaults to false.
|
||||||
|
#
|
||||||
# $domains:
|
# $domains:
|
||||||
# Array of primary domains to accept mail for.
|
# Array of primary domains to accept mail for.
|
||||||
#
|
#
|
||||||
|
@ -82,6 +86,7 @@ class smtpd {
|
||||||
class smtpd::server(
|
class smtpd::server(
|
||||||
$maildir,
|
$maildir,
|
||||||
$local=true,
|
$local=true,
|
||||||
|
$gecos=false,
|
||||||
$domains=undef,
|
$domains=undef,
|
||||||
$virtual=undef,
|
$virtual=undef,
|
||||||
$ssl_key="${puppet_ssldir}/private_keys/${homename}.pem",
|
$ssl_key="${puppet_ssldir}/private_keys/${homename}.pem",
|
||||||
|
@ -131,6 +136,21 @@ class smtpd::server(
|
||||||
notify => Service["smtpd"],
|
notify => Service["smtpd"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $gecos == true {
|
||||||
|
file { "/usr/local/sbin/generate-smtpd-gecos.sh":
|
||||||
|
ensure => present,
|
||||||
|
mode => "0700",
|
||||||
|
owner => "root",
|
||||||
|
group => "wheel",
|
||||||
|
source => "puppet:///modules/smtpd/generate-smtpd-gecos.sh",
|
||||||
|
}
|
||||||
|
exec { "/usr/local/sbin/generate-smtpd-gecos.sh":
|
||||||
|
unless => "/bin/test /etc/mail/gecos -nt /etc/passwd",
|
||||||
|
require => File["/usr/local/sbin/generate-smtpd-gecos.sh"],
|
||||||
|
notify => Exec["makemap aliases"],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
file { "/etc/mail/aliases":
|
file { "/etc/mail/aliases":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
mode => "0644",
|
mode => "0644",
|
||||||
|
@ -141,15 +161,26 @@ class smtpd::server(
|
||||||
"puppet:///files/mail/aliases",
|
"puppet:///files/mail/aliases",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
exec { "makemap -t aliases /etc/mail/aliases":
|
exec { "makemap aliases":
|
||||||
|
command => $gecos ? {
|
||||||
|
false => "makemap aliases",
|
||||||
|
true => "cat aliases gecos > aliases.gecos && makemap -o aliases.db aliases.gecos",
|
||||||
|
},
|
||||||
refreshonly => true,
|
refreshonly => true,
|
||||||
|
cwd => "/etc/mail",
|
||||||
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
||||||
subscribe => File["/etc/mail/aliases"],
|
subscribe => File["/etc/mail/aliases"],
|
||||||
notify => Service["smtpd"],
|
before => Service["smtpd"],
|
||||||
}
|
}
|
||||||
|
|
||||||
if $domains {
|
if $domains {
|
||||||
smtpd::aliases { $domains: }
|
smtpd::aliases { $domains:
|
||||||
|
gecos => $gecos,
|
||||||
|
subscribe => $gecos ? {
|
||||||
|
false => undef,
|
||||||
|
true => Exec["/usr/local/sbin/generate-smtpd-gecos.sh"],
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if $virtual {
|
if $virtual {
|
||||||
|
@ -159,7 +190,7 @@ class smtpd::server(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
define smtpd::aliases() {
|
define smtpd::aliases($gecos) {
|
||||||
|
|
||||||
file { "/etc/mail/aliases.${name}":
|
file { "/etc/mail/aliases.${name}":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
|
@ -172,11 +203,16 @@ define smtpd::aliases() {
|
||||||
"puppet:///files/mail/aliases",
|
"puppet:///files/mail/aliases",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
exec { "makemap -t aliases /etc/mail/aliases.${name}":
|
exec { "makemap aliases.${name}":
|
||||||
|
command => $gecos ? {
|
||||||
|
false => "makemap aliases.${name}",
|
||||||
|
true => "cat aliases.${name} gecos > aliases.${name}.gecos && makemap -o aliases.${name}.db aliases.${name}.gecos",
|
||||||
|
},
|
||||||
refreshonly => true,
|
refreshonly => true,
|
||||||
|
cwd => "/etc/mail",
|
||||||
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
||||||
subscribe => File["/etc/mail/aliases.${name}"],
|
subscribe => File["/etc/mail/aliases.${name}"],
|
||||||
notify => Service["smtpd"],
|
before => Service["smtpd"],
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -195,11 +231,12 @@ define smtpd::virtual() {
|
||||||
"puppet:///files/mail/virtual",
|
"puppet:///files/mail/virtual",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
exec { "makemap -t aliases /etc/mail/virtual.${name}":
|
exec { "makemap virtual.${name}":
|
||||||
refreshonly => true,
|
refreshonly => true,
|
||||||
|
cwd => "/etc/mail",
|
||||||
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
||||||
subscribe => File["/etc/mail/virtual.${name}"],
|
subscribe => File["/etc/mail/virtual.${name}"],
|
||||||
notify => Service["smtpd"],
|
before => Service["smtpd"],
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue