PHP PHP-Mail - nicht versendete Mails

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
846
Hallo,

ich versende Newsletter an meine User via "PHP-Mail". Diese werden ja serverseitig verschickt, und somit bekomme ich an meine E-Mail keine Rückantwort, ob es die E-Mail überhaupt noch gibt oder ob deren E-Mail-Postfach einfach voll ist. Die schönen Abwesenheitsantworten bekomme ich.

Meine Frage ist daher, wo finde ich eine Liste auf meinem Root-Server und wie kann ich diese mit meiner Datenbanktabelle (mysql) möglichst automatisch abgleichen, um diese E-Mails, die nicht zugesendet werden konnten, zu löschen?

Ich möchte das deswegen machen, weil ich u.a. bei hotmail.de schon auf der Blackliste stand, bei web.de ständig im Spamordner landet. Ich denke, das die Ursache davon kommen könnte.

Über Quellen oder Hinweise wäre ich sehr dankbar. Danke!
 
Normalerweise gibts einen Mailer-Daemon welcher dich benachrichtigt zwecks Email status.
Was hast du den für ein OS und Mailserver usw?
 
OS: debian 6.0

Bzgl. Mailserver müsstest du mir bitte auf die Sprünge helfen, wo ich dessen Namen finde.
 
Root Server und keine Ahnung sind schon 2 Dinge, die wunderbar funktionieren [/Ironie]

Ich vermute daher das dein PHP Script auch keinen Standard Mail Header zusammenbaut, sondern, dass du nur minimale Informationen mitgibst. Hast du z.B. überhaupt eine Rückantwortadresse angegeben? Das du bei einigen Mail Server gesperrt bist wird sicherlich kaum daran liegen, dass du mal ein paar Emails sendest, die nicht ankommen. Wie sieht deine Reputation deiner Domain aus? Wie sieht dein Script im Detail aus?
 
Hier mein PHP-Script:

PHP:
$email_adressen="[I]Absender[/I]";
$emails_in_array=explode("||",'[I]Empfänger[/I]');
$betreff="[I]Betreff[/I]";
$text="[I]E-Mail-Text[/I]";
$header = 'From: [I]E-Mail-name[/I] <[I]Absender[/I]>' . "\n";
$header .= 'MIME-Version: 1.0' . "\n";
$header .= 'Content-Type: text/plain; charset=iso-8859-1' . "\n";


foreach($emails_in_array as $email)
{
  mail($email, $betreff, $text, $header);
  print " Erfolg: Mail an $email wurde verschickt <br>";
}
Ergänzung ()

tRITON schrieb:
Das du bei einigen Mail Server gesperrt bist wird sicherlich kaum daran liegen, dass du mal ein paar Emails sendest, die nicht ankommen.

Sondern?
 
Das sagt deine Reputation bei den einschlägigen SPAM-Listen aus. Musst du dich halt mal rein arbeiten. Das kann von falschen DNS Einträgen für den Mailer bis Virus Befall vom versendeten Rechner gehen.

http://www.spamhaus.org/
http://www.spamcop.net/
http://www.abuse.net/

sind mal ein paar, wo du prüfen kannst, was man über dich so sagt im Internet.

Du kannst solltest auch in deinen Header einen "'Reply-To:" angeben, damit du benachrichtigt wirst. Außerdem, wenn ich das richtig im Kopf habe sollte es ein "\r\n" sein, für einen RFC konformen Header sein.
 
Zuletzt bearbeitet:
Danke für die Webseiten. Schaue ich mir nach diesem Beitrag direkt mal an.

"Reply-To" brachte mir kein Erfolg. Eine Testmail an eine nicht vorhandene Adresse, brachte mir keine Rückinfo an die E-Mail, die ich bei "Reply-To" angegeben habe.
 
Hast du mal in deinen ROOT Account und in dessen Mails geschaut? Ggfls. musst du auch mal in die Konfiguration deines Email Server schauen Stichwort: undeliverable mail

Wenn diese Funktion nicht abgeschaltet ist sollten sie zumindest beim root auflaufen.
 
tRITON schrieb:
Hast du mal in deinen ROOT Account und in dessen Mails geschaut? Ggfls. musst du auch mal in die Konfiguration deines Email Server schauen Stichwort: undeliverable mail
Soeben im PLESK gefunden und eingestellt. Keine Besserung.

tRITON schrieb:
Wenn diese Funktion nicht abgeschaltet ist sollten sie zumindest beim root auflaufen.
U.a. war das die Frage meines ersten Beitrages. Wo läuft es auf?
Ergänzung ()

Aus der php.ini

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =
 
Es ist ganz einfach: Mails die per mail() verschickt wurden erhalten von den gängigen Spamfiltern (z.B. Spamassassin) ein deutlich höheres Spamrating als welche, die korrekt über SMTP verschickt wurden. Das kann bis zu 2 Spampunkte ausmachen, bei einem gängigen Block-Level von 4 bis 5 fehlt hier nicht mehr viel bis zur Versenkung.... und mittelfristig zu nem Eintrag bei den großen Blacklists für deinen gesamten Server.

Nebenbei löst SMTP auch dein Problem mit den nicht zustellbaren Mails: sie landen im Posteingang des Mailkontos, dessen SMTP du für den Versand nutzt.

Wenn du hingegen weiterhin unbedingt mail() verwenden willst, dann kannst du nur mal in /var/mail/ gucken, was so rum liegt. Oder du könntest ein Commandline-Mailprogramm wie mutt mal direkt als Root starten udn gucken, was rum liegt.
SMTP ist aber hinten und vorn die bessere Lösung.
 
Danke Daaron. So stelle ich mir Hilfe vor. Nicht an der Unwissenheit des Fragenden rummeckern oder dreist ironieren (wie tRITON), sondern einfach helfen. Danke danke danke. :) Genau diese Info brauchte ich.
 
Zurück
Oben