[Postfixbuch-users] CRLF Problem mit Postfix 2.2.5 / PHP 4.3.x
Jan Schröter
toxic at lanconvention.de
Sa Okt 15 22:44:42 CEST 2005
Jan Schröter schrieb:
> Ralf Hildebrandt schrieb:
>
>>* Jan Schr?ter <toxic at lanconvention.de>:
>>
>>
>>
>>>Ist aber nicht laut RFC822 (3.2. HEADER FIELD DEFINITIONS) ein Headerfeld in einer Mail genau so aufzubauen:
>>>field = field-name ":" [ field-body ] CRLF
>>
>>
>>Du sprichst aber mit dem lokalen Sendmail Kommando, und das macht das
>>selber ran.
>>
>
> Ich spreche ja wenn ich über ein PHP Script oder ähnliches eine Mail einliefere immer mit dem lokalen Sendmail Kommando, egal ob die Mail an eine lokale oder externe Addresse gerichtet ist. Beim Versand an eine externe Mailadresse ist das Problem allerdings nicht vorhanden.
>
>>>Bei Mails sollte also nach RFC immer CRLF zum Abschluss eines
>>>Headerfelds verwendet werden. Das ganze hat ja auch bis Postfix 2.0.6
>>>(hatten wir vorher drauf) funktioniert - lokal wie extern. Nun
>>>funktioniert es mit Postfix 2.2.5 lokal nicht mehr- extern weiterhin.
>>>Er scheint ja zu versuchen dort die CRLF Zeilenumbrüche für die lokale
>>>Zustellung in Unix-richtige LFs umzuwandeln. Aber das geht scheinbar in
>>>die Hose. Welche Prozess von Postfix nimmt eigentlich diese Umwandlung
>>>vor?
>>
>>
>>Keine Ahnung, frag mal auf der US Liste.
>>
>
>
Hallo und danke an alle, die sich mit mir den Kopf zerbrochen haben. Ich
habe das Problem jetzt wie folgt gelöst:
Über die Option header_checks habe ich eine pcre table eingebunden:
header_checks = pcre:/etc/postfix/header_checks
in dieser wird folgende Prüfung vorgenommen:
/^(.*):(.*)\r$/ REPLACE $1:$2
Bedeutet, alle Headereinträge, die ein \r (CR) als letztes Zeichen
enthalten, werden durch den gleichen Eintrag ohne das CR ersetzt.
Allerdings vermute ich immernoch, dass dies ein Bug ist, der sich
irgendwann einmal in Postfix eingeschlichen hat und bisher nicht
aufgefallen ist - unter 2.0.6 waren diese Umwege nämlich nicht nötig.
Denn ein \r sollte eigentlich unter keinen Umständen am Zeilenende
auftauchen.
Stein des Anstosses war ja, dass über einen PHP Mail() Headerzeilen
statt mit \n mit \r\n an Sendmail übergeben wurden. Das erklärt aber
immernoch nicht, wie das \r ans Zeilenende kommt.
Sei es drum - ich habe eine für mich vertretbare Lösung gefunden die
auch funktioniert.
mfg
Jan
Mehr Informationen über die Mailingliste Postfixbuch-users