Sendmail verschiebt Mails in Warteschleife

manumunich

New Member
Hallo!

Ich habe ein Problem mit dem e-Mail Versand per PHP-Skript bzw. genauer via Sendmail.
Ich besitze einen Apache2 Server mit statischer IP, Sendmail ist konfiguriert und arbeitet auch.
Jahrelang hat das PHP Skript die e-Mails einwandfrei verschickt und jetzt funktioniert dies seit einigen Tagen nichtmehr. Aus den LogFiles lese ich folgendes heraus:
1. Das PHP Skript gibt die e-Mail problemlos an Sendmail weiter
2. Sendmail versucht zu senden, es klappt aber nicht
3. Die e-Mail landen in der Warteschlange
4. Interner e-Mail Versand funktioniert einwandfrei

Mein Problem aufgrund dessen das mehrere Leute zugriff zum Server haben: ich weiß nicht wer wann was geändert hat. Vermutlich war es nur ein Update in den letzten Tagen o.ä.
Um das herauszufinden und natürlich auch um zu sehen was mit Sendmail nicht funktioniert benötigte ich Hilfe.
Die Logfiles des Apache bin ich alle schon durchgegangen und habe nichts gefunden was mir bei dem Sendmail Problem weiterhilft.
Daher meine Frage: wo kann ich sehen was mit Sendmail nicht stimmt? Da muss es doch auch eine Art Logfile geben, oder nicht?

Hier noch ein Auszug aus der Syslog:

Code:
Oct 31 18:26:22 cad sendmail[27889]: o9VHQMvd027889: from=www-data, size=1091, class=0, nrcpts=1, msgid=<201010311726.o9VHQMvd027889@servername.de>, relay=www-data@localhost
Oct 31 18:26:22 cad sm-mta[27890]: o9VHQMsC027890: from=<www-data@servername.de>, size=1339, class=0, nrcpts=1, msgid=<201010311726.o9VHQMvd027889@servername.de>, proto=ESMTP, daemon=MSP-v4, relay=localhost [127.0.0.1]
Oct 31 18:26:22 cad sm-mta[27890]: o9VHQMsC027890: to=<test@gibtesnicht.de>, delay=00:00:00, mailer=esmtp, pri=31339, dsn=4.4.3, stat=queued
Oct 31 18:26:22 cad sendmail[27889]: o9VHQMvd027889: to=test@gibtesnicht.de, ctladdr=www-data (33/33), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31091, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9VHQMsC027890 Message accepted for delivery)
 
Last edited by a moderator:
Bleiben die Mails wirklich dauerhaft in der Queue oder werden die später doch noch ausgeliefert? Was passiert, wenn du die Queue von Hand abarbeiten läßt:

Code:
# sendmail -q -v

Kommt da eine Meldung zum DNS?
 
Vielen Dank für die Antwort! Ich konnte es gerade ja selbst kaum glauben, aber mit dem Befehl wurde die Liste komplett abgearbeitet und ich hatte sofort die Mails an mich auch in meinem Postfach liegen. Funktioniert einwandfrei :-)
Jetzt nur meine Frage: was kann denn noch fehlerhaft eingestellt sein? Obwohl es funktioniert bin ich genauso schlau wie zuvor...
 
Also funktioniert es im Prinzip schon. Das sieht jetzt nach zwei Problemen aus. Einmal wird die Mail zwar angenommen, aber dann in die Queue geschoben. Das könnte so konfiguriert sein, kann aber auch an der CPU-Last des Servers liegen. Schau mal mit uptime, ob das Load Average zu hoch ist. Ansonsten wäre es hilfreich, wenn wir die Antwort von Sendmail bei der Annahme der Mail mal sehen. Poste mal den Output von:

Code:
# mailx -v -s Test test@gibtesnicht.de </dev/null
 
Hier die Ausgabe von Uptime:

20:52:57 up 49 days, 10:51, 1 user, load average: 0.00, 0.00, 0.00

Autput von mailx:

