Mail loop detection

Mail loop? What does that mean?

One of the worst things that can happen to your list is to have a mail loop develop. Especially when they involve big lists, loops are a huge waste of time and also become terribly embarrassing for you as an administrator. By definition, they happen when two systems start sending mail to each other, neither realizing the other is a machine, and while that's bad enough, when it happens on a mailing list a whole bunch of "innocents" get to listen in on the exchange. The most typical offenders in mailing loops are :

  • vacation/out-of-office systems that reply "I'm away" to everything that arrives;
  • situations where one list address is subscribed as a member of another list, (and vice versa). (The recommended way of including members of one list in another one is to set up sub-and-superlists);
  • mail hosts that send error messages back to a list (thus generating another error, and so on...) rather than to the sender.

What can be done by Sympa to help prevent mail loops?

If everything is set up correctly, then mailing loops should never happen. This is never always the case, and most mailing list manager software will contain code to try and detect loops. Sympa is no exception to this. To try and detect loops, Sympa does the following :

  • firstly, sympa adds a Precedence: bulk header to all outgoing list mail. This is a standard that most out-of-office/vacation systems follow and they will not normally reply to any mail with this set. (The Out of Office Assistant in Microsoft Exchange honours this convention.).  If you are unsure that your 'out-of-office' system does not do this, then it is recommended that you set your reception mode to 'nomail' while you are away. (This will suspend your membership of your mailing lists);
  • secondly, sympa rejects messages coming from a robot (as indicated by the From: and other header fields), and messages containing Sympa email commands;
  • thirdly, every message sent by sympa includes an X-Loop: header field set to the listname. If the message comes back, sympa will detect that it has already been sent (unless X-Loop: header fields have been erased). NOTE: Because of this restriction, users should not explicitly forward messages received from the list back to the same list (you should 'reply' or create a new message) - any messages received from a list will have an X-Loop: header in it - they will be silently discarded by the system and you will be left wondering where your message has gone;
  • fourthly, sympa keeps track of message IDs and will refuse to send multiple messages with the same message ID to the same mailing list (the Message-ID:header is an Internet standard email header and is used to uniquely identify any email message - no email message should ever have the same message ID as another - however, some broken software will do this on occasion);
  • finally, sympa detects loops arising from command reports (i.e. sympa-generated replies to commands). This sort of loop might occur as follows:
    1. 1 User X sends a command to Sympa
    2. 2 Sympa sends a command report back to user X
    3. 3 User X has installed a home-made vacation program replying to programs
    4. 4 Sympa processes the reply and sends a report back to X
    5. 5 Looping to step 3