It seems you are quoting me but do so in quite an unusual manner.
Now I have to correct this...
Why would one look for an invalid case that shouldn't be there in
the first place? That would be an unnecessary operation.
if the 1st character is '.' and the 2nd character is not end of line,
remove the first character.
if the 1st character is '.' and the 2nd character is '.' and the 3rd
character is not end of line, remove the first character.
This might be needed to throw an error.
There is no error. If the line starts with a dot and is not only a dot,
remove the dot. This is as the manual specifies.
NOTE the input set precondition in the derived inverse function. If
f'(y) is not defined for y=1 then how can it be expected to give a
result for y=1.
The input *is* defined. <<Any line starting with a dot and more than
one character>> is to be modified.
It is not correct inverse operation and the suggestion is to
Then correct it at the sender's side. Just because a handful of
sender MTAs does this wrong, you want the whole world to handle
a special case?
The output is not defined. The sending MTA should have done something
different, not the receiving one.
Yes, I agree and that is why I would not call receiving MTA as
buggy in this case.
Neither did I. On the contrary. Ergo, the receiving end does not need
to change. This means ".a line starting with a dot" should not be
handled different than "..a line starting with a dot". In both cases
remove one leading dot. There is no need to look for the single dot
as a special case. That would just be more work for the receiver and
would not be necessary in way too many cases.
It would be an error if the receiving end threw an error. The problem
is in the sending MTA. Fix it there. Guessing at the receiver's side
will, in most cases, probably work fine but in the long run this would
just mean that those faulty senders won't be repaired. Enough reasons
why the receiver does not need to, and should not, change.