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.

Kategorien:

Stichwörter:

postfix · header · email · php · pcre ·