diff options
Diffstat (limited to 'contrib/auto')
| -rw-r--r-- | contrib/auto | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/contrib/auto b/contrib/auto deleted file mode 100644 index eaa8ab461..000000000 --- a/contrib/auto +++ /dev/null @@ -1,116 +0,0 @@ -# -*- python -*- -# -# Copyright (C) 2000,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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -"""Automatically send a message to a mailing list. -""" - -# To use with Postfix, set the following in your main.cf file: -# -# recipient_delimiter = + -# luser_relay = mm+$user@yourdomain.com -# owner_request_special = no - -import sys -import os -import time - -import paths -from Mailman import mm_cfg -from Mailman import Utils -from Mailman import MailList -from Mailman import Errors -from Mailman.Queue.sbcache import get_switchboard -from Mailman.Logging.Utils import LogStdErr - -# Error code if it's really not a Mailman list addr destination -EX_NOUSER = 67 - -LogStdErr('auto', 'auto') - -DISPOSE_MAP = {None : 'tolist', - 'request': 'torequest', - 'admin' : 'toadmin', - 'owner' : 'toadmin', - } - - - -def fqdn_listname(listname, hostname): - return ('%s@%s' % (listname, hostname)).lower() - - - -def main(): - # Postfix sets some environment variables based on information gleaned - # from the original message. This is the most direct way to figure out - # which list the message was intended for. - extension = os.environ.get('EXTENSION', '').lower() - i = extension.rfind('-') - if i < 0: - listname = extension - subdest = 'tolist' - else: - missing = [] - listname = extension[:i] - subdest = DISPOSE_MAP.get(extension[i+1:], missing) - if not Utils.list_exists(listname) or subdest is missing: - # must be a list that has a `-' in it's name - listname = extension - subdest = 'tolist' - if not listname: - print >> sys.stderr, 'Empty list name (someone being subversive?)' - return EX_NOUSER - try: - mlist = MailList.MailList(listname, lock=0) - except Errors.MMListError: - print >> sys.stderr, 'List not found:', listname - return EX_NOUSER - - # Make sure that the domain part of the incoming address matches the - # domain of the mailing list. Actually, it's possible that one or the - # other is more fully qualified, and thus longer. So we split the domains - # by dots, reverse them and make sure that whatever parts /are/ defined - # for both are equivalent. - domain = os.environ.get('DOMAIN', '').lower() - domainp = domain.split('.') - hostname = mlist.host_name.split('.') - domainp.reverse() - hostname.reverse() - for ca, cb in zip(domainp, hostname): - if ca <> cb: - print >> sys.stderr, 'Domain mismatch: %s@%s (expected @%s)' \ - % (listname, domain, mlist.host_name) - return EX_NOUSER - - if subdest is None: - print >> sys.stderr, 'Bad sub-destination:', extension - return EX_NOUSER - - inq = get_switchboard(mm_cfg.INQUEUE_DIR) - inq.enqueue(sys.stdin.read(), - listname=listname, - received_time=time.time(), - _plaintext=1, - **{subdest: 1}) - return 0 - - - -if __name__ == '__main__': - code = main() - sys.exit(code) |
