summaryrefslogtreecommitdiff
path: root/contrib/qmail-to-mailman.py
diff options
context:
space:
mode:
authorBarry Warsaw2011-06-16 16:27:13 -0400
committerBarry Warsaw2011-06-16 16:27:13 -0400
commit3c99f28d219596434e8547df95e7041e2cf21fb7 (patch)
tree287cc4ee058c29228bd4201cc89c7411983fa2b8 /contrib/qmail-to-mailman.py
parent8a7ef34b079786ddeba73e8beba11af660d9433e (diff)
downloadmailman-3c99f28d219596434e8547df95e7041e2cf21fb7.tar.gz
mailman-3c99f28d219596434e8547df95e7041e2cf21fb7.tar.zst
mailman-3c99f28d219596434e8547df95e7041e2cf21fb7.zip
Diffstat (limited to 'contrib/qmail-to-mailman.py')
-rw-r--r--contrib/qmail-to-mailman.py116
1 files changed, 0 insertions, 116 deletions
diff --git a/contrib/qmail-to-mailman.py b/contrib/qmail-to-mailman.py
deleted file mode 100644
index 3e4e19d5b..000000000
--- a/contrib/qmail-to-mailman.py
+++ /dev/null
@@ -1,116 +0,0 @@
-#! @PYTHON@
-
-# Configuration variables - Change these for your site if necessary.
-MailmanHome = "@prefix@"; # Mailman home directory.
-MailmanVar = "@VAR_PREFIX@"; # Mailman directory for mutable data.
-MailmanOwner = "postmaster@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@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 @PYTHON@ @prefix@/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
-
-def main():
- os.nice(5) # Handle mailing lists at non-interactive priority.
-
- os.chdir(MailmanVar + "/lists")
-
- 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)
-
- local = string.lower(local)
- local = re.sub("^mailman-","",local)
-
- names = ("root", "postmaster", "mailer-daemon", "mailman-owner", "owner",
- "abuse")
- 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$", "bounces"),
- ("-bounces$", "bounces"),
- ("-join$", "join"),
- ("-leave$", "leave"),
- ("-owner$", "owner"),
- ("-request$", "request"))
-
- for i in types:
- if re.search(i[0],local):
- type = i[1]
- local = re.sub(i[0],"",local)
-
- if os.path.exists(local):
- os.execv(MailmanHome + "/mail/mailman",
- (MailmanHome + "/mail/mailman", type, local))
- else:
- bounce()
- 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.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.