smeserver-fetchmail/root/etc/e-smith/templates/var/qmail/users/assign/85fetchmail-groups

78 lines
2.5 KiB
Perl

{
# vim: ft=perl ts=4 sw=4 et:
use esmith::ConfigDB ;
use esmith::AccountsDB ;
$OUT = '';
# Generate qmail user assignments for groups. These will be handled
# by ~alias/.qmail-groupname and ~alias/.qmail-groupname-ext.
my $db = esmith::ConfigDB->open_ro
or die "Can't open the Config database : $!\n" ;
my $accountdb = esmith::AccountsDB->open_ro
or die "Can't open the Account database : $!\n" ;
my (undef, undef, $uid, $gid, undef, undef, undef, $dir, undef)
= getpwnam("alias");
# 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 \'alias\' "
. "while processing group assignments.";
warn "$msg\n";
$OUT = $msg;
return;
}
my $alias_assign = "alias:${uid}:${gid}:${dir}";
my @users ;
my $fetchmail = $db->get('FetchMails') ;
my $FMStatus = 'disabled' ;
if ( defined $fetchmail ) {
$FMStatus = $fetchmail->prop('status') || 'disabled' ;
}
if ( $FMStatus eq 'enabled' ) {
my @users = $accountdb->get('admin');
push @users, $accountdb->users();
foreach my $u ( @users ) {
# print $u->key ;
my $MailCopyTo = '' ;
$MailCopyTo = $u->prop( 'FM-MailCopyTo' ) if ( defined $u->prop( 'FM-MailCopyTo' ) ) ;
my $TransName = '' ;
$TransName = $u->prop( 'FM-TransName' ) if ( defined $u->prop( 'FM-TransName' ) ) ;
# print "$MailCopyTo\n" ;
if ( $MailCopyTo ne '' || $TransName ne '' ) {
my $FMGroup = "fm_fm-" . $u->key ;
# Assign mail for group@
$OUT .= "=${FMGroup}:${alias_assign}:-:${FMGroup}:\n";
# Assign mail for group-ext@
$OUT .= "+${FMGroup}-:${alias_assign}:-${FMGroup}-::\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
# alias user.
$OUT = "=alias:${alias_assign}:::" unless $OUT;
}