Skip to content

FLOSS'n'net - Aktivitäten im 4. Quartal 2019

Im letzten Quartal des vergangenen Jahres hatte ich sehr wenig Zeit; daher bin ich auch nur ganz zu Anfang, im Oktober, dazu gekommen, etwas rund um FLOSS und das Netz zu tun, und zwar wie zuvor auch vor allem an Serendipity.

Serendipity (s9y)

Das Blogsystem Serendipity werkelt auch hinter diesem Blog.

s9y-Kern

  • Ich habe die Ursache eines lange bekannten Problems gefunden, nämlich der “Verstümmelung” automatisch erzeugter E-Mails durch unpassende Zeilenumbrüche mitten im Text. Erschwert wurde das Debugging dadurch, dass dieses Problem nicht überall auftrat und in meinen Testinstallationen nicht reproduzierbar war. Es stellte sich heraus, dass das Verhalten MTA-spezifisch war, d.h. nur auftrat, wenn qmail als Mailserver Verwendung fand. Ursächlich ist das Verhalten der imap_8bit()-Funktion von PHP, auf die s9y - soweit vorhanden - zurückgreift, um den Mailinhalt als quoted-printable zu kodieren. Dabei müssen Zeilenumbrüche eingefügt werden, wofür imap_8bit() die Zeichenfolge \r\n verwendet, also “carriage return” und “line feed”; diese Markierung des Zeilenendes ist unter Windows üblich, wohingegen unter Unix üblicherweise nur \n verwendet wird, und ist auch für die Mailübertragung per SMTP vorgeschrieben. Üblicherweise wird Mail auf einem Unix-Server von PHP aber nicht direkt per SMTP übertragen, sondern an einen Mailserver übergeben, so dass \r\n als Zeilenumbruch nicht zwingend ist. Den meisten Mailservern (so Postfix und Exim) ist das egal; qmail aber beharrt darauf, dass bei ihm eingelieferte Mails als Zeilenende nur mit \n markiert sein dürfen und ersetzt jedes \n für die SMTP-Übertragung durch \r\n. Wurde die Mail bereits mit \r\n eingeliefert, macht qmail dementsprechend daraus \r\r\n, und genau das ist die Quelle der “überzähligen” Zeilenumbrüche (nach der Dekodierung von quoted-printable). An qmail wird sich nichts ändern - wenn jemand das Programm überhaupt noch pflegt -, denn der Autor hält sein Vorgehen für richtig. Ich habe mich daher entschlossen, die Mailerzeugung durch s9y zu ändern; das mag zu Problemen (fehlenden Zeilenumbrüchen) führen, wenn die Mail aus PHP direkt per SMTP übermittelt wird, aber das kommt eigentlich nur unter Windows-Servern vor, und es gibt mit Sicherheit mehr Unix-Server, die qmail verwenden, als Windows-Server, auf denen s9y läuft. In jedem Fall kann man das Problem durch Setzen von serendipity['forceBase64']=true in serendipity_config_local.inc.php umgehen; dann nämlich wird base64 kodiert, und dabei tritt das Problem nicht auf.
    Fix mangling of auto-generated mails.
"FLOSS'n'net - Aktivitäten im 4. Quartal 2019" vollständig lesen