Created
September 15, 2018 10:37
-
-
Save stephdl/62aa89f3166bf0fdf6b49b27ca206a42 to your computer and use it in GitHub Desktop.
nethserver-mail-server-group-alias
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl -w | |
use strict; | |
use esmith::event; | |
use Errno; | |
use esmith::ConfigDB; | |
my $event = shift; | |
my $groupName = shift; | |
if(! defined ($groupName)) { | |
die "Group name argument missing\n"; | |
} | |
my $dba = esmith::ConfigDB->open('accounts') || die("Can't open AccountDB"); | |
my $dbc = esmith::ConfigDB->open('configuration') || die("Can't open ConfigDB"); | |
my $domain = $dbc->get_value('DomainName'); | |
my $members = join(',', map { $_ . '@' . $domain } @ARGV); | |
if(! defined ($members)) { | |
die "Members argument missing\n"; | |
} | |
if ($event eq 'group-create') { | |
## pseudonym creation | |
$groupName = $groupName . '@' . $domain; | |
if($members) { | |
$dba->set_prop($groupName,'Account', $members, type => 'pseudonym'); | |
$dba->set_prop($groupName,'Description', 'Group Alias for postfix'); | |
if( ! esmith::event::event_signal('pseudonym-create', $groupName)) { | |
die "cannot create pseudonym $groupName: $?"; | |
} | |
} | |
## mail box creation | |
$groupName =~ s/@.*//; | |
my @parameters = ("$groupName","$groupName","group=$groupName\@$domain", "OWNER"); | |
if( ! esmith::event::event_signal('sharedmailbox-create', @parameters)) { | |
die "cannot create mailbox $groupName: $?"; | |
} | |
} | |
if ($event eq 'group-modify') { | |
## pseudonym modification | |
if($members) { | |
$dba->set_prop($groupName,'Account', $members, type => 'pseudonym'); | |
$dba->set_prop($groupName,'Description', 'Group Alias for postfix'); | |
if( ! esmith::event::event_signal('pseudonym-create', $groupName)) { | |
die "cannot create pseudonym $groupName: $?"; | |
} | |
} | |
## mail box modification | |
$groupName =~ s/@.*//; | |
my @parameters = ("$groupName","$groupName","group=$groupName\@$domain", "OWNER"); | |
if( ! esmith::event::event_signal('sharedmailbox-modify', @parameters)) { | |
die "cannot create mailbox $groupName: $?"; | |
} | |
} | |
if ($event eq 'group-delete') { | |
## pseudonym deletion | |
my $pseudonym = $dba->get($groupName); | |
$pseudonym->delete; | |
if( ! esmith::event::event_signal('pseudonym-delete', $groupName)) { | |
die "cannot delete pseudonym $groupName: $?"; | |
} | |
## mail box deletion | |
$groupName =~ s/@.*//; | |
if( ! esmith::event::event_signal('sharedmailbox-delete', $groupName)) { | |
die "cannot delete mailbox $groupName: $?"; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment