smeserver-mini-qmail/root/etc/e-smith/templates/var/qmail/users/assign/50system

57 lines
1.6 KiB
Plaintext
Raw Normal View History

{
$OUT = '';
# Generate qmail user assignments for system accounts. These will
# be handled by admin. Make sure we DON'T reassign the admin or
# alias users!
my (undef, undef, $uid, $gid, undef, undef, undef, $dir, undef)
= getpwnam("admin");
# It is almost impossible to get Text::Template to output nothing
# on failure. It can be done by removing the newline at the end of
# this file but that is messy. Therefore, we'll simply return an
# error message that will make qmail-newu fail. Also send a
# warning message that will be captured in the logs.
unless (defined $uid && defined $gid && defined $dir)
{
my $msg =
"Failed to obtain user details for \'admin\' "
. "while processing system assignments.";
warn "$msg\n";
$OUT = $msg;
return;
}
my $admin_assign = "admin:${uid}:${gid}:${dir}";
use esmith::AccountsDB;
my $adb = esmith::AccountsDB->open_ro();
foreach my $user ( $adb->get_all_by_prop( type => 'system' ) )
{
next if ($user->key eq "admin");
next if ($user->key eq "alias");
next if ($user->key eq "shared");
# Assign mail for system_account@
$OUT .= "=" . $user->key . ":${admin_assign}:::\n";
# Assign mail for system_account-ext@
$OUT .= "+" . $user->key . "-:${admin_assign}:-::\n";
}
# Need to remove the final newline character. Blank lines in
# /var/qmail/users/assign are prohibited.
chomp($OUT);
# Failsafe: /var/qmail/users/assign cannot have blank lines.
# Therefore, if $OUT is empty, simply set up an assign for the
# admin user.
$OUT = "=admin:${admin_assign}:::" unless $OUT;
}