initial commit of file from CVS for e-smith-qmail on Wed 12 Jul 09:06:46 BST 2023
This commit is contained in:
22
root/etc/e-smith/events/actions/pseudonym-cleanup
Normal file
22
root/etc/e-smith/events/actions/pseudonym-cleanup
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
use esmith::AccountsDB;
|
||||
use esmith::event;
|
||||
|
||||
my $accounts = esmith::AccountsDB->open() or
|
||||
die "Unable to open accounts db: $!";
|
||||
|
||||
my ($self, $account) = @ARGV;
|
||||
|
||||
# Find all "pseudonyms" entries in the e-smith accounts database and
|
||||
# if the pseudonyms has an unexisting Account associated we change
|
||||
# it to user "admin".
|
||||
|
||||
foreach my $pseudo ( $accounts->pseudonyms ) {
|
||||
unless ( $accounts->get($pseudo->prop('Account')) ) {
|
||||
$pseudo->set_prop( 'Account', 'admin' );
|
||||
print "orphaned pseudonym " . $pseudo->key. " has been associated to admin account"
|
||||
}
|
||||
}
|
||||
|
36
root/etc/e-smith/events/actions/qmail-delete-group
Normal file
36
root/etc/e-smith/events/actions/qmail-delete-group
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# copyright (C) 1999-2005 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;
|
||||
|
||||
my $event = $ARGV [0];
|
||||
my $groupName = $ARGV [1];
|
||||
|
||||
die "Groupname argument missing." unless defined ($groupName);
|
||||
|
||||
$groupName =~ s/\./:/g;
|
||||
unlink "/var/qmail/alias/.qmail-$groupName";
|
||||
unlink "/var/qmail/alias/.qmail-$groupName-default";
|
||||
|
||||
exit (0);
|
26
root/etc/e-smith/events/actions/qmail-ipup
Normal file
26
root/etc/e-smith/events/actions/qmail-ipup
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# copyright (C) 2001-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
|
||||
#
|
||||
#----------------------------------------------------------------------
|
||||
#------------------------------------------------------------
|
||||
# Reset qmail TCP timeouts, and tell qmail-send to retry sending
|
||||
#------------------------------------------------------------
|
||||
|
||||
/var/qmail/bin/qmail-tcpok
|
||||
exec sv alarm /service/qmail
|
112
root/etc/e-smith/events/actions/qmail-update-group
Normal file
112
root/etc/e-smith/events/actions/qmail-update-group
Normal file
@@ -0,0 +1,112 @@
|
||||
#!/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;
|
||||
|
||||
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 @groups;
|
||||
|
||||
if (scalar @ARGV)
|
||||
{
|
||||
@groups = map { $a->get($_); } @ARGV;
|
||||
foreach my $g (@groups)
|
||||
{
|
||||
my $type = $g->prop('type');
|
||||
if ($type =~ /^user/)
|
||||
{
|
||||
# That's fine. We were probably just called from the user-delete
|
||||
# event, in which case we want to update all of the groups. So, leave
|
||||
# the groups array empty.
|
||||
@groups = ();
|
||||
last;
|
||||
}
|
||||
elsif ($type !~ /^group/){
|
||||
die "Expected a user or a group. Got neither: $type\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Regenerate all the groups if the previous block failed in some way.
|
||||
unless (@groups)
|
||||
{
|
||||
@groups = $a->groups;
|
||||
}
|
||||
|
||||
foreach my $group (@groups)
|
||||
{
|
||||
my $groupName = $group->key;
|
||||
unless ($group->prop('type') eq 'group')
|
||||
{
|
||||
warn "Account $groupName is not a group account.\n";
|
||||
next;
|
||||
}
|
||||
my %properties = $group->props;
|
||||
$groupName =~ s/\./:/g;
|
||||
my $group = "/var/qmail/alias/.qmail-$groupName";
|
||||
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(
|
||||
{
|
||||
CONFREF =>
|
||||
{
|
||||
Members => $members,
|
||||
},
|
||||
|
||||
TEMPLATE_PATH =>
|
||||
"/var/qmail/alias/.qmail-group",
|
||||
|
||||
OUTPUT_FILENAME => "/var/qmail/alias/.qmail-$groupName",
|
||||
}
|
||||
);
|
||||
|
||||
unless (-f "/var/qmail/alias/.qmail-$groupName-default")
|
||||
{
|
||||
symlink "/var/qmail/alias/.qmail-$groupName",
|
||||
"/var/qmail/alias/.qmail-$groupName-default";
|
||||
}
|
||||
|
||||
}
|
||||
exit (0);
|
84
root/etc/e-smith/events/actions/qmail-update-user
Normal file
84
root/etc/e-smith/events/actions/qmail-update-user
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# copyright (C) 1999-2005 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::templates;
|
||||
use User::pwent;
|
||||
|
||||
|
||||
my $accountsdb = esmith::AccountsDB->open_ro or
|
||||
die "Could not open accounts db\n";
|
||||
|
||||
my $event = shift;
|
||||
my $userName = shift;
|
||||
my @users;
|
||||
|
||||
if (defined $userName)
|
||||
{
|
||||
my $user = $accountsdb->get($userName);
|
||||
die
|
||||
"Account $userName is not a user account; update email forwarding failed.\n"
|
||||
unless $userName eq 'admin' || ($user && $user->prop('type') eq "user");
|
||||
@users = ($user);
|
||||
}
|
||||
else
|
||||
{
|
||||
@users = ( $accountsdb->users, $accountsdb->get('admin') );
|
||||
}
|
||||
|
||||
foreach my $user (@users)
|
||||
{
|
||||
my $userName = $user->key;
|
||||
|
||||
setpwent();
|
||||
my $home = getpwnam($userName)->dir;
|
||||
for my $dotfile ( qw(.qmail .qmail-junkmail) )
|
||||
{
|
||||
esmith::templates::processTemplate (
|
||||
{
|
||||
MORE_DATA =>
|
||||
{
|
||||
USERNAME => $userName ,
|
||||
},
|
||||
TEMPLATE_PATH => "/$dotfile",
|
||||
TEMPLATE_EXPAND_QUEUE =>
|
||||
[
|
||||
"/etc/e-smith/templates-user-custom",
|
||||
"/etc/e-smith/templates-user",
|
||||
],
|
||||
OUTPUT_PREFIX => "$home",
|
||||
UID => $userName,
|
||||
GID => $userName,
|
||||
PERMS => 0644,
|
||||
} );
|
||||
};
|
||||
unless (-f "$home/.qmail-default")
|
||||
{
|
||||
symlink ".qmail", "$home/.qmail-default";
|
||||
}
|
||||
}
|
||||
|
||||
exit (0);
|
Reference in New Issue
Block a user