On Saturday, September 13, 2003, at 04:24 pm, John A. Martin wrote:
You seem to have spotted an error in this experimental code.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
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
