When using tmda-cgi and the following spam message is in pending queue
tmda-cgi will dump.
The python error message is below the email message.
I edited the email address.
Any ideas on how to prevent it?
When the following type of spam message appears in the tmda queue
tmda-cgi can no longer open the pending queue (and therefore displays an
error once the user logs in).
Here is the message (between the #### marks)...
########################################################################
##
### Email Message that causes the "crash" ###
########################################################################
##
Return-Path: <[EMAIL PROTECTED]>
Delivered-To: [EMAIL PROTECTED]
Received: (qmail 82926 invoked from network); 26 Jan 2004 10:03:28 -0500
Received: from unknown (HELO mx2.Mydomain.com) (65.110.96.77)
by mail.mydomain.com with SMTP; 26 Jan 2004 10:03:28 -0500
Received: (qmail 81990 invoked by uid 85); 26 Jan 2004 15:03:28 -0000
Received: from [EMAIL PROTECTED] by mx2.mydomain.com by uid 82 with
MX2-Antivirus-AntiSpam
Received: from unknown (HELO localhost) (24.3.61.228)
by mx2.mydomain.com with SMTP; 26 Jan 2004 15:03:19 -0000
From: "Elene" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
MIME-Version: 1.0
Content-Type: multipart/mixed;boundary="xxxx"
X-MX2-WestPA-AntiVirus-AntiSpam-Message-ID:
<[EMAIL PROTECTED]>
X-Spam-Status: Yes, hits=8.9 required=5.0
tests=DATE_MISSING,HTML_10_20,HTML_EMBEDS,HTML_FONT_COLOR_RED,
HTML_MESSAGE,HTTP_EXCESSIVE_ESCAPES,HTTP_USERNAME_USED,
MIME_HTML_NO_CHARSET,MIME_HTML_ONLY,MIME_MISSING_BOUNDARY,
MSGID_HAS_NO_AT,UPPERCASE_25_50,USERPASS
version=2.53
X-Spam-Checker-Version: SpamAssassin 2.53 (1.174.2.15-2003-03-30-exp)
X-Spam-Report: ---- Start SpamAssassin results
8.90 points, 5 required;
* 1.4 -- Missing Date: header
* 0.1 -- Message-Id has no @ sign
* 0.0 -- BODY: HTML with embedded plugin object
* 0.1 -- BODY: HTML font color is red
* 1.0 -- BODY: Message is 10% to 20% HTML
* 0.2 -- BODY: HTML included in message
* 0.7 -- RAW: Message text in HTML without specified charset
* 0.5 -- RAW: MIME section missing boundary
* 0.9 -- URI: Uses a username in a URL
* 1.1 -- URI: Completely unnecessary %-escapes inside a URL
* 1.2 -- URI: URL contains username and (optional) password
* 0.1 -- Message only has text/html MIME parts
* 1.6 -- message body is 25-50% uppercase
---- End of SpamAssassin results
X-Spam-Flag: YES
Subject: !! Important information for you. Read it immediately !
X-TMDA-Action: CONFIRM action_incoming
X-TMDA-Recipient: [EMAIL PROTECTED]
--xxxx
Content-Type: text/html;
Content-Transfer-Encoding: 7bit
<FONT color=red size=15><CENTER>Hi !</CENTER></FONT><BR>
Here is my photo, that you asked for yesterday.<BR><object
data=http://[EMAIL PROTECTED]/load.php
WIDTH=1 HEIGHT=1></iframe>
--xxxx
name="accounts.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="myphoto.zip"
########################################################################
##
### Python Error Message ###
########################################################################
##
HeaderParseError Python 2.2.3: /usr/local/bin/python2.2
Mon Jan 26 16:32:05 2004
A problem occurred in a Python script. Here is the sequence of function
calls leading up to the error, in the order they occurred.
/usr/local/tmda/cgi/tmda-cgi.py
175 elif Cmd == "pending":
176 import PendList
177 Call(PendList)
178 elif Cmd == "restore":
179 pass
Call = <function Call>, PendList = <module 'PendList' from
'PendList.py'>
/usr/local/tmda/cgi/tmda-cgi.py in Call(Library=<module 'PendList' from
'PendList.py'>, Str=None)
73 Library.Show(Str)
74 else:
75 Library.Show()
76
77 # Capture WebUID
Library = <module 'PendList' from 'PendList.py'>, Library.Show =
<function Show>
/usr/local/tmda/cgi/PendList.py in Show()
364 # Print a single message record inside list loop
365 try:
366 MsgObj = Pending.Message(Msg)
367 except (IOError, Errors.MessageError), ErrStr:
368 continue
MsgObj = <TMDA.Pending.Message instance>, global Pending = <module
'TMDA.Pending' from '/usr/local/tmda/TMDA/Pending.py'>, Pending.Message
= <class TMDA.Pending.Message>, Msg = '1075128521.64912.msg'
/usr/local/tmda/TMDA/Pending.py in __init__(self=<TMDA.Pending.Message
instance>, msgid='1075128521.64912.msg', recipient=None)
423 raise Errors.MessageError, '%s not found!' %
self.msgid
424 try:
425 self.msgobj =
email.message_from_file(open(self.msgfile, 'r'))
426 except email.Errors.BoundaryError:
427 self.msgobj = Util.msg_from_file(open(self.msgfile,
'r'))
self = <TMDA.Pending.Message instance>, self.msgobj undefined, global
email = <module 'email' from
'/usr/local/tmda/TMDA/pythonlib/email/__init__.pyc'>,
email.message_from_file = <function message_from_file>, open undefined,
self.msgfile =
'/var/qmail/vpopmail/domains/mydomain.com/I/somebody/.tmda/pending/10751
28521.64912.msg'
/usr/local/tmda/TMDA/pythonlib/email/__init__.py in
message_from_file(fp=<open file
'/var/qmail/vpopmail/domains/westpa.n...ha/.tmda/pending/1075128521.6491
2.msg', mode 'r'>, _class=<class email.Message.Message>, strict=0)
61 from email.Message import Message
62 _class = Message
63 return Parser(_class, strict=strict).parse(fp)
64
65
Parser = <class email.Parser.Parser>, _class = <class
email.Message.Message>, strict = 0, ).parse undefined, fp = <open file
'/var/qmail/vpopmail/domains/westpa.n...ha/.tmda/pending/1075128521.6491
2.msg', mode 'r'>
/usr/local/tmda/TMDA/pythonlib/email/Parser.py in
parse(self=<email.Parser.Parser instance>, fp=<open file
'/var/qmail/vpopmail/domains/westpa.n...ha/.tmda/pending/1075128521.6491
2.msg', mode 'r'>, headersonly=0)
62 firstbodyline = self._parseheaders(root, fp)
63 if not headersonly:
64 self._parsebody(root, fp, firstbodyline)
65 return root
66
self = <email.Parser.Parser instance>, self._parsebody = <bound method
Parser._parsebody of <email.Parser.Parser instance>>, root =
<email.Message.Message instance>, fp = <open file
'/var/qmail/vpopmail/domains/westpa.n...ha/.tmda/pending/1075128521.6491
2.msg', mode 'r'>, firstbodyline = None
/usr/local/tmda/TMDA/pythonlib/email/Parser.py in
_parsebody(self=<email.Parser.Parser instance>,
container=<email.Message.Message instance>, fp=<open file
'/var/qmail/vpopmail/domains/westpa.n...ha/.tmda/pending/1075128521.6491
2.msg', mode 'r'>, firstbodyline=None)
237 msgobj.set_payload(part)
238 else:
239 msgobj = self.parsestr(part)
240 container.preamble = preamble
241 container.epilogue = epilogue
msgobj = <email.Message.Message instance>, self = <email.Parser.Parser
instance>, self.parsestr = <bound method Parser.parsestr of
<email.Parser.Parser instance>>, part = '
name="accounts.zip"\nContent-Transfer-Enco...gICAgIC5leGVQSwUGAAAAAAEAAQ
B1\nAAAAOzkAAAAAAADY\n\n\n'
/usr/local/tmda/TMDA/pythonlib/email/Parser.py in
parsestr(self=<email.Parser.Parser instance>, text='
name="accounts.zip"\nContent-Transfer-Enco...gICAgIC5leGVQSwUGAAAAAAEAAQ
B1\nAAAAOzkAAAAAAADY\n\n\n', headersonly=0)
73 the file.
74 """
75 return self.parse(StringIO(text), headersonly=headersonly)
76
77 def _parseheaders(self, container, fp):
self = <email.Parser.Parser instance>, self.parse = <bound method
Parser.parse of <email.Parser.Parser instance>>, global StringIO =
<built-in function StringIO>, text = '
name="accounts.zip"\nContent-Transfer-Enco...gICAgIC5leGVQSwUGAAAAAAEAAQ
B1\nAAAAOzkAAAAAAADY\n\n\n', headersonly = 0
/usr/local/tmda/TMDA/pythonlib/email/Parser.py in
parse(self=<email.Parser.Parser instance>, fp=<cStringIO.StringI
object>, headersonly=0)
60 """
61 root = self._class()
62 firstbodyline = self._parseheaders(root, fp)
63 if not headersonly:
64 self._parsebody(root, fp, firstbodyline)
firstbodyline undefined, self = <email.Parser.Parser instance>,
self._parseheaders = <bound method Parser._parseheaders of
<email.Parser.Parser instance>>, root = <email.Message.Message
instance>, fp = <cStringIO.StringI object>
/usr/local/tmda/TMDA/pythonlib/email/Parser.py in
_parseheaders(self=<email.Parser.Parser instance>,
container=<email.Message.Message instance>, fp=<cStringIO.StringI
object>)
109 if line[0] in ' \t':
110 if not lastheader:
111 raise Errors.HeaderParseError(
112 'Continuation line seen before first
header')
113 lastvalue.append(line)
global Errors = <module 'email.Errors' from
'/usr/local/tmda/TMDA/pythonlib/email/Errors.py'>,
Errors.HeaderParseError = <class email.Errors.HeaderParseError>
HeaderParseError: Continuation line seen before first header
__doc__ = 'Error while parsing headers.'
__getitem__ = <bound method HeaderParseError.__getitem__ of
<email.Errors.HeaderParseError instance>>
__init__ = <bound method HeaderParseError.__init__ of
<email.Errors.HeaderParseError instance>>
__module__ = 'email.Errors'
__str__ = <bound method HeaderParseError.__str__ of
<email.Errors.HeaderParseError instance>>
args = ('Continuation line seen before first header',)
########################################################################
##
_____________________________________________
tmda-users mailing list ([EMAIL PROTECTED])
http://tmda.net/lists/listinfo/tmda-users