Author: Steven Chamberlain Date: To: exim-dev CC: Renaud Allard Subject: Re: [exim-dev] Delivering message to Exim via SMTPS with LF instead
of CRLF, breaks DK validator
Philip Hazel wrote: > For this reason, and for compatibility with other
> MTAs, the way Exim handles line endings for all messages is now as
> follows:
> ... > However, it was all some time ago now. Perhaps it is time to review?
> (But not by me. :-)
Hi,
It's certainly very messy. I understand that Exim has gone out of its
way to tolerate non-RFC 2821-compliant SMTP implementations, but in
doing so it contravenes the RFC itself. Now that it has gone down this
path, there is no easy way back. Authors of new software or scripts
which communicate with Exim, for example, will have been able to use the
non-compliant bare LF line endings without any problems, and thus Exim
may be worsening the problem. It becomes more difficult to revert to
the correct behaviour in the future.
It may be better if Exim sent a warning in its SMTP reply when a
non-compliant bare LF line terminator is used. Something like this,
perhaps:
220 smtp.pyro.eu.org ESMTP Exim 4.69 Fri, 11 Jul 2008 13:12:44 +0100
MAIL FROM: <steven@???><LF>
250-Warning: SMTP command used bare LF character as a line terminator;
250-be aware that RFC 2821 specifies that CRLF is to be used instead.
250 OK
It might be a good idea if a log message was generated too, so that a
server administrator or developer could keep track of the number of
non-compliant systems out there, perhaps allowing them to be identified
and hopefully fixed one day.
Anyway, this seems to be separate from the DomainKeys validator issue.
I had a look in src/dk.c and dk_receive_getc() seems a likely candidate
for the source of the 4 characters appended to the end of dk_sender. As
a C++ programmer I'm somewhat allergic to the code in that function, but
I gather that it expects CRLF line endings at that stage of processing.