On Saturday, September 13, 2003, at 04:24 pm, John A. Martin wrote:


Mail to a list with a hyphen in its name languishes forever in
qfiles/maildir. The culprit might be in MaildirRunner.py

,----[ MaildirRunner.py lines 65-74 ]
# We only care about the listname and the subq as in listname@ or
# listname-request@
lre = re.compile(r"""
 ^                        # start of string
 (?P<listname>[EMAIL PROTECTED])     # listname@ or listname-subq@
 (?:                      # non-grouping
   -                      # dash separator
   (?P<subq>[EMAIL PROTECTED])      # everything up to + or - or @
 )?                       # if it exists
 """, re.VERBOSE | re.IGNORECASE)
`----

How about [EMAIL PROTECTED]

jam

You seem to have spotted an error in this experimental code.

If it is of any use, I use essentially the following code in my Mailman mailer for Sendmail, which eliminates the need for maintaining an aliases file/db, and has to solve the same problem.

# Possible VERP regexes and associated extraction variables
# which may be defined in from mm_cfg.py
# Add to this tuple if more VERP patterns are defined.
POSSIBLE_VERP_REGEX_LIST = (('VERP_REGEXP', 'bounces'),
                            ('VERP_CONFIRM_REGEXP', 'addr'))

_VALID_SUFFIX_MAP = {'admin': 'admin',
                     'bounces': 'bounces',
                     'confirm': 'confirm',
                     'join': 'join',
                     'leave': 'leave',
                     'owner': 'owner',
                     'request': 'request',
                     'subscribe': 'subscribe',
                     'unsubscribe': 'unsubscribe',
                    }

_suffix_pat = re.compile(r'(?P<listname>.+)-(?P<suffix>[^-]+)$')

def split_addr(address):
    # We are here trying to split the target alias as passed in
    # by the MTA because it was not simply a listname. We could
    # have  a VERP'ed return address and/or a listname-<function> alias.
    # Because there are multiple VERP formats and associated regexes
    # and these can be redefined in mm_cfg.py we cannot hardwire a
    # regex here to extract from VERP'ed return addresses.
    command = None
    listname, server = address.split('@', 1)
    for regex_pat_name, regex_var in POSSIBLE_VERP_REGEX_LIST:
        if hasattr(mm_cfg, regex_pat_name):
            regex_obj = re.compile(getattr(mm_cfg, regex_pat_name))
            match_obj = regex_obj.search(address)
            if match_obj:
                listname =  match_obj.group(regex_var)
                break
    suffix_match = _suffix_pat.match(listname)
    if suffix_match and \
       _VALID_SUFFIX_MAP.has_key(suffix_match.group('suffix')) and \
       Utils.list_exists(suffix_match.group('listname')):
        listname = suffix_match.group('listname')
        command = _VALID_SUFFIX_MAP[suffix_match.group('suffix')]
    return (listname, command)
-----------------------------------------------------------------------
Richard Barrett                               http://www.openinfo.co.uk


_______________________________________________ Mailman-Developers mailing list [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/mailman-developers

Reply via email to