Sync complete

Cees De Groot cdegroot at gmail.com
Wed Sep 28 18:44:13 UTC 2005


root at lnx-12:/var/spool/vpopmail/domains/lists.squeakfoundation.org#
cat .qmail-default
|preline /usr/bin/python /home/mailman/bin/qmail-to-mailman.py

So we haven't used individual alias files, just one script - dunnow
whether it is standard mailman issue, so I reproduce it here:


#! /usr/bin/env python

# Configuration variables - Change these for your site if necessary.
MailmanHome = "/home/mailman"; # Mailman home directory.
MailmanOwner = "postmaster at localhost"; # Postmaster and abuse mail recepient.
# End of configuration variables.

# qmail-to-mailman.py
#
# Interface mailman to a qmail virtual domain. Does not require the creation
# of _any_ aliases to connect lists to your mail system.
#
# Bruce Perens, bruce at perens.com, March 1999.
# This is free software under the GNU General Public License.
#
# This script is meant to be called from ~mailman/.qmail-default . It catches
# all mail to a virtual domain, in my case "lists.hams.com". It looks at the
# recepient for each mail message and decides if the mail is addressed to a
# valid list or not, and bounces the message with a helpful suggestion if it's
# not addressed to a list. It decides if it is a posting, a list command, or
# mail to the list administrator, by checking for the -admin, -owner, and
# -request addresses. It will recognize a list as soon as the list is created,
# there is no need to add _any_ aliases for any list. It recognizes mail to
# postmaster, mailman-owner, abuse, mailer-daemon, root, and owner, and
# routes those mails to MailmanOwner as defined in the configuration
# variables, above.
#
# INSTALLATION:
#
# Install this file as ~mailman/qmail-to-mailman.py
#
# To configure a virtual domain to connect to mailman, create these files:
#
# ~mailman/.qmail-default
# |preline /usr/bin/python /home/mailman/mail-in.py
#
# /var/qmail/control/virtualdomains:
# DOMAIN.COM:mailman
#
# Note: "preline" is a QMail program which ensures a Unix "From " header is
# on the message.  Archiving will break without this.
#
# Replace DOMAIN.COM above with the name of the domain to be connected to
# Mailman. Note that _all_ mail to that domain will go to Mailman, so you
# don't want to put the name of your main domain here. In my case, I created
# lists.hams.com for Mailman, and I use hams.com as my regular domain.
#
# After you edit /var/qmail/control/virtualdomains, kill and restart qmail.
#

import sys, os, re, string

DBG = open("/tmp/debug.log", "w")

def main():
    DBG.write("click 1\n"); DBG.flush()
    os.nice(5)  # Handle mailing lists at non-interactive priority.

    DBG.write("click 1\n"); DBG.flush()
    os.chdir(MailmanHome + "/lists")

    DBG.write("click 1\n"); DBG.flush()
    try:
        local = os.environ["LOCAL"]
    except:
        # This might happen if we're not using qmail.
        sys.stderr.write("LOCAL not set in environment?\n")
        sys.exit(100)

    DBG.write("pre local: %s\n" % local); DBG.flush()
    local = string.lower(local)
    local = re.sub("^mailman-","",local)
    DBG.write("post local: %s\n" % local); DBG.flush()

    names = ("root", "postmaster", "mailer-daemon", "mailman-owner", "owner",
             "abuse", "mailman")
    for i in names:
        if i == local:
            os.execv("/var/qmail/bin/qmail-inject",
                     ("/var/qmail/bin/qmail-inject", MailmanOwner))
            sys.exit(0)

    type = "post"
    types = (("-admin$", "admin"),
             ("-bounces$", "bounces"),
             ("-confirm$", "confirm"),
             ("-join$", "join"),
             ("-leave$", "leave"),
             ("-owner$", "owner"),
             ("-request$", "request"),
             ("-subscribe$", "subscribe"),
             ("-unsubscribe$", "unsubscribe"))

    for i in types:
        if re.search(i[0],local):
            type = i[1]
            local = re.sub(i[0],"",local)

    DBG.write('type: %s\n' % type); DBG.flush()
    if os.path.exists(local):
        os.execv(MailmanHome + "/mail/mailman",
                 (MailmanHome + "/mail/mailman", type, local))
    else:
        bounce()
    DBG.write('oops\n'); DBG.flush()
    sys.exit(111)

def bounce():
    bounce_message = """\
TO ACCESS THE MAILING LIST SYSTEM: Start your web browser on
http://%s/
That web page will help you subscribe or unsubscribe, and will
give you directions on how to post to each mailing list.\n"""
    sys.stderr.write(bounce_message % (os.environ["HOST"]))
    sys.stderr.write("local = %s\n" % os.environ["LOCAL"])
    sys.exit(100)

try:
    sys.exit(main())
except SystemExit, argument:
    sys.exit(argument)

except Exception, argument:
    info = sys.exc_info()
    trace = info[2]
    sys.stderr.write("%s %s\n" % (sys.exc_type, argument))
    sys.stderr.write("Line %d\n" % (trace.tb_lineno))
    sys.exit(111)       # Soft failure, try again later.


On 9/28/05, Ken Causey <ken at kencausey.com> wrote:
> I'm looking into it, but having had no prior experience with setting up
> mailman (and having other work I have to do) I make no promises as to
> how quickly I can finish this or if I even can.  I welcome assistance
> from anyone with mailman assistance, particularly in a qmail
> environment.
>
> Cees: Is there anyway we can get the current alias setup for the lists?
> Or are we going to have to recreate that by hand?
>
> Ken
>
> On Wed, 2005-09-28 at 17:03 +0200, Cees De Groot wrote:
> > Hi All,
> >
> > All data from the old mailman setup is on box2:/mm
> >
> > I'm going to tune the TTL down for lists.squeakfoundation.org so we
> > can quickly transfer.
> >
> > Who can finish the mailman configuration? I'm off in a minute, have to
> > visit my sister, won't be back before late tonight and then I need to
> > concentrate on getting this old machine emptied from its services
> > before it crashes&burns...
> >
> > --
> > Help my girlfriend's family after Katrina - http://swiki.cdegroot.com/katrina
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQBDOuKm//qOUj3eKgMRArH0AJ4nbKw3He+cROO0mwqh5ekf9atpkQCfU2F/
> BT7gRZtYEasZ/3aaUgaLijY=
> =urzs
> -----END PGP SIGNATURE-----
>
>
>


--
Help my girlfriend's family after Katrina - http://swiki.cdegroot.com/katrina



More information about the Box-admins mailing list