LISTSERV was not designed from the ground up as a spam filtering clearinghouse that can be connected to arbitrarily slow spam filters. It was designed as a high-performance e-mail list manager :-) When viruses came, a virus scanning function was added, and there was no noticeable performance impact. Scanning the message twice is in practice necessary because: 1. If the message contains a virus, processing should be aborted as soon as reasonably possible. The message should not be held in the spool waiting for something to happen, etc. For this reason, the message should be scanned as early as reasonably possible, considering that this is a per-list setting. 2. In THEORY, if the full entire message did not contain any viruses, then any subset of that message will also be virus-free. But in practice this is not guaranteed, since virus scanners use a lot of heuristics and virus writers spend a lot of energy trying to defeat them. Given the very low cost of virus scans, it would be hard to justify not scanning the final message that is actually going to be sent to thousands of people whose computer might be at risk if you decided that the first scan was enough. The spam filter is implemented as an extension of the virus scanner, and a side effect is that spam scanning is done twice in case the message is rewritten (which is not very common). This is bad because it takes longer, and it is good because sometimes when you run a message twice through the spam scanner, it will go through the first time and be blocked the second time, because of network delays (in fact, at one point we used a spam exit that ran the query twice through SpamAssassin and used the highest of the two numbers, which gave better results, but it turned out to be too slow in practice). Either way, this is no big deal as long as the spam filter is reasonably fast. Unfortunately, the most popular spam filter happens to be extremely slow. Eric