PEAR Mail: sendmail -i "Ueberreaktion"

Galanos

Galanos

Aktives Mitglied
Thread Starter
Dabei seit
19.12.2005
Beiträge
625
Reaktionspunkte
23
Hallo :)

"Too-Long-Didn't-Read" ganz unten.

*aushol* Unser Script (Bestellprozess Online-Shop) verschickt Mails mittels dem PEAR-Package "Mail":
http://pear.php.net/package/Mail

Praktischerweise kann man mit der Klasse das gewuenschte Backend auswaehlen: mail(), SMTP oder sendmail.
Aus mir nicht mehr nachvollziehbaren, aber damals gewichtigen Gruenden haben wir uns vor 2 Jahren fuer sendmail entschieden. Bisher lief auch alles reibungslos.

Neulich kam jedoch eine (vom Script gesendete) Mail rein, die mit dem Text des vom Kunden frei befuellbaren Hinweisfelds unerwartet endete. Eigentlich folgt da noch eine ganze Latte Daten und am Schluss zwei PDFs.

Ein Blick in die Datenbank zeigte, dass der Kunde nur einen simplen Punkt in das Hinweisfeld geschrieben hatte. Eine halbe Stunde spaeter fand ich heraus, dass jener Teil des Mail-Bodys, der einem alleine in einer Zeile stehenden Punkt folgt, einschliesslich des Punktes "geflusht" wird und nicht beim Mail-Empfaenger ankommt.

Der eine oder andere haette vielleicht solche offensichtlich unbeabsichtigten Ausnahmefaelle seitens der Kundschaft einfach rausge-regexp't, aber ich denke, ihr koennt nachvollziehen, dass ich dann nicht mehr haette ruhig schlafen koennen, stimmt's?

Wir hatten uns Muehe gegeben, die Formularverarbeitung so sicher wie irgend moeglich zu machen (Code-Injektionen auszuschliessen), also schweiften meine Vermutungen zuerst in Richtung diffuser Zeichensatzprobleme, moeglicherweise in Zusammenhang mit String-verarbeitenden Funktionen.

Nach ein paar Stunden Herumprobieren, Extrahieren und Reduzieren des zentralen Codes kam ich auf den Trichter, dass das verwendete PEAR-Mail (auch nach einem Update) einen Bug haben koennte. Beim weiteren Testen kam heraus, dass ein Wechsel des Backends auf PHPs eigenes mail() den Fehler nicht verursacht.

Problem also eingegrenzt. Wie sich herausstellt, uebergibt PEAR Mail standardmaessig den Parameter "-i" an sendmail:
http://pear.php.net/manual/en/package.mail.mail.factory.php schrieb:
$params["sendmail_args"] - Additional parameters to pass to the sendmail. Default is -i.
http://linux.about.com/od/commands/l/blcmdl8_sendmai.htm schrieb:
Ignore dots alone on lines by themselves in incoming messages. This should be set if you are reading data from a file.

Tja, nur wie kommt es, dass nicht nur der Dot, sondern der darauf folgende Text ignoriert wird? Bug oder Feature? :)

„Okay, super, nur die PDFs werden aus der Datei gelesen, also einfach raus mit dem Parameter!“ dachte ich mir. Nur, wie machen? Muss ich dafuer am PEAR-Package rumfummeln? "-bm" negiert das "-i" anscheinend nicht …

Diese beiden letzten Absaetze sind meine eigentlichen Fragen :)

TL;DR: Wie hindere ich PEAR Mail daran, den Parameter "-i" automatisch an sendmail zu uebergeben?

Vielen Dank! Gala
 
Ich habe schon mal in die Scripts reingeschaut und auch den Eintrag mit dem Standard-Parameter gefunden – danke dir.

Wie geschrieben, ich erinnere mich nicht mehr, warum wir sendmail genommen hatten, aber SMTP hatte irgendeinen Nachteil … Vielleicht wegen des Error Handlings? Oder der Authentifizierung? Mir will es nicht mehr einfallen, sorry.
 
Zurück
Oben Unten