Bounce-Mails automatisch auslesen/auswerten?

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Hi,

ich schicke mehrmals im Jahr Massenmails an meine Mitglieder (benutze dazu den Mod "Mega Mail").
Dann korrigiere ich anhand der Bouncemails die Einträge in der DB und habe für Bouncemail-Mitglieder im ACP die User-Einstellung "Muss Mailadresse korrigieren". dies führt dazu, dass das Mitglied nur begrenzten Zugang zu den Funktionen hat, bis die Mailadresse geändert wurde.

Das ist mühselig.
Heute habe ich knapp 300 Bouncemails bekommen (die Mail ging an 25.000 Mitglieder raus).
Einige dieser Bouncemails sind Zusammenfassungen von 20-50 Mailadressen, die nicht mehr aktuell sind.

Ist also eine Höllenaufgabe, diese alle zu "Flaggen".

Kann man dies irgendwie automatisieren?
Natürlich müsste das Regelbasiert passieren, da auch viele Out-of-Office-Meldungen dabei sind, die nicht behandelt werden sollen.

Gruss
Holger
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?g

Beitrag von oxpus »

Oha, keine so leichte Aufgabe.

Man müsste erst einmal die E-Mails klassifizieren. Eben wie du schon richtig sagtest, sind z. B. u. a. die Abwesenheiten auszufiltern.
Das wäre der erste Regelsatz.
Und dann müsste man aus dem Rest die E-Mail-Adressen rausfischen, um diese dann weiter verarbeiten zu können.
Wobei dabei die Frage ist, ob der ursprüngliche Header mit zurückkommt oder die Adresse irgendwo im Text steht...

Das sind, gerade für E-Mail-Adressen keine gar so einfachen regulären Ausdrücke...

Letztlich wären dann alle nicht eindeutig zugeordneten E-Mails auch irgendwo anzuzeigen, um diese manuell abzuarbeiten.

Da stellt sich aber noch eine andere grundsätzliche Frage: Wie kommt man überhaupt an die E-Mails dran?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Naja, es lässt sich eine separate Mailadresse einrichten, so eine Reply-To-Adresse.
Und es gibt ja jetzt schon Mods, die ein Postfach abfragen, z.B. Mail2Forum.
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Meistens enthält die Mail die zurückkommt folgendes:
This is the mail system at host mailserver.domain.tld.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<mailadresse>: host mailserver.domain.tld[IP] said: 551
<mailadresse> is a deactivated mailbox (in reply to RCPT TO command)

Final-Recipient: rfc822; mailadresse
Original-Recipient: rfc822;mailadresse
Action: failed
Status: 5.0.0
Remote-MTA: dns; mailserver.domain.tld
Diagnostic-Code: smtp; 551 <mailadresse> is a deactivated mailbox
Manchmal mit
Status: 5.2.2 (mailbox full) smtp; 552 RCPT TO:<mailadresse> Mailbox disk quota exceeded
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von oxpus »

Wenn die E-Mails nicht sofort abgeholt werden, kann man das auch direkt aus dem Postfach vom Server holen und prüfen.
Aber wenn sie erst einmal weg sind, geht es ja nun mal nicht mehr.
Daher meine Frage, wie die E-Mails zur Prüfung kommen können.
Und irgendwann willst du ja auch die "echten" E-Mails haben, oder?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
MADxHAWK
Beiträge: 132
Registriert: Mi 15.Nov, 2006 13:40
Wohnort: Bonn
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von MADxHAWK »

Hi,

das ganze könnte eventuell folgendermassen klappen:

Beispielcode:

Code: Alles auswählen

$subject ="
This is the mail system at host sp01.blablubb.de.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<fubar@foo.at>: Host or domain name not found. Name service error
    for name=foo.at type=A: Host found but no data record of requested
    type
<placeholder@domain.bar> is a deactivated mailbox
<mustermann@blablubb.de> Benutzer hat zuviele Mails auf dem Server.

";

preg_match_all('/(<(?:[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])>)((: Host or domain name not found.)|( is a deactivated mailbox))/i', $subject, $result, PREG_PATTERN_ORDER);

print_r($subject);

echo "\n\n";

print_r($result[1]);
Ausgabe:
This is the mail system at hostsp01.blablubb.de.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<fubar@foo.at>: Host or domain name not found. Name service error
for name=foo.at type=A: Host found but no data record of requested
type
<placeholder@domain.bar> is a deactivated mailbox
<mustermann@blablubb.de> Benutzer hat zuviele Mails auf dem Server.



Array
(
[0] => <fubar@foo.at>
[1] => <placeholder@domain.bar>
)
<mustermann@blablubb.de> Benutzer hat zuviele Mails auf dem Server.
Wurde nicht erkannt da die Mailbox "nur" voll ist. Wobei volle Mailboxen auch auf inaktivität deuten können ;)


In diesem Teil der Regexp:

Code: Alles auswählen

((: Host or domain name not found.)|( is a deactivated mailbox))
kannst du die entsprechenden Statusmeldungen die erkannt werden noch erweitern, jeweils in Klammern und getrennt durch |

Beim durchlaufen des Arrays mit den Mailadressen musst du dann jedoch noch die < und > entfernen.

