- Auf dem Mailserver des Statistik-Fachbereichs einer US-Universität trat das merkwürdige Phänomen auf, dass E-Mails nicht an Ziele in mehr als 500 Meilen Entfernung gesendet werden konnten
- Die Untersuchung ergab, dass beim SunOS-Update der Sendmail-Version ein Downgrade erfolgt war und die Konfigurationsdatei dadurch nicht mehr kompatibel war
- Weil Sendmail 5 die langen Optionsnamen der Konfigurationsdatei für Sendmail 8 nicht erkannte, wurden mehrere Standardwerte auf 0 gesetzt
- Darunter war auch das Timeout für SMTP-Verbindungen, das auf 0 gesetzt wurde, sodass alle entfernten Verbindungen fehlschlugen, die länger als etwa 3 Millisekunden dauerten
- Da die Netzwerklatenz proportional zur Entfernung zunahm, führte das letztlich zu dem Effekt, dass der Mailversand an Server in mehr als 500 Meilen Entfernung blockiert wurde
Der Beginn des Problems
- Aus dem Statistik-Fachbereich kam die Meldung: „Man kann keine E-Mails an Orte senden, die weiter als 500 Meilen entfernt sind.“
- Bis 520 Meilen funktionierte es, darüber hinaus schlug es fehl
- Der Fachbereichsleiter zog sogar einen Geostatistiker hinzu, um eine Karte des erreichbaren Mail-Radius zu erstellen; dabei ergab sich ein Radius von etwa 500 Meilen
- Der Systemadministrator reproduzierte das Problem, indem er Testmails an verschiedene Orte schickte
- Princeton in 400 Meilen Entfernung funktionierte, Memphis in 600 Meilen Entfernung nicht
- New York (420 Meilen) funktionierte, Providence (580 Meilen) nicht
Ursachenanalyse
- Die Konfigurationsdatei
sendmail.cf des Servers sah zunächst unauffällig aus und war eine vom Autor selbst erstellte Konfiguration für Sendmail 8
- Als jedoch der Banner des SMTP-Ports geprüft wurde, lief dort SunOS Sendmail 5
- Während eines Server-Patches wurde das Betriebssystem aktualisiert und Sendmail von Version 8 auf 5 zurückgestuft
- Die bestehende Konfigurationsdatei blieb erhalten, aber Sendmail 5 erkannte die langen Optionsnamen von Sendmail 8 nicht
- Nicht erkannte Optionen wurden ignoriert, und die Standardwerte der betreffenden Einträge wurden auf 0 zurückgesetzt
- Insbesondere wurde der Timeout-Wert für Verbindungen zu entfernten SMTP-Servern auf 0 gesetzt, sodass Verbindungsversuche nach etwa 3 Millisekunden abgebrochen wurden
Zusammenhang zwischen Entfernung und Geschwindigkeit
- Das Campus-Netzwerk war damals vollständig switchbasiert, sodass es praktisch keine Router-Verzögerung gab
- Die Verbindungszeit wurde daher durch die physische Entfernung (Lichtgeschwindigkeit) bestimmt
- Den Berechnungen zufolge entsprachen 3 Millisekunden etwa 558 Meilen Entfernung
- Das passte zu der gemeldeten Beobachtung von „500 Meilen oder etwas mehr“
Fazit
- Die eigentliche Ursache des Problems war ein Parsing-Fehler der Konfiguration durch eine Sendmail-Versionsinkompatibilität
- Weil das Timeout auf 0 gesetzt war, entstand ein Netzwerkphänomen, das wie eine physische Distanzgrenze wirkte
- Der Fall gilt als klassische Anekdote dafür, wie wichtig Versionskompatibilität und Konfigurationsprüfung in der Systemadministration sind
Noch keine Kommentare.