In einer Unternehmensumgebung haben wir einen Mailserver, für den nur die Ports 25/TCP und 587/TCP verfügbar sind.
Wenn wir Perl-Skripte (mit HTML::Mail) verwenden, um Hunderte legitimer E-Mails zu senden, schlägt dies gelegentlich mit der Meldung „Verbindung zum Mailserver fehlgeschlagen“ fehl.
Wir sind der Meinung, dass die hohe Belastung des Sendmail-Servers dazu führt, dass dieser die Verbindung ablehnt oder möglicherweise nicht einmal auf die ursprüngliche Anfrage reagiert.
Nun zeigt sich das Team, dem der Mailserver gehört, nicht kooperativ und verlangt einen Nachweis dafür, dass der Server die Verbindung abgelehnt hat.
Frage: Welche Informationen können im Fehlerfall clientseitig gesammelt werden, vorausgesetzt, das Problem liegt serverseitig vor? Wie kann nachgewiesen werden, dass das Problem serverseitig liegt, sofern dies tatsächlich der Fall ist?
[[Ich bin nicht sicher, ob diese Frage hier berechtigt ist. Ich kann nicht um Hilfe bei der Lösung des Problems bitten, wenn das Problem selbst nicht klar ist. Ich bitte um eine kurze Liste mit Tipps und Tricks zur Fehlerbehebung. Ich wäre sogar für Vorschläge zu Problemumgehungen offen.]]
Antwort1
Die Lösung besteht darin, dass das Sendmail-Team sich die Datei „/etc/mail/sendmail.mc“ ansieht:
dnl #
dnl # The following limits the number of processes sendmail can fork to accept
dnl # incoming messages or process its message queues to 20.) sendmail refuses
dnl # to accept connections once it has reached its quota of child processes.
dnl #
dnl define(`confMAX_DAEMON_CHILDREN', `20')dnl
dnl #
dnl # Limits the number of new connections per second. This caps the overhead
dnl # incurred due to forking new sendmail processes. May be useful against
dnl # DoS attacks or barrages of spam. (As mentioned below, a per-IP address
dnl # limit would be useful but is not available as an option at this writing.)
dnl #
dnl define(`confCONNECTION_RATE_THROTTLE', `3')dnl
(Treat "dnl" as a comment leadin string.)
Wenn Sie die E-Mails einfach nur verschicken, sollten Sie sie wahrscheinlich drosseln.
Antwort2
Protokollieren Sie Fehlermeldungen und den GENAUEN Zeitpunkt des Auftretens von Problemen. Dies sollte Sendmail-Administratoren dabei helfen, Probleme in den Protokolldateien zu lokalisieren.
Beim Massenversand sollten Sie:
a) die SMTP-Verbindung wiederverwenden, um viele E-Mails zu versenden (z. B. 50)
b) die Anzahl der pro Sekunde übermittelten Nachrichten begrenzen (z. B. 20-50)
Andere Maßnahmen, die ich vorschlagen könnte, wären Sendmail-spezifisch und würden die Zusammenarbeit von Sendmail-Administratoren erfordern.