Die Regexp zur Erkennung der Mailadresse ist übrigens nicht von mir, die habe ich mal irgendwo gefunden als ich nach einer Möglichkeit gesucht habe Mailadressen zu "validieren" ich habe die nur entsprechen "erweitert" Ich fürchte jedoch, wenn Du 300 Bouncemails abrufen willst könnte dies zu einem Laufzeitproblem werden.

Gruss
Martin
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Eventuell kann man ja die Mails einzeln abrufen, verarbeiten, löschen und dann die nächste.

Das postfach könnte man ausschliesslich für Bouncemails verwenden, z.B. mit der Mailadresse bounce@domain.tld
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von oxpus »

Willst du denn die E-Mails dahin weiterleiten? Auch nicht gerade ohne...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Gibt ja 2 Möglichkeiten:
1) man schickt die Massemail mit dem Absender bounce@domain.tld und hat dann die Rückläufer separiert
oder
2) man leitet mit Hilfe von GMail-Filter die Mails mit den Fehlermeldungen an eine andere separate Mailadresse (anderes Konto) weiter

Oder?
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von oxpus »

Nun ja, an wen senden denn die Absender? Doch wohl an z. B. die Board-Adresse wie noreply@domain.tdl.
Also müsste man dann auch dort die Bounce-Mails abholen, oder nicht ;)

Klar sein müssten dann aber 2 Dinge:
Entweder alle nicht als Bounce-Mail erkannten E-Mails würden verworfen oder an eine fest definierte E-Mail weitergeleitet...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Naja, ich kann ja in dem Moment die Board-Adresse ändern, sodass sie die Bounceadresse ist.
Nach dem Versand kann die Adresse ja wieder zurückgestellt werden.
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von oxpus »

Das wäre auch eine Möglichkeit...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Problematisch könnten die Mails mit zusammangefassten Fehlermeldungen werden:
Hi. This is the qmail-send program at webapp01.gremminger.g30.se.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

<abc@hotmail.se>:
65.55.37.72 does not like recipient.
Remote host said: 550 Requested action not taken: mailbox unavailable
Giving up on 65.55.37.72.

<def@hotmail.com>:
65.54.188.72 does not like recipient.
Remote host said: 550 Requested action not taken: mailbox unavailable
Giving up on 65.54.188.72.

<ghi@bredband.net>:
195.54.106.237 does not like recipient.
Remote host said: 550 #5.1.0 Address rejected ghi@bredband.net
Giving up on 195.54.106.237.

<jkl@hotmail.com>:
65.54.188.94 does not like recipient.
Remote host said: 550 Requested action not taken: mailbox unavailable
Giving up on 65.54.188.94.

--- Below this line is a copy of the message.

Return-Path: <boardmail@domain.net>
Received: (qmail 5106 invoked by uid 48); 19 Dec 2011 04:08:48 -0500
To:
Subject: God Jul och Gott Nytt År från oss på Maskinisten!
Reply-to: webbmaster@maskinisten.net
From: webbmaster@maskinisten.net
Message-ID: <a23e64d88de8d26fea44a9fc7614d8a2@www.domain.net>
MIME-Version: 1.0
Content-type: text/plain; charset=utf-8
Content-transfer-encoding: 8bit
Date: Mon, 19 Dec 2011 04:08:47 -0500
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: PHP
X-MimeOLE: Produced By phpBB2
X-AntiAbuse: Board servername - www.domain.net
X-AntiAbuse: User_id - 3
X-AntiAbuse: Username - Meine UserNick
X-AntiAbuse: User IP - 193.201.169.187


Detta är ett meddelande från administratören av "Domain". Om meddelandet är
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Wenn ich darüber nachdenke ... es würde ja auch ein Script reichen, das aus einem Textfeld "einfach" aus der Syntax <Adresse>: die Adresse rausfiltert und abarbeitet.
Dann müsste man nur die Fehlermails öffnen, den Text in das Feld kopieren und abschicken ...
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von oxpus »

Ja nicht nur "die" Adresse, in deinem letzten Beispiel gerade die nicht, sondern die Adressen laut E-Mail-Text...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
MADxHAWK
Beiträge: 132
Registriert: Mi 15.Nov, 2006 13:40
Wohnort: Bonn
Kontaktdaten:

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von MADxHAWK »

Ich denke eines der größten Probleme dürfte sein, dass die Rückmeldungen scheinbar nicht standartisiert sind.

Ich habe mal meine mails vom Mailerdeamon durchgeschaut und war erstaunt wie unterschiedlich doch teilweise die Rückmeldungen bei z.B. unbekannter Empfänger sein können. Der statuscode ist entweder 550 oder 554 wobei 550 eben auch eine volle Mailbox abdeckt.

Man müsste also wirklich nach dem Fehlermeldungstext gehen. Somit wird es schon schwierig.

Einfacher würde es schon, wenn man ein Formular nimmt und in eine Textarea alle Meldungen wie diese
<abc@hotmail.se>:
65.55.37.72 does not like recipient.
Remote host said: 550 Requested action not taken: mailbox unavailable
Giving up on 65.55.37.72.
kopiert. Also im Grunde eine Vorauswahl der Mailadressen trifft. Die Mailadressen, welche nur eine Volle Mailbox haben werden nicht mitkopiert oder später rausgelöscht.

Daraus dann die Mailadressen zu extrahieren und in ein Array zu packen wäre dann nichtmehr so problematisch.

-MAD
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Re: Bounce-Mails automatisch auslesen/auswerten?

Beitrag von Holger »

Genau das meinte ich ...
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Antworten