Problem:
Bei neueren Postfix kommt es zu seltsamen Zeilenumbrüchen im Header sobald eine Email per PHP mit zusätzlichen Header-Zeilen verschickt wird. Z.B. so:
mail("foo at bar.de", "test-subjekt", "test-body",
"From: foobar at barfoo.com\r\nContent-Type: text/plain; charset=iso-8859-1");
Dieses Script lief unter einem älteren Postfix 2.0 noch ohne weitere Probleme. Nach einem Umzug auf einen Postfix 2.3 (z.B. Debian Etch) erscheint alles nach der FROM-Zeile in der Email statt im Header.
Erklärung:
Warum auch immer: Postfix hat die Zügel strenger gezogen und wandelt selbstständig jeden CR (\r
) im Email-Header zu einem LF (\n
). So wirkt die Kombination \r\n
wie eine Dopplung \n\n
und gilt damit als Ende des Email-Headers und Beginn des Body's.
Lösung:
Wir richten einen RegEx-Parser für den Header in Postfix ein. Dazu benötigen wir zusätzlich das Paket postfix-pcre
. Diese RegEx löscht alle überflüssigen CR's aus dem Header.
apt-get install postfix-pcre
echo '/^(.*):(.*)\r$/ REPLACE $1:$2' >/etc/postfix/header_checks
postconf header_checks pcre:/etc/postfix/header_checks
#Postfix restart
/etc/init.d/postfix restart
Email versenden und im Maillog nachsehen, ob es Fehlermeldungen gibt.