parent
978c50dd20
commit
9a5f380b36
21 changed files with 656 additions and 0 deletions
@ -0,0 +1 @@ |
||||
disabled |
@ -0,0 +1 @@ |
||||
service |
@ -0,0 +1,71 @@ |
||||
#!/usr/bin/perl -w |
||||
|
||||
#---------------------------------------------------------------------- |
||||
# copyright (C) 2000-2001 e-smith, inc. |
||||
# |
||||
# 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 |
||||
# |
||||
# Technical support for this program is available from e-smith, inc. |
||||
# For details, please visit our web site at www.e-smith.com or |
||||
# call us on 1 888 ESMITH 1 (US/Canada toll free) or +1 613 564 8000 |
||||
#---------------------------------------------------------------------- |
||||
|
||||
package esmith; |
||||
|
||||
use strict; |
||||
use Errno; |
||||
use esmith::config; |
||||
use esmith::util; |
||||
use esmith::db; |
||||
|
||||
my %conf; |
||||
tie %conf, 'esmith::config'; |
||||
|
||||
my %accounts; |
||||
tie %accounts, 'esmith::config', '/home/e-smith/db/accounts'; |
||||
|
||||
my $listName = $ARGV [1]; |
||||
my $domain = $ARGV [2]; |
||||
|
||||
die "Listname argument missing." unless defined ($listName); |
||||
$domain = db_get(\%conf, "DomainName") unless defined ($domain); |
||||
|
||||
my $listStatus = db_get_type(\%accounts, $listName); |
||||
die "$listName already exists and is not a mailman mailing list.\n" if ($listStatus && $listStatus ne "mailmanlist"); |
||||
db_set(\%accounts, $listName, "mailmanlist", { Domain => "$domain" }); |
||||
|
||||
my $cookedListName = $listName; |
||||
$cookedListName =~ s/\./:/g; |
||||
my $alias = "/usr/lib/mailman/aliases/.qmail-$listName"; |
||||
|
||||
my %queues = ("", "post", |
||||
"-admin", "admin", |
||||
"-bounces", "bounces", |
||||
"-confirm", "confirm", |
||||
"-join", "join", |
||||
"-leave", "leave", |
||||
"-owner", "owner", |
||||
"-request", "request", |
||||
"-subscribe", "subscribe", |
||||
"-unsubscribe", "unsubscribe"); |
||||
|
||||
umask(002); |
||||
while(my ($tail,$que) = each(%queues)) |
||||
{ |
||||
open(ALIAS, "> $alias$tail") or die "Cannot open $alias. $!\n"; |
||||
print ALIAS "| /var/qmail/bin/preline /usr/lib/mailman/mail/mailman $que $listName\n"; |
||||
close ALIAS or die "Cannot close $alias. $!\n"; |
||||
chown(41,41,"$alias$tail"); |
||||
} |
@ -0,0 +1,56 @@ |
||||
#!/usr/bin/perl |
||||
|
||||
#---------------------------------------------------------------------- |
||||
# $Id: tug-restart,v 1.23 2003/06/25 14:04:54 msoulier Exp $ |
||||
#---------------------------------------------------------------------- |
||||
# copyright (C) 1999-2003 Mitel Networks Corporation |
||||
#---------------------------------------------------------------------- |
||||
|
||||
package esmith; |
||||
|
||||
use strict; |
||||
use warnings; |
||||
use esmith::ConfigDB; |
||||
use esmith::util; |
||||
|
||||
use constant TRUE => 1; |
||||
use constant FALSE => 0; |
||||
|
||||
my $action; |
||||
|
||||
my $db = esmith::ConfigDB->open_ro |
||||
or die "Failed to open configuration database.\n"; |
||||
|
||||
my $status = $db->get_prop('mailman', 'status') || 'disabled'; |
||||
|
||||
if ($status eq 'enabled') |
||||
{ |
||||
$action = 'start'; |
||||
$action = 'restart' if is_running(); |
||||
} |
||||
else |
||||
{ |
||||
$action = ''; |
||||
$action = 'stop' if is_running(); |
||||
} |
||||
|
||||
if ($action && $action ne '') |
||||
{ |
||||
esmith::util::serviceControl( |
||||
NAME => 'mailman', |
||||
ACTION => $action, |
||||
BACKGROUND => 'true' |
||||
) or die "Failed to $action mailman\n"; |
||||
} |
||||
|
||||
exit 0; |
||||
|
||||
sub is_running |
||||
{ |
||||
chomp( my $output = `/usr/bin/sv s /service/mailman` ); |
||||
if ($output =~ /run:\s\/service\/mailman(\/)?:\s\(pid\s\d+\)/) |
||||
{ |
||||
return TRUE; |
||||
} |
||||
return FALSE; |
||||
} |
@ -0,0 +1,56 @@ |
||||
#!/usr/bin/perl |
||||
|
||||
#---------------------------------------------------------------------- |
||||
# $Id: tug-restart,v 1.23 2003/06/25 14:04:54 msoulier Exp $ |
||||
#---------------------------------------------------------------------- |
||||
# copyright (C) 1999-2003 Mitel Networks Corporation |
||||
#---------------------------------------------------------------------- |
||||
|
||||
package esmith; |
||||
|
||||
use strict; |
||||
use warnings; |
||||
use esmith::ConfigDB; |
||||
use esmith::util; |
||||
|
||||
use constant TRUE => 1; |
||||
use constant FALSE => 0; |
||||
|
||||
my $action; |
||||
|
||||
my $db = esmith::ConfigDB->open_ro |
||||
or die "Failed to open configuration database.\n"; |
||||
|
||||
my $status = $db->get_prop('mailman', 'status') || 'disabled'; |
||||
|
||||
if ($status eq 'enabled') |
||||
{ |
||||
$action = 'start'; |
||||
$action = 'restart' if is_running(); |
||||
} |
||||
else |
||||
{ |
||||
$action = ''; |
||||
$action = 'stop' if is_running(); |
||||
} |
||||
|
||||
if ($action && $action ne '') |
||||
{ |
||||
esmith::util::serviceControl( |
||||
NAME => 'mailman', |
||||
ACTION => $action, |
||||
BACKGROUND => 'true' |
||||
) or die "Failed to $action mailman\n"; |
||||
} |
||||
|
||||
exit 0; |
||||
|
||||
sub is_running |
||||
{ |
||||
chomp( my $output = `/usr/bin/sv s /service/mailman` ); |
||||
if ($output =~ /run:\s\/service\/mailman(\/)?:\s\(pid\s\d+\)/) |
||||
{ |
||||
return TRUE; |
||||
} |
||||
return FALSE; |
||||
} |
@ -0,0 +1,62 @@ |
||||
#!/usr/bin/perl -w |
||||
|
||||
#---------------------------------------------------------------------- |
||||
# copyright (C) 2000-2001 e-smith, inc. |
||||
# |
||||
# 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 |
||||
# |
||||
# Technical support for this program is available from e-smith, inc. |
||||
# For details, please visit our web site at www.e-smith.com or |
||||
# call us on 1 888 ESMITH 1 (US/Canada toll free) or +1 613 564 8000 |
||||
#---------------------------------------------------------------------- |
||||
|
||||
package esmith; |
||||
|
||||
use strict; |
||||
use Errno; |
||||
use esmith::config; |
||||
use esmith::util; |
||||
use esmith::db; |
||||
|
||||
my %conf; |
||||
tie %conf, 'esmith::config'; |
||||
|
||||
my %accounts; |
||||
tie %accounts, 'esmith::config', '/home/e-smith/db/accounts'; |
||||
|
||||
my $listName = $ARGV [1]; |
||||
|
||||
die "Listname argument missing." unless defined ($listName); |
||||
|
||||
my $listStatus = db_get_type(\%accounts, $listName); |
||||
db_delete(\%accounts, $listName) if ($listStatus && $listStatus eq "mailmanlist"); |
||||
|
||||
my $alias = "/usr/lib/mailman/aliases/.qmail-$listName"; |
||||
|
||||
my %queues = ("", "post", |
||||
"-admin", "admin", |
||||
"-bounces", "bounces", |
||||
"-confirm", "confirm", |
||||
"-join", "join", |
||||
"-leave", "leave", |
||||
"-owner", "owner", |
||||
"-request", "request", |
||||
"-subscribe", "subscribe", |
||||
"-unsubscribe", "unsubscribe"); |
||||
|
||||
while(my ($tail,$que) = each(%queues)) |
||||
{ |
||||
unlink("$alias$tail"); |
||||
} |
@ -0,0 +1,46 @@ |
||||
# -*- python -*- |
||||
|
||||
# Copyright (C) 1998 by the Free Software Foundation, Inc. |
||||
# |
||||
# 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. |
||||
|
||||
|
||||
"""This is the module which takes your site-specific settings. |
||||
|
||||
From a raw distribution it should be copied to mm_cfg.py. If you |
||||
already have an mm_cfg.py, be careful to add in only the new settings |
||||
you want. The complete set of distributed defaults, with annotation, |
||||
are in ./Defaults. In mm_cfg, override only those you want to |
||||
change, after the |
||||
|
||||
from Defaults import * |
||||
|
||||
line (see below). |
||||
|
||||
Note that these are just default settings - many can be overridden via the |
||||
admin and user interfaces on a per-list or per-user basis. |
||||
|
||||
Note also that some of the settings are resolved against the active list |
||||
setting by using the value as a format string against the |
||||
list-instance-object's dictionary - see the distributed value of |
||||
DEFAULT_MSG_FOOTER for an example.""" |
||||
|
||||
|
||||
####################################################### |
||||
# Here's where we get the distributed defaults. # |
||||
|
||||
from Defaults import * |
||||
import pwd, grp |
||||
|
@ -0,0 +1,22 @@ |
||||
############################################################## |
||||
# Here's where we override shipped defaults with settings # |
||||
# suitable for the RPM package. # |
||||
ADMINDB_PAGE_TEXT_LIMIT = 8192 |
||||
DEFAULT_ADMIN_MEMBER_CHUNKSIZE = 50 |
||||
DEFAULT_BOUNCE_MATCHING_HEADERS = """ |
||||
""" |
||||
DEFAULT_DIGEST_SIZE_THRESHHOLD = 250 |
||||
DEFAULT_MAX_MESSAGE_SIZE = 100 |
||||
DEFAULT_MAX_NUM_RECIPIENTS = 25 |
||||
DEFAULT_MSG_FOOTER = """_______________________________________________ |
||||
%(description)s |
||||
%(list_name)s@%(host_name)s |
||||
%(web_page_url)slistinfo%(cgiext)s/%(list_name)s |
||||
""" |
||||
LOG_DIR = '/var/log/mailman' |
||||
MAILMAN_UID = pwd.getpwnam('mailman')[2] |
||||
MAILMAN_GID = grp.getgrnam('mailman')[2] |
||||
PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/mailman/public/%(listname)s' |
||||
QUEUE_DIR = '/var/spool/mailman/qfiles' |
||||
USE_ENVELOPE_SENDER = 1 |
||||
|
@ -0,0 +1,7 @@ |
||||
############################################################## |
||||
# Put YOUR site-specific configuration below, in mm_cfg.py . # |
||||
# See Defaults.py for explanations of the values. # |
||||
|
||||
DEFAULT_EMAIL_HOST = '{ $DomainName }' |
||||
DEFAULT_URL_HOST = '{ $DomainName }' |
||||
|
@ -0,0 +1,17 @@ |
||||
{ |
||||
$OUT = ""; |
||||
if( -x "/usr/lib/mailman/mhonarc/filter") |
||||
{ |
||||
$OUT .= "PUBLIC_EXTERNAL_ARCHIVER = '/usr/lib/mailman/mhonarc/filter %(listname)s'\n"; |
||||
$OUT .= "PRIVATE_EXTERNAL_ARCHIVER = '/usr/lib/mailman/mhonarc/filter %(listname)s'\n"; |
||||
$OUT .= "PUBLIC_EXTERNAL_ARCHIVER = '/usr/lib/mailman/mhonarc/filter %(listname)s'\n"; |
||||
$OUT .= "PRIVATE_EXTERNAL_ARCHIVER = '/usr/lib/mailman/mhonarc/filter %(listname)s'\n"; |
||||
} |
||||
else |
||||
{ |
||||
$OUT .= "PUBLIC_EXTERNAL_ARCHIVER = 0\n"; |
||||
$OUT .= "PRIVATE_EXTERNAL_ARCHIVER = 0\n"; |
||||
$OUT .= "PUBLIC_EXTERNAL_ARCHIVER = 0\n"; |
||||
$OUT .= "PRIVATE_EXTERNAL_ARCHIVER = 0\n"; |
||||
} |
||||
} |
@ -0,0 +1,6 @@ |
||||
############################################################## |
||||
# Set MTA to special SME.py module for creation/deletion # |
||||
# of lists. # |
||||
|
||||
MTA = 'SME' |
||||
|
@ -0,0 +1,16 @@ |
||||
{ |
||||
# vim: ft=perl: |
||||
use esmith::DomainsDB; |
||||
|
||||
my $domains = esmith::DomainsDB->open_ro; |
||||
$OUT = ''; |
||||
|
||||
foreach my $domainrec ($domains->domains) |
||||
{ |
||||
next if $domainrec->prop('SystemServiceDomain'); |
||||
$OUT .= "add_virtualhost('$domainrec->{key}', '$domainrec->{key}')\n"; |
||||
} |
||||
# Also add the FQDN of the box itself, in case the list is being addressed |
||||
# in that fashion. |
||||
$OUT .= "add_virtualhost('$SystemName.$DomainName', '$SystemName.$DomainName')\n"; |
||||
} |
@ -0,0 +1,21 @@ |
||||
############################################################## |
||||
# The following are set to clean up variables that were set # |
||||
# above. Do not change or remove these unless you know what # |
||||
# you are doing. # |
||||
|
||||
DEFAULT_DIGEST_FOOTER = DEFAULT_MSG_FOOTER |
||||
DEFAULT_HOST_NAME = DEFAULT_EMAIL_HOST |
||||
DEFAULT_URL = DEFAULT_URL_PATTERN % DEFAULT_URL_HOST |
||||
INQUEUE_DIR = os.path.join(QUEUE_DIR, 'in') |
||||
OUTQUEUE_DIR = os.path.join(QUEUE_DIR, 'out') |
||||
CMDQUEUE_DIR = os.path.join(QUEUE_DIR, 'commands') |
||||
BOUNCEQUEUE_DIR = os.path.join(QUEUE_DIR, 'bounces') |
||||
NEWSQUEUE_DIR = os.path.join(QUEUE_DIR, 'news') |
||||
ARCHQUEUE_DIR = os.path.join(QUEUE_DIR, 'archive') |
||||
SHUNTQUEUE_DIR = os.path.join(QUEUE_DIR, 'shunt') |
||||
VIRGINQUEUE_DIR = os.path.join(QUEUE_DIR, 'virgin') |
||||
BADQUEUE_DIR = os.path.join(QUEUE_DIR, 'bad') |
||||
MAILDIR_DIR = os.path.join(QUEUE_DIR, 'maildir') |
||||
|
||||
# Note - if you're looking for something that is imported from mm_cfg, but you |
||||
# didn't find it above, it's probably in Defaults.py. |
@ -0,0 +1,56 @@ |
||||
{ |
||||
use esmith::config; |
||||
use esmith::db; |
||||
|
||||
$OUT = ''; |
||||
|
||||
# Generate mailman user assignments for mailing lists. These will be handled |
||||
# by ~mailman/aliases/.qmail-listname and ~mailman/aliases/.qmail-listname-ext. |
||||
|
||||
my %accounts; |
||||
tie %accounts, 'esmith::config', "/home/e-smith/db/accounts"; |
||||
|
||||
my (undef, undef, $uid, $gid, undef, undef, undef, $dir, undef) |
||||
= getpwnam("mailman"); |
||||
|
||||
# It is almost impossible to get Text::Template to output nothing |
||||
# on failure. It can be done by removing the newline at the end of |
||||
# this file but that is messy. Therefore, we'll simply return an |
||||
# error message that will make qmail-newu fail. Also send a |
||||
# warning message that will be captured in the logs. |
||||
|
||||
unless (defined $uid && defined $gid && defined $dir) |
||||
{ |
||||
my $msg = |
||||
"Failed to obtain user details for \'mailman\' " |
||||
. "while processing group assignments."; |
||||
|
||||
warn "$msg\n"; |
||||
$OUT = $msg; |
||||
return; |
||||
} |
||||
|
||||
my $mailman_assign = "mailman:${uid}:${gid}:${dir}/aliases"; |
||||
|
||||
foreach my $listname (db_get(\%accounts)) |
||||
{ |
||||
next unless db_get_type(\%accounts, $listname) eq "mailmanlist"; |
||||
|
||||
# Assign mail for listname@ |
||||
$OUT .= "=${listname}:${mailman_assign}:-:${listname}:\n"; |
||||
|
||||
# Assign mail for listname-ext@ |
||||
$OUT .= "+${listname}-:${mailman_assign}:-${listname}-::\n"; |
||||
} |
||||
|
||||
# Need to remove the final newline character. Blank lines in |
||||
# /var/qmail/users/assign are prohibited. |
||||
|
||||
chomp($OUT); |
||||
|
||||
# Failsafe: /var/qmail/users/assign cannot have blank lines. |
||||
# Therefore, if $OUT is empty, simply set up an assign for the |
||||
# ezmlm user. |
||||
|
||||
$OUT = "=mailman:${mailman_assign}:::" unless $OUT; |
||||
} |
@ -0,0 +1,3 @@ |
||||
{ |
||||
$OUT .= "mailman\@$_\n" for (@domains); |
||||
} |
@ -0,0 +1,68 @@ |
||||
#!/bin/sh |
||||
#---------------------------------------------------------------------- |
||||
# Copyright (C) 2006 Gordon Rowell <gordonr@gormand.com.au> |
||||
# |
||||
# 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 or 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 |
||||
#---------------------------------------------------------------------- |
||||
|
||||
# Quick conversion of ~alias file to mailman |
||||
|
||||
LIST=$1 |
||||
OWNER=$2 |
||||
|
||||
TYPE=$(db accounts gettype $LIST) |
||||
|
||||
if [ -n "$TYPE" ] |
||||
then |
||||
echo "$LIST is an existing account of type $TYPE" |
||||
exit 1 |
||||
fi |
||||
|
||||
ALIAS_FILE=/var/qmail/alias/.qmail-$LIST |
||||
|
||||
if [ ! -f $ALIAS_FILE ] |
||||
then |
||||
echo "$ALIAS_FILE doesn't exist" |
||||
exit 2 |
||||
fi |
||||
|
||||
OWNER=$(config getprop mailman DefaultOwner) |
||||
OWNER=${OWNER:-"admin@$DOMAIN"} |
||||
|
||||
/usr/lib/mailman/bin/newlist -q $LIST $OWNER dummypass > /dev/null 2>&1 || : |
||||
|
||||
cat > /tmp/hide << EOF |
||||
advertised = 1 |
||||
archive_private = 1 |
||||
send_reminders = 0 |
||||
send_welcome_msg = 0 |
||||
send_goodbye_msg = 0 |
||||
description = 'Mailing list $LIST' |
||||
EOF |
||||
|
||||
/usr/lib/mailman/bin/config_list -i /tmp/hide $LIST > /dev/null 2>&1 || : |
||||
rm -f /tmp/hide |
||||
|
||||
/usr/lib/mailman/bin/change_pw -l $LIST 2> /dev/null || |
||||
echo "New mailman password: *UNCHANGED*"; : |
||||
|
||||
grep -v '^#' $ALIAS_FILE | |
||||
sed -e 's/&//' | |
||||
/usr/lib/mailman/bin/add_members -r - -a n $LIST |
||||
|
||||
expand-template /var/qmail/users/assign |
||||
/var/qmail/bin/qmail-newu |
||||
|
||||
mv $ALIAS_FILE $ALIAS_FILE.mailman |
@ -0,0 +1,55 @@ |
||||
# Copyright (C) 2001,2002 by the Free Software Foundation, Inc. |
||||
# |
||||
# 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. |
||||
|
||||
"""Creation/deletion hooks for the SME and Q-Mail |
||||
""" |
||||
|
||||
import os |
||||
import time |
||||
import errno |
||||
import pwd |
||||
from stat import * |
||||
|
||||
from Mailman import mm_cfg |
||||
from Mailman import Utils |
||||
from Mailman import LockFile |
||||
from Mailman.i18n import _ |
||||
from Mailman.MTA.Utils import makealiases |
||||
from Mailman.Logging.Syslog import syslog |
||||
|
||||
|
||||
|
||||
def create(mlist, cgi=0, nolock=0): |
||||
listname = mlist.internal_name() |
||||
msg = 'command failed: %s (status: %s, %s)' |
||||
acmd = '/usr/lib/mailman/bin/smelist addlist ' + listname |
||||
status = (os.system(acmd) >> 8) & 0xff |
||||
if status: |
||||
errstr = os.strerror(status) |
||||
syslog('error', msg, acmd, status, errstr) |
||||
raise RuntimeError, msg % (acmd, status, errstr) |
||||
|
||||
|
||||
|
||||
def remove(mlist, cgi=0): |
||||
listname = mlist.internal_name() |
||||
msg = 'command failed: %s (status: %s, %s)' |
||||
acmd = '/usr/lib/mailman/bin/smelist rmlist ' + listname |
||||
status = (os.system(acmd) >> 8) & 0xff |
||||
if status: |
||||
errstr = os.strerror(status) |
||||
syslog('error', msg, acmd, status, errstr) |
||||
raise RuntimeError, msg % (acmd, status, errstr) |
@ -0,0 +1,33 @@ |
||||
#!/bin/bash |
||||
|
||||
[ -d /var/lib/mailman/lists/mailman ] && exit 0 |
||||
|
||||
echo " " |
||||
DOMAIN=`/sbin/e-smith/config get DomainName` |
||||
if [ ! -d /var/lib/mailman/lists/mailman ]; then |
||||
MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" |
||||
LENGTH="8" |
||||
while [ "${n:=1}" -le "$LENGTH" ]; do |
||||
PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}" |
||||
let n+=1 |
||||
done |
||||
echo "* New site password: $PASS" |
||||
/sbin/e-smith/config setprop mailman SitePass $PASS |
||||
|
||||
/usr/lib/mailman/bin/mmsitepass "$PASS" > /dev/null 2>&1 || : |
||||
/usr/lib/mailman/bin/newlist -q mailman admin@${DOMAIN} dummypass > /dev/null 2>&1 || : |
||||
cat > /tmp/hide << EOF |
||||
advertised = 0 |
||||
archive_private = 1 |
||||
description = 'Mailman Mailing List' |
||||
EOF |
||||
/usr/lib/mailman/bin/config_list -i /tmp/hide mailman > /dev/null 2>&1 || : |
||||
rm -f /tmp/hide |
||||
echo -n "* " |
||||
/usr/lib/mailman/bin/change_pw -l mailman 2> /dev/null || echo "New mailman password: *UNCHANGED*"; : |
||||
"/usr/lib/mailman/bin/add_members -r - -a n mailman << EOF |
||||
admin@${DOMAIN} |
||||
EOF" > /dev/null 2>&1 || : |
||||
else |
||||
/etc/e-smith/events/actions/email-assign || : |
||||
fi |
@ -0,0 +1,31 @@ |
||||
#!/usr/bin/perl -wT |
||||
|
||||
package esmith; |
||||
use strict; |
||||
use esmith::util; |
||||
|
||||
my $usage = "$0 is not meant to be called from the command line. |
||||
"; |
||||
|
||||
my ($event, $list) = @ARGV; |
||||
die $usage unless $event; |
||||
die $usage unless $list; |
||||
|
||||
BEGIN |
||||
{ |
||||
$ENV {'PATH'} = ''; |
||||
$ENV {'SHELL'} = '/bin/bash'; |
||||
delete $ENV {'ENV'}; |
||||
} |
||||
|
||||
die "Unknown event $event" |
||||
unless ($event =~ /^(addlist|rmlist|update)$/); |
||||
$event = $1; |
||||
|
||||
die "Invalid list name $list" |
||||
unless ($list =~ /^([\w\-\._]+)$/); |
||||
$list = $1; |
||||
|
||||
esmith::util::setRealToEffective (); |
||||
system ("/sbin/e-smith/signal-event", "mailman-$event", "$list") == 0 |
||||
or die ("Error occurred while modifying mailman list $list.\n"); |
Loading…
Reference in new issue