[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