lixx: bounces abfragen

hallo leute,

ich verwende die pear-klasse um newsletter zu verschicken. kann man mit dieser bounces abfragen? also wenn ich damit eine mail an unbekanntemailbox@korrektedomain.com sende, enthält das objekt das dabei erzeugt wird keinen fehler. oder wie geht das im allgemeinen mit php?

lg lixx

  1. echo $begrüßung;

    ich verwende die pear-klasse um newsletter zu verschicken. kann man mit dieser bounces abfragen? also wenn ich damit eine mail an unbekanntemailbox@korrektedomain.com sende, enthält das objekt das dabei erzeugt wird keinen fehler.

    Beim Mailversand wird im Allgemeinen nicht gewartet, bis der Empfänger die Post im Kasten hat. Deswegen gibt es auch keine direkte Erfolgsmeldung. Das Prinzip ist wie bei der gelben Post. Du hast den Brief im Kasten versenkt und damit war der Vorgang erfolgreich. Wenn die Post später feststellt, dass der Empfänger nicht erreicht werden kann, kommt der Brief auf dem normalen Postweg zurück und landet in deinem Briefkasten. Bei der elektrischen Post ist das Prinzip ein ähnliches.

    echo "$verabschiedung $name";

  2. Moin!

    ich verwende die pear-klasse um newsletter zu verschicken. kann man mit dieser bounces abfragen? also wenn ich damit eine mail an unbekanntemailbox@korrektedomain.com sende, enthält das objekt das dabei erzeugt wird keinen fehler. oder wie geht das im allgemeinen mit php?

    Wenn du Bounces abfragen willst, ist zwingend eine existierende Mailbox, an die die Bounces gesendet werden, notwendig, sowie in PHP die IMAP-Extension sowie die Möglichkeit, die Mailbox damit abzufragen. Weiterhin sollte natürlich in irgendeiner Form durch ein eindeutiges und nicht zufällig auftretendes Kennzeichen für PHP erkenntlich sein, dass die in der Mailbox gefundene Mail tatsächlich ein Bounce zu einer gesendeten Mail ist, und nicht irgendein zufällig empfangener Spam etc. Auch Antworten von existierenden Empfängern sollten nicht fehlerkannt werden.

    Mit anderen Worten: Bounces wird man mit PHP nur schwierig herausfinden können. Aber es hilft, dass sich bei Mailadmins allmählich die Erkenntnis durchsetzt, dass Bounces böse sind und unschuldige Mailboxinhaber evtl. ganz böse mit unerwünschten Bounces bombardieren können - also werden sie sowieso eher selten der Fall sein.

    Bleibt noch der Fall, dass der empfangende SMTP-Server den Empfang verweigert. Das kann man mit PHP nur dann direkt feststellen, wenn man eine SMTP-Verbindung zum empfangenden Mailserver herstellt und den SMTP-Dialog selbst abwickelt. In PEAR gibts dafür auch eine Klasse, die die grundlegenden Funktionen bereitstellt. Nur wenn man diese Klasse direkt anspricht, hat man Zugriff auf die entsprechenden Statuscodes, auf die man entsprechend reagieren kann.

    Allerdings ist auch diese Vorgehensweise nicht wirklich schön. Zum einen muß der komplette SMTP-Dialog inklusive Nameserverabfrage nach dem korrekten MX-Host innerhalb der Laufzeit des Skriptes abgewickelt sein. Das ist dann schnell, wenn sowohl der DNS-Server schnell antwortet, als auch der SMTP-Server, und der Mailversand reibungslos funktioniert. Dummerweise dauert das mehrere Sekunden bis Minuten, wenn der DNS-Server keine Antwort schickt, oder der erste Mailserver nicht antwortet (so dass man den zweiten oder dritten Mailserver im DNS ausprobieren muß), oder der Mailversand insgesamt unerwartet verzögert wird (z.B. indem man auf eine Teergrube gestoßen ist).

    Auch das Handling von temporären SMTP-Fehlercodes (4xx), die den Sender (also dann das PHP-Skript) zum Wiederholen des Versandversuches auffordern - nur eben nicht jetzt - fällt dann komplett in die Aufgabe des Programmierers.

    Außerdem kann es durchaus sein, dass der Hoster den Webservern den Zugang zu fremden SMTP-Servern verbietet, um unkontrolliertes Spamming zu verhindern. Dann würde es sowieso nur erlaubt sein, den Mailserver des Hosters zu benutzen - dieser aber hat keine Kenntnis über die Existenz von Mailboxen auf anderen Mailservern, sondern nimmt die Mail grundsätzlich erst einmal an - so dass im Zweifel von diesem Mailserver im Fehlerfall doch wieder ein Bounce generiert wird.

    Deshalb ist es für die allermeisten Fälle durchaus schlau, den Mailversand der Funktion mail() zu überlassen (bzw. die PEAR-Klasse so zu nutzen, dass mail() benutzt wird), weil dann sämtliche Fehlerbehandlung, Queuespeicherung, MX-Selektion und Wiederholung der Mailversuche vom lokal dafür eingerichteten Mailserver geleistet wird, ohne dass man sich darum kümmern muß.

    Und für Dinge wie Mailinglisten empfiehlt sich, darauf ausgerichtete Software zu benutzen, die sich in den Mailserver integriert bzw. an seine Schnittstellen andockt und solche Dinge wie Bounces automatisch registriert und passend behandelt.

    Das _kann_ auch PHP sein, wenn man die Kommandozeilenversion benutzt, die Schnittstellen des Mailservers kennt, und entsprechend auf dem Server operieren kann (root-Account o.ä.).

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. danke mal, für's erste, sven!

      ich muß mir das noch einmal genauer durchlesen, aber einige interessante infos habe ich darin schon endeckt und hilft mir sicher weiter.

      lg lixx