bounces parsen (mail delivery)

gtphreak

Grünschnabel
Vorweg: ich bin am Ende (nervlich) !!

ich seh nur noch code snippets und status meldungen vorm inneren auge..

also mein problem:

Kennt jemand ne gute möglichkeit zurück gebouncte mails unabhängig vom MTA zu parsen ?
auf die mails greif ich per fsockopen bzw. pop3 zurück..
klappt wunderbar (dank return-path und dem 5. mail() parameter)

da ich ein relativ komplexes cms entwickle, muss dieses auch universell auf jeglichem php-server funktionieren.

mein problem ist je nach eingestztem mailer gibbet nen unterschiedlichen delivery-report. Da ja in den headern kein Fehlercode wie z.B.: 550 angezeigt wird (oder auch gern mal Status: 5.1.1) komm ich langsam in Schwulitäten:(

Also nochmal: wie krieg ich unabhängig vom eingestzten system die email die auf einem bestimmten (von mir definierten und nur für bounce-mails zuständigen) EMail-Konto durchgeparst (den Fehler-Status den ich mir dann bequem für eine umfassende Statistik-Funktion zunutze machen kann ...550... 553.. etc..)

Danke im voraus!!

Argh.. ich werde verfolgt von RFCs..

Wirr im Kopf,
phreak
 
Das man hier immerhin nach 1,534746955859969558599695585997 Jahren tatsächlich ne Antwort erhält ist ja enorm!

P.S.: Ich hab das Problem so gelöst, dass ich es einfach gelassen hab (muss jetzt halt mit dem MTA klar kommen und das Script ggf. angepasst werden) ;)
 
Zuletzt bearbeitet:
Du hast es gut ich muss das Problem lösen.

Einen Ansatz hab ich ja schon nur kommen noch andere kleine Probs.

Na ja viel Spass noch
 
Ich würde dir empfehlen mal eine Liste aller möglichen Error-Response Codes aufzustellen (5.1.1 oder 550 ...) um dann eine gute regular expression aufstellen zu können. DIe dann darüber jagen und gut ist (wenn das überhaupt noch dein Problem ist..).

Wenn sonst noch was hakt schreibs hier rein, ich habs ja schliesslich schon fertig ;)
 
Nein das Problem ist das die Internet Provider ihre Bounces in verschieden Formen zurück schicken.

In manche steht dann nur: Postfach nicht gefunden
Andere wiederrum geben den Fehler Code im Header der Mail mit.
Oder was ganz anderes ist z.B. wenn ein Auto-Responder eine Urlaubsbenachrichtigung zurück gibt.

Leider gibt es da noch kein genormten Standard.

Und je nach Grund des Bounces soll dann mein Script entscheiden können ob der Empfänger aus dem Mail-Verteilerkreis geworfen wird oder einfach nur nicht erreicht werden konnte.

Also ich glaub daran werde ich mir die Zähne ausbeissen.

Trotzdem danke für dein Hifle Angebot
 
Ich weiss ja nicht in welchem Rahmen bzw. Größenordnung du dein Projekt planst, aber solange du nicht international damit Besucher auf deine Seite ziehst, würde ich nach und nach die Regular Expressions anpassen für jeden Fall den du noch nicht abfängst (soooo viele unterschiedliche Responses kann es ja dann auch nicht geben)
Hier mal mein Ansatz:

PHP:
//parsen des fehlercodes (im $mail["body"] -wer hätts gedacht- steht der "rohe" Body der Mail)
preg_match("/Status:.(.+)\r\n/i",$mail["body"],$errors[$i]['fehler']);
$errors[$i][fehler]=$errors[$i][fehler][1];
			
switch ($errors[$i][fehler])
{
	case "5.1.1" or "5.1.2" or "5.1.3" or "5.5.3" or "5.1.6":
		$wrongemail = 1;
		break;
	case "5.2.2" or "5.3.1":
		$postboxfull= 1;
		break;
	default:
	  $unknown=1;
	break;
}

Ich hoffe das hilft (glaub ich zwar eher kaum.. aber was solls ;))
 
Das könnte mir ja wenigstens einen denk Ansatz geben.

Danke für deine Hilfe.

P.S. das ding soll für ein paar tausend Mails funktionieren
 
Zurück