diff options
| author | Barry Warsaw | 2011-07-15 18:48:32 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2011-07-15 18:48:32 -0400 |
| commit | 6a535715b6cd286df1bbbefe20b42a6ad0cc3390 (patch) | |
| tree | c46c4da417f360bdf002f2511a55cd155a14026c /src/mailman/bouncers/groupwise.py | |
| parent | 651fe5ef452e6ae7cba741c819f9fcc994688753 (diff) | |
| download | mailman-6a535715b6cd286df1bbbefe20b42a6ad0cc3390.tar.gz mailman-6a535715b6cd286df1bbbefe20b42a6ad0cc3390.tar.zst mailman-6a535715b6cd286df1bbbefe20b42a6ad0cc3390.zip | |
Diffstat (limited to 'src/mailman/bouncers/groupwise.py')
| -rw-r--r-- | src/mailman/bouncers/groupwise.py | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/src/mailman/bouncers/groupwise.py b/src/mailman/bouncers/groupwise.py deleted file mode 100644 index b6bbf1582..000000000 --- a/src/mailman/bouncers/groupwise.py +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright (C) 1998-2011 by the Free Software Foundation, Inc. -# -# This file is part of GNU Mailman. -# -# GNU Mailman 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 3 of the License, or (at your option) -# any later version. -# -# GNU Mailman 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 -# GNU Mailman. If not, see <http://www.gnu.org/licenses/>. - -"""This appears to be the format for Novell GroupWise and NTMail - -X-Mailer: Novell GroupWise Internet Agent 5.5.3.1 -X-Mailer: NTMail v4.30.0012 -X-Mailer: Internet Mail Service (5.5.2653.19) -""" - -from __future__ import absolute_import, unicode_literals - -__metaclass__ = type -__all__ = [ - 'GroupWise', - ] - - -import re - -from email.Message import Message -from cStringIO import StringIO -from zope.interface import implements - -from mailman.interfaces.bounce import IBounceDetector - - -acre = re.compile(r'<(?P<addr>[^>]*)>') - - - -def find_textplain(msg): - if msg.get_content_type() == 'text/plain': - return msg - if msg.is_multipart: - for part in msg.get_payload(): - if not isinstance(part, Message): - continue - ret = find_textplain(part) - if ret: - return ret - return None - - - -class GroupWise: - """Parse Novell GroupWise and NTMail bounces.""" - - implements(IBounceDetector) - - def process(self, msg): - """See `IBounceDetector`.""" - if msg.get_content_type() != 'multipart/mixed' or not msg['x-mailer']: - return set() - addresses = set() - # Find the first text/plain part in the message. - text_plain = find_textplain(msg) - if text_plain is None: - return set() - body = StringIO(text_plain.get_payload()) - for line in body: - mo = acre.search(line) - if mo: - addresses.add(mo.group('addr')) - elif '@' in line: - i = line.find(' ') - if i == 0: - continue - if i < 0: - addresses.add(line) - else: - addresses.add(line[:i]) - return set(addresses) |
