summaryrefslogtreecommitdiff
path: root/localmkpostfixvirtual
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2005-02-25 13:15:09 +0000
committerJonas Smedegaard <dr@jones.dk>2005-02-25 13:15:09 +0000
commit03b3c816ae20227748e0e506a4e927b036fb96ba (patch)
tree744b92546acc2db9a94181911456033307b0246d /localmkpostfixvirtual
parent11ee41e678ea3146f510c6d02e7008b255ef5cac (diff)
Fix bug causing all but last mailgroup to be ignored. Quote a variable. Move 'sort -u' loop to a function.
Diffstat (limited to 'localmkpostfixvirtual')
-rwxr-xr-xlocalmkpostfixvirtual11
1 files changed, 6 insertions, 5 deletions
diff --git a/localmkpostfixvirtual b/localmkpostfixvirtual
index aec37b6..b89c7f4 100755
--- a/localmkpostfixvirtual
+++ b/localmkpostfixvirtual
@@ -3,7 +3,7 @@
# /usr/local/sbin/localmkpostfixvirtual
# Copyright 2001-2002 Jonas Smedegaard <dr@jones.dk>
#
-# $Id: localmkpostfixvirtual,v 1.17 2004-08-19 14:40:32 jonas Exp $
+# $Id: localmkpostfixvirtual,v 1.18 2005-02-25 13:15:09 jonas Exp $
#
# Generate virtual file for postfix
#
@@ -44,6 +44,7 @@ function get_other_field() { getent passwd $1 | awk -F: '{print $5}' | awk -F, '
function get_groups() { groups $1 | sed -e 's/^.*: //' -e "s/\( \+\|^\)$1\( \+\|$\)/\1/"; }
function get_domain() { echo $1 | egrep "^@[\.[:alnum:]-]+$" | sed -e 's/@//'; }
function get_account() { echo $1 | egrep "^([\.[:alnum:]_-]+|\+)@($gid|$maildomain)?$" | sed -e 's/@.*//'; }
+function sort_u() { for x in $@; do echo $x; done | sort -u; }
function print_accounts() {
uid=$1
@@ -94,18 +95,18 @@ for gid in $mailgroups; do
print_accounts root "$maildomain" "$maildomain VIRTUAL" "postmaster@$maildomain root"
mailgroupowners=""
mailusers=""
- mailgroups=`get_roomnumber_field $gid`
+ mailgroups="`get_roomnumber_field $gid`"
test -z "$mailgroups" && mailgroups=$gid
for mailgroup in $mailgroups; do
- mailgroupowners="$mailgroup_owners `members -p $mailgroup`"
+ mailgroupowners="$mailgroupowners `members -p $mailgroup`"
mailusers="$mailusers `members -s $mailgroup`"
done
# Do mailgroup owners (and don't warn if there's no addresses attached)
- for uid in `for x in $mailgroupowners; do echo $x; done | uniq | sort`; do
+ for uid in `sort_u $mailgroupowners`; do
print_accounts $uid "$maildomain" "# `get_fullname_field $uid` (`get_groups $uid`)" ""
done
# Do secondary mailgroup members
- for uid in `for x in $mailusers; do echo $x; done | uniq | sort`; do
+ for uid in `sort_u $mailusers`; do
print_accounts $uid "$maildomain" "# `get_fullname_field $uid` (`get_groups $uid`)" "#WARNING: No addresses for $uid"
done
done