>Hi,
>
>I was wondering whether anyone has managed to get XMail and Mailman to work
>together, and if so, how did you configure the mailman list-control aliases
>in XMail?  I've tried setting up piped commands in aliases.tab and also
>under cmdaliases, but I haven't found a way to make it work, and this is one
>of those rare instances when Google doesn't seem to be of much assistance.
>
>If nobody has managed to do it yet, I'll give it up and try something else.
>That would be a shame, because so far I'm very impressed with both packages.
>I just wish I could get them to talk to each other!

I have gotten it to work.  There are a few steps involved in making this work.

First, you should create a cmdalias in the domain for each of the 
mailboxes that mailman expects. An example with domain = 
lists.domain.com and list name=list, you'd create the following 
cmdalias files in /var/MailRoot/cmdaliases:

list-admin.tab    list-confirm.tab  list-leave.tab  list-request.tab 
list.tab
list-bounces.tab  list-join.tab     list-owner.tab 
list-subscribe.tab  list-unsubscribe.tab

Each file has the following line in it:

"external"[tab]"0"[tab]"0"[tab]"/var/MailRoot/bin/mailman.sh"[tab]"@@RCPT"[tab]"@@TMPFILE"

Then you put the following file, mailman.sh, in your 
/var/MailRoot/bin folder. You'll also need the econv package 
available on the xmailserver.org web page, under the tools section:

##### START mailman.sh #######
#! /bin/bash
#
# This script takes an incoming list for a mailing list and parses 
the email address
# to determine the correct list for sending to Mailman's wrapper program

MAIL_ROOT=/var/MailRoot

# Arguments
list_email=$1
messagefile=$2

# First, isolate the list address (i.e. list-owner, list-subscribe, etc.)
list_address=`echo "$list_email" | sed 's/@.*//g'`

# Next, isolate the list name
list_name=`echo "$list_address" | sed 's/-.*//g'`

# Isolate the list user (i.e. owner, admin, subscribe, etc.)
list_user=`echo "$list_address" | sed 's/.*-//g'`

# If the list user is the same as the list name, this means this is 
the address for the list
# itself, so the list user should be set to post
if [ $list_name == $list_user ] ; then
         list_user=post
fi

# Convert the Xmail mail file into an email file
tmpfile=/home/xmail/$RANDOM.conv
econv --unix --input $messagefile --output $tmpfile

# Pipe the email file to the Mailman wrapper for the correct list and user
cat $tmpfile | /usr/local/mailman/mail/mailman $list_user 
$list_name >& /home/xmail/error.log
rm $tmpfile

logfile=$MAIL_ROOT/logs/mailinglists.log
logentry=`date`
logentry="$logentry : $list_email"
echo $logentry >> $logfile

###### END mailman.sh #######

Granted, this file is not the most efficient way to do this. Also, 
there is a major flaw with the script, as it currently does not allow 
list names with a dash in them (this is actually a very common 
practice). If someone has something better to offer, please do (and 
post it to the list)!

I've also create a semi-automated script that creates a list in 
mailman and also creates each of the necessary cmdalias files. 
Contact me off list to get this code, as it's more involved.

Good luck!

Toby

-- 
Toby Reiter                          mailto:[EMAIL PROTECTED]
Breezing Internet Communications     http://www.breezing.com
1106 West Main St                    phone:434.295.2050
Charlottesville, VA 22903            fax:603.843.6931
-
To unsubscribe from this list: send the line "unsubscribe xmail" in
the body of a message to [EMAIL PROTECTED]
For general help: send the line "help" in the body of a message to
[EMAIL PROTECTED]

Reply via email to