lmtpengine checks for empty message id

Thomas Vogt tv at solnet.ch
Wed Sep 7 07:43:42 EDT 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi List

I triggerd an small issue with cyrus-imapd 2.2.12 and the  
lmtpengine.c. Of course it's not a cyrus problem.

I got a very bad mail header from a customer:

Subject: Mailtest
To: gtest at domain2.ch
X-Mailer: Lotus Notes Release 6.5.3 September 14, 2004
From: cm<cm at domain.cht>
Date: 07-Sep-2005 08:19:55 CEDT
Message-ID:
X-MIMETrack: Serialize by Router on skp_bonn/Simon-Kucher(Release7, | 
March 27, 2005) at
07.09.2005 08:19:57
MIME-Version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-transfer-encoding: quoted-printable
...

As you see this mail header is pretty broken. lmtpengine.c checks for  
an empty message id. If it's empty it won't be delivered to the  
mailbox. I'm sure that is correct.

Postfix with lmtp sends the correct error message:
Sep  7 10:06:58 mail2 postfix/lmtp[85322]: 44D495C161:  
to=<gtest at domain2.ch>, relay=mail3.domain.ch[xxx.xxx.xxx.xxx],  
delay=0, status=bounced (host mail3.domain.ch[xxx.xxx.xxx.xxx] said:  
554 5.6.0 Message contains invalid header (in reply to end of DATA  
command)).
Exim with cyrus delivery returns: Error code 65. This looks a bit  
strange.

But since postfix and exim delivers this "broken" mail to cyrus  
without any problem I starting to think if cyrus does not make to  
many RFC checks. We know the world is not perfect.

Anyway, are there any site effects if I remove the check on line 722  
and 723 in lmtpengine.c?
} else if (body) {
         r = IMAP_MESSAGE_BADHEADER;  /* empty message-id */


Regards
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)

iD8DBQFDHtJ0GCwkYTI5tyARAtQEAKCUf7Fw/q2BFe51MxJDfHUziDadhACffGVi
X5aA870Cx52wMVfxi8evbUw=
=HvpH
-----END PGP SIGNATURE-----



More information about the Info-cyrus mailing list