On Wed, 2 Dec 1998, John Horne wrote:
> I'd also make the point that whilst allowing a leading dot still allows exim
> to be a 'drop-in' replacement for sendmail, do we want to follow it to the
> extent of non-standard practices? Should it diverge from sendmail in that it
> is 'correct'?
My views on this are entirely pragmatic.
(1) The net has always "run ahead" of the standards. People try things
out to see if they work, then if they do they eventually get
standardized. (Compare the ISO way of working, which is to write the
standard first. That way you get tighter standards, but as far as I can
tell, much slower progress, and if you make a mistake .... no, I didn't
mention X.400.)
(2) Even when there are RFCs, they are only "advisory". Nobody has to
follow them, but if your software fails to interwork and does not
conform to an RFC, then the fault is definitely yours.
(3) Certain programs with very wide usage, of which sendmail is one, are
an additional "de facto" standard, like it or not, because they were
there first and people expect other software to interwork with them.
Anybody who is trying to write a drop-in replacement has to take account
of things which are without the relevant standard.
(4) I tried to write Exim strictly to the RFCs, and was forced pretty
early on to make some relaxations. When a complaint of the form "the xxx
server/client does it this way" is received, I have three choices:
(i) Stand firm on the RFC;
(ii) Implement the relaxation, but with an option (with the default
either on or off);
(iii) Implement the relaxation without an option.
I have taken all three paths in the past, trying to pick sensibly
according to the "severity" of the relaxation.
In the matter of leading dots in local parts, I decided to go with (iii)
because there was a previous (un-optioned) relaxation to allow .. in the
middle of a local part and a dot at the end, so it seemed silly to
invent an option for just the case of dot at the start. Of course, I
could have had an option called, say, allow_null_components_in_local_parts
to control all three cases, but it would have had to default on for
compatibility with previous releases. This would have been a bit like
helo_strict_syntax, which I bet very few people actually set.
I think the comments about 1.73 are a red herring. The ChangeLog entry
for Exim version 0.57 reads:
70. Permit null components in local parts, e.g. a..n..other, because
many other mailers do. Permit them in the middle and at the end (but
not at the beginning). Sigh.
I should have saved myself the trouble and allowed them at the start
while I was at it.
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
--
*** Exim information can be found at
http://www.exim.org/ ***