Seite 1 von 1

Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Mo 19.Dez, 2011 11:53
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

Re: Bounce-Mails automatisch auslesen/auswerten?g

Verfasst: Mo 19.Dez, 2011 14:13
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?

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Mo 19.Dez, 2011 15:07
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.

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Mo 19.Dez, 2011 15:56
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

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Mo 19.Dez, 2011 18:25
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?

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Mo 19.Dez, 2011 19:19
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

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Di 20.Dez, 2011 08:58
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

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Di 20.Dez, 2011 10:13
von oxpus
Willst du denn die E-Mails dahin weiterleiten? Auch nicht gerade ohne...

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Di 20.Dez, 2011 11:51
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?

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Di 20.Dez, 2011 18:23
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...

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Di 20.Dez, 2011 20:05
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.

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Di 20.Dez, 2011 21:09
von oxpus
Das wäre auch eine Möglichkeit...

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Do 22.Dez, 2011 11:17
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

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Do 22.Dez, 2011 11:21
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 ...

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Do 22.Dez, 2011 17:41
von oxpus
Ja nicht nur "die" Adresse, in deinem letzten Beispiel gerade die nicht, sondern die Adressen laut E-Mail-Text...

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Do 22.Dez, 2011 18:32
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

Re: Bounce-Mails automatisch auslesen/auswerten?

Verfasst: Do 22.Dez, 2011 18:56
von Holger
Genau das meinte ich ...