diff -Nur e-smith-qmail-2.4.0/root/etc/e-smith/events/actions/qmail-update-group e-smith-qmail-2.4.0_bz9523/root/etc/e-smith/events/actions/qmail-update-group --- e-smith-qmail-2.4.0/root/etc/e-smith/events/actions/qmail-update-group 2016-02-05 22:46:06.000000000 +0100 +++ e-smith-qmail-2.4.0_bz9523/root/etc/e-smith/events/actions/qmail-update-group 2016-05-24 10:13:07.105336565 +0200 @@ -75,7 +75,23 @@ my %properties = $group->props; $groupName =~ s/\./:/g; my $group = "/var/qmail/alias/.qmail-$groupName"; - my $members = $properties{Members}; + my @group_members = split(/,/, $properties{Members}); + # Check if we should exclude members from this group email address + my @exclude_users = split(/,/, ($properties{EmailExcludeUsers} || '')); + my @exclude_groups = split(/,/, ($properties{EmailExcludeGroups} || '')); + foreach my $exclude_group (@exclude_groups){ + my $g = $a->get($exclude_group); + next unless $g; + push @exclude_users, split(/,/, ($g->prop('Members') || '')); + } + my %exclude = map { $_, 1 } @exclude_users; + @exclude_users = keys %exclude; + my @members = (); + foreach my $user (@group_members){ + next if grep { $_ eq $user } @exclude_users; + push @members, $user; + } + my $members = join(',', @members); esmith::util::processTemplate( {