Skip to content

Instantly share code, notes, and snippets.

@stephdl
Created September 15, 2018 10:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stephdl/62aa89f3166bf0fdf6b49b27ca206a42 to your computer and use it in GitHub Desktop.
Save stephdl/62aa89f3166bf0fdf6b49b27ca206a42 to your computer and use it in GitHub Desktop.
nethserver-mail-server-group-alias
#!/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