smeserver-mailalias/root/etc/e-smith/events/actions/qmail-update-mailalias

98 lines
2.7 KiB
Plaintext
Raw Permalink Normal View History

#!/usr/bin/perl -w
#----------------------------------------------------------------------
# copyright (C) 2002-2006 Mitel Networks Corporation
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#----------------------------------------------------------------------
package esmith;
use strict;
use Errno;
use esmith::ConfigDB;
use esmith::AccountsDB;
use esmith::util;
use esmith::DB
my $c = esmith::ConfigDB->open_ro || die "Couldn't open config db\n";
my $a = esmith::AccountsDB->open_ro || die "Couldn't open accounts db\n";
my $event = $ARGV [0] || die "Event name arg missing\n";;
my @mailaliases;
if ($ARGV[1])
{
my $mailalias = $ARGV [1];
my $g = $a->get($mailalias) ||
die "Mailalias $mailalias not found in accounts db\n";
my $type = $g->prop('type');
if ($type =~ /^mailalias/)
{
@mailaliases = ($g);
}
else
{
die "Expected a mailalias. Got: $type\n";
}
}
# Regenerate all the groups if the previous block failed in some way.
unless (@mailaliases)
{
#@mailaliases = $a->mailalias; # a faire ?
@mailaliases = $a->get_all_by_prop('type'=>'mailalias'); # a faire ?
}
foreach my $mailalias (@mailaliases)
{
my $mailaliasName = $mailalias->key;
unless ($mailalias->prop('type') eq 'mailalias')
{
warn "Account $mailaliasName is not a mailalias account.\n";
next;
}
my %properties = $mailalias->props;
$mailaliasName =~ s/\./:/g;
#my $group = "/var/qmail/alias/.qmail-$groupName";
my $members = $properties{email};
esmith::util::processTemplate(
{
CONFREF =>
{
Members => $members,
},
TEMPLATE_PATH =>
"/var/qmail/alias/.qmail-mailalias",
OUTPUT_FILENAME => "/var/qmail/alias/.qmail-$mailaliasName",
}
);
unless (-f "/var/qmail/alias/.qmail-$mailaliasName-default")
{
symlink "/var/qmail/alias/.qmail-$mailaliasName",
"/var/qmail/alias/.qmail-$mailaliasName-default";
}
}
exit (0);