A user replied to a message on the list and instead of the reply being posted, I received the following error in my mailbox.


The enclosed  message, found in  the MYLIST-L  mailbox and shown  under the

spool  ID 92888  in  the system  log,  has been  identified  as a  possible

delivery  error notice  for  the following  reason:  "Sender:", "From:"  or

"Reply-To:"  field pointing  to  the  list has  been  found  in mail  body.


This error seems to indicate that LISTSERV is incorrectly diagnosing a perfectly good post as a delivery error. Why?


This error is normally generated on an otherwise good reply to a list because the poster (or the poster's mail client) has quoted the entire text of the message he or she is replying to in the body of the reply. Normally this would not be an issue, but if the quoted text includes the RFC822 headers from the original message and if the quoting character (for instance, ">") has a space between it and the lines of the original message, LISTSERV will reject the message as a possible delivery error notice. For instance, quoting like this:


>From: Joe User <joe@example.com>


is perfectly OK, but


> From: Joe User <joe@example.com>


is not. In the first example, LISTSERV ignores ">From" because the complete word it is looking for is "From:". If there is a space as in the second example, LISTSERV finds the word "From:" and rejects the message. (LISTSERV evaluates words as whole units, ie, it looks at message lines as space-delimited character strings and anything between two consecutive spaces is evaluated as a word. Thus the word ">From:" is not strictly equal to the word "From:".)


The question as to why LISTSERV does this can be answered fairly simply. There are mail transfer agents (MTAs) in use today that consistently bounce errors back to the list address (the RFC822 From: line) instead of back to the mail envelope return address (the RFC821 MAIL FROM: line, which you may or may not ever see--often this line is added by sendmail and other MTAs as the RFC822 "Return-Path:" header). This is a violation of standards long in use on the Internet, but unfortunately not everyone pays attention to the standards when writing software for the Internet (L-Soft does, religiously, and always requests interpretations from the standard author when considering implementing something that may or may not be strictly to standard).


One of the ways LISTSERV tries to avoid mailing loops is to look for evidence in the body of the message to the effect that the message is a delivery error. If it finds a From:, Sender:, or Reply-To: line in the body of the message that points back to the list, it rejects the message as a "possible" delivery error. This is because the loop-checking heuristic has no way to tell between a legitimate post and a mail delivery error masquerading as a post; it just has to assume that if certain rules are met, the post is probably a delivery error.


It is not reasonable to relax the loop-checking heuristic in this case as it would then be completely possible for your list to get into a nasty loop situation. The best solution to the problem is to educate your users to remove non-germane text from the body of their replies (the headers are rarely useful anyway), and/or to change the quoting setup in their mail client to remove the space between the quoting character and the text being quoted. If there is no quoting character at all, then one should be added or, again, the quoted headers should be removed in replies to the list.