summaryrefslogtreecommitdiff
path: root/src/mailman/bouncers/groupwise.py
diff options
context:
space:
mode:
authorBarry Warsaw2011-07-15 18:48:32 -0400
committerBarry Warsaw2011-07-15 18:48:32 -0400
commit6a535715b6cd286df1bbbefe20b42a6ad0cc3390 (patch)
treec46c4da417f360bdf002f2511a55cd155a14026c /src/mailman/bouncers/groupwise.py
parent651fe5ef452e6ae7cba741c819f9fcc994688753 (diff)
downloadmailman-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.py87
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)