From 03b3c816ae20227748e0e506a4e927b036fb96ba Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Fri, 25 Feb 2005 13:15:09 +0000 Subject: Fix bug causing all but last mailgroup to be ignored. Quote a variable. Move 'sort -u' loop to a function. --- localmkpostfixvirtual | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'localmkpostfixvirtual') 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 # -# $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 -- cgit v1.2.3