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.