Sendmail-Tipp: connection refused

souldrinker
Posts: 32
Joined: 2004-11-30 13:22

Sendmail-Tipp: connection refused

Post by souldrinker »

Hallo zusammen,

warum immer nur herkommen wenn man fragen hat? Ich hatte soeben in meinem wohlverdienten Weihnachtsurlaub ein Problem mit einem unserer Server, auf dem wir Sendmail zum Mailversand einsetzen und will hier einmal meine Lösung kundtun, falls jemand auch mal dieses Problem haben sollte.

Problemstellung:
Kunde ruft an, sagt er könne keine Mails versenden - Connect auf Port 25 zum Host von extern wie auch über 127.0.0.1 direkt auf dem System schlägt fehl. Nach einem Neustart von Sendmail besteht das Problem erstmal nicht mehr, nach ungefähr einer Minute aber wieder.

Diagnose:
ps aux | grep sendmail zeigt, dass Sendmail keine Verbindungen mehr annehmen kann weil 15 zeitgleiche offene Verbindungen existieren.

Lösungsversuch 1:
Konfiguration der Firewall, um "böse Hosts" auszusperren, nach 15 Minuten aufgegeben weil einfach zu viele.

Lösgunsversuch 2:
Eintragung aller "bösen Hosts" in /etc/access mit dem Vermerk: REJECT. Das brachte kurzzeitig sogar etwas, da Einträge hier etwas schneller gehen und der Effekt gleich ist wie ein Eintrag in der Firewall. Nach einiger Zeit wurde das aber auch zu Aufwändig.

Effektive Lösung:
Vielleicht hätte ich schon am Anfang drauf kommen können, jedoch ist wie gesagt Urlaub und ich hab heut eh schon schlechte Laune. Die bösen Hosts aussperren geht aber ganz leicht, man öffne die sendmail.cf in /etc/sendmail.cf und suche folgende Konfigurationsvariablen und passe sie wie dargestellt an:

O Timeout.initial=60s
O Timeout.connect=60s
O Timeout.iconnect=60s
O Timeout.datainit=2m
O Timeout.datafinal=10m
O Timeout.command=60s

Die anderen Timeouts lässt man lieber in Ruhe.

Fazit:
Die bösen Hosts, die das Problem verursachten machen eine Verbindung auf Port 25 auf, und lassen diese erstmal so stehen - ab und zu wird auch an lokale Adressen gespamt, meist wird aber nichts gemacht. Da der Sendmailtimeout für die Absetzung eines Kommandos durch den Client standardmäßig auf 1h (eine Stunde) steht, sammeln sich so 15 zeitgleiche Verbindungen an, die dazu führen dass Sendmail keine neuen Verbindungen mehr annimmt und so niemand mehr E-Mail senden kann und keine E-Mail von aussen mehr beim MTA/MDA eingeht.

Ganz wichtig sind die Zuweisungen der Timeouts für datainit und datafinal, die habe ich auch erst am Schluß gemacht, denn auf einmal sendeten die bösen Hosts Kommandos und blieben dann einfach beim DATA stehen und schon hatte man wieder die gleiche Situation wie am Anfang.

Zum Schluß frage ich mich: haben die Leute nichts besseres zu tun als mir den Urlaub zu vermiesen?
Top