Wietse Venema:
> > I added "message_strip_characters = \0" to my Postfix's main.cf and did
> > a reload of Postfix, but this doesn't seem to have had any effect on the
> > problem. I did a Google search and found various complaints over the
> > years from people claiming "message_strip_characters = \0" didn't work
> > for them, but there didn't seem to be any obvious answer.
I just did the following:
$ ls -la > file
This produces a file with lines such as
-rw------- 1 wietse wietse 16 Feb 11 2010 .esd_auth
When I send this with "b" replaced by null:
tr 'b' '\0' < file | sendmail wietse@localhost
This delivers a message with nulls in the body content. For example,
when viewed with less, "Feb" becomes "Fe^@" where ^@ is ASCII nul:
-rw------- 1 wietse wietse 16 Fe^@ 11 2010 .esd_auth
When I have this in main.cf:
$ postconf message_strip_characters
message_strip_characters = \0
Then, the same message is delivered without the nulls. For example,
I now get "Fe" instead of "Fe^@":
-rw------- 1 wietse wietse 16 Fe 11 2010 .esd_auth
So I suspect that this is a case of user error: you are trying to
strip null characters from MIME ENCODED email, and as documented,
body_checks doesn't decode MIME.
In quoted-printable encoding, null characters look like:
=00
And in Base64-encoded email, embedded nulls look different
depending on their position in the file.
Using body_checks for this is unsafe, since body_checks doesn't
know if a message is MIME encoded. Doing that properly requires a
MIME parser.
So the answer is, to remove null characters from MIME-ENCODED
email, you need a MIME-aware filter, instread of body_checks.
Wietse