{ $OUT = ''; # Generate qmail user assignments for groups. These will be handled # by ~alias/.qmail-groupname and ~alias/.qmail-groupname-ext. 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}"; use esmith::AccountsDB; my $adb = esmith::AccountsDB->open_ro(); foreach $group ( $adb->groups ) { # Assign mail for group@ $OUT .= "=" . $group->key . ":${alias_assign}:-:" . $group->key . ":\n"; # Assign mail for group-ext@ $OUT .= "+" . $group->key . "-:${alias_assign}:-" . $group->key . "-::\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; }