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