POSTFIX MAIL:
> The only difference between the 2 tests is the debug_peer_list
> parameter (postfix, content filter, filter, message are the same).
The difference is that turning on debug_peer_list changes the timing
of Postfix SMTP client commands. If that has any observable effect
then the content filter is buggy.
You can "fix" your bug by setting
/etc/postfix/main.cf:
smtp_discard_ehlo_keywords=pipelining
Here is proof:
> ... relay=127.0.0.1[127.0.0.1]:10025, conn_use=4, delay=0.15,
> delays=0.15/0/0/0, dsn=2.0.0, status=sent (221 bye)
The Postfix SMTP client sends
<CR><LF>.<CR><LF>QUIT<CR><LF>
and expects that the client replies with 250 (the expected reply
to "end-of-data).
Your filter replies with "221 bye" which is the expected reply to
the QUIT command.
In other words the filter does not correctly implement SMTP command
pipelining.
Wietse