Null message body; hope that's ok
test@gibtesnicht.de... Connecting to [127.0.0.1] port 587 via relay...
220 Serveradresse.de ESMTP Sendmail 8.13.8/8.13.8/Debian-3; Wed, 3 Nov 2010 20:54:38 +0100; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
>>> EHLO Serveradresse.de
250-Serveradresse.de Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> MAIL From:<root@Serveradresse.de> SIZE=39 AUTH=root@Serveradresse.de
250 2.1.0 <root@Serveradresse.de>... Sender ok
>>> RCPT To:<test@gibtesnicht.de>
>>> DATA
051 gibtesnicht.de: Name server timeout
050 <test@gibtesnicht.de>... Transient parse error -- message queued for future delivery
051 gibtesnicht.de: Name server timeout
051 gibtesnicht.de: Name server timeout
250 2.1.5 <test@gibtesnicht.de>... Recipient ok (will queue)
354 Enter mail, end with "." on a line by itself
>>> .
050 <test@gibtesnicht.de>... queued
250 2.0.0 oA3JscTN011847 Message accepted for delivery
test@gibtesnicht.de... Sent (oA3JscTN011847 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 Serveradresse.de closing connection
 
051 gibtesnicht.de: Name server timeout
050 <test@gibtesnicht.de>... Transient parse error -- message queued for future delivery
051 gibtesnicht.de: Name server timeout
051 gibtesnicht.de: Name server timeout
250 2.1.5 <test@gibtesnicht.de>... Recipient ok (will queue)

Und? Nachdem das tatsächlich wie ein DNS Problem aussieht, hast du das mal versucht einzukreisen? Kannst du auf der Maschine selber denn Host- oder Domainnamen auflösen? Wieviele Nameserver stehen in /etc/resolv.conf drin? Antworten die alle? Können die auch gibtesnicht.de auflösen? Welche Rechte hat /etc/resolv.conf und wann wurde die das letzte Mal geändert? Was hat sich vor dem Auftreten des Fehlers in /etc/mail verändert?
 
Habe leider noch wenig Erfahrung, daher bin ich noch nicht allzu weit gekommen was das einkreisen des Problemes angeht. Hier mal meine bisherige Auswertung:

> Den Domainnamen aufzulösen funktioniert auf der Maschine einwandfrei
> In /etc/resolv.conf steht genau eine Adresse drin, also ein Server
>> Dieser Nameserver kann gibtesnicht.de einwandfrei auflösen
> /etc/resolv.conf hat alle Rechte (also 777) und zeigt als letztes Änderungsdatum 2006 an (liegt schon ne ganze Weile zurück...)
> Die letzte Änderung in /etc/mail liegt schon 1,5 Monate zurück. Damals hat sich sendmail.cf und sendmail.cf.errors verändert

In sendmail.cf.errors steht folgendes:
*** ERROR: FEATURE() should be before MAILER()
*** MAILER(`local') must appear after FEATURE(`always_add_domain')*** ERROR: FEATURE() should be before MAILER()
*** MAILER(`local') must appear after FEATURE(`allmasquerade')*** ERROR: FEATURE() should be before MAILER()
 
Mir erscheint das mit nur einem Nameserver doch verdächtig. Kannst du da mal noch einen oder zwei weiteren Server von deinem Provider eintragen? Oder alternativ die Server von Google (8.8.8.8 und 8.8.4.4) nur mal zum testen?

Die Fehler aus der sendmail.cf.errors bekommst du übrigens weg, wenn du die MAILER-Zeilen in der Config ans Ende schiebst.
 
So, mittlerweile habe ich es geschafft auf unserem kleinen Studentenserver mehrere Nameserver einzutragen. Ich habe erstmal die drei eingetragen die vom Rechenzentrum an das wir angeschlossen sind, empfohlen wurden. Abschließend auch noch die von Google, funktioniert aber alles immer noch nicht.
Die Mails landen immernoch in der Warteschleife und können nur per Hand (sendmail -q -v) versendet werden.

Hier der Eintrag in der resolv.conf:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 129.187.244.11
nameserver 129.187.19.183
nameserver 141.40.9.211
nameserver 193.136.2.123
nameserver 183.19.187.129
nameserver 8.8.8.8
nameserver 8.8.4.4

Und hier mal wieder der Test mit 'mailx -v -s':

user@servername:~$ mailx -v -s Test email@email.de </dev/null
Null message body; hope that's ok
email@email.de... Connecting to [127.0.0.1] port 587 via relay...
220 servername.de ESMTP Sendmail 8.13.8/8.13.8/Debian-3; Tue, 9 Nov 2010 21:55:13 +0100; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
>>> EHLO servername.de
250-servername.de Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> MAIL From:<user@servername.de> SIZE=39 AUTH=user@servername.de
250 2.1.0 <user@servername.de>... Sender ok
>>> RCPT To:<email@email.de>
>>> DATA
051 email.de: Name server timeout
050 <user@email.de>... Transient parse error -- message queued for future delivery
051 email.de: Name server timeout
051 email.de: Name server timeout
250 2.1.5 <email@email.de>... Recipient ok (will queue)
354 Enter mail, end with "." on a line by itself
>>> .
050 <email@email.de>... queued
250 2.0.0 oA9KtDl3032418 Message accepted for delivery
email@email.de... Sent (oA9KtDl3032418 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0servername.de closing connection

Habt ihr vielleicht irgendwelche Ideen? Und kann mir jemand sagen mit welchen Befehl ich Einträge wieder aus der resolv.conf löschen kann? Außerdem noch eine weitere Frage: wäre es möglich die e-Mail per e-Mail Account o.ä. zu versenden und diese Konfigurationsgeschichte damit zu umgehen? Vielen Dank schonmal!
 
Last edited by a moderator:
Das Problem hat sich erledigt! Ich hatte vergessen Sendmail neuzustarten und seit ich dies getan habe funktioniert nun wieder alles einwandfrei! Vielen Dank für eure Antworten.
Nun bleiben noch offene zwei Fragen: wie kann ich wieder Nameserver aus der Liste entfernen und kann ich irgendwo sehen welcher von den eingetragenen Nameserver verwendet wird zum versenden?
 
Wie hast du die Nameservereinträge da denn rein gemacht? So würde ich die auch wieder raus nehmen. Wenn du dich am Hinweis auf resolvconf(8) störst: das hat seine Konfiguration unter /etc/resolvconf/... Da sollte sich die Stelle finden lassen, wo die ganzen Nameserver in einer Datei stehen und die kannst du dann reduzieren.

Welcher Nameserver genau für eine Abfrage genutzt wird, läßt sich so ohne weiteres nicht sagen. Die werden IMHO von oben nach unten abgearbeitet, weshalb ich drei davon drin lassen würde.
 
Back
Top