Wir haben mehrere Sperren eingebaut, dass Postfix z.B. keine Mails von unbekannten IP´s annimmt. (reject_unknown_client)
Das funktioniert auch alles einwandfrei... allerdings kann es unter Umständen Probleme geben, wenn mal ein DNS Server von uns nicht erreichbar ist. In dem Moment kann Postfix kein DNS Lookup auf die IP machen und kann daher nicht feststellen, ob es sich um ein unbekannte IP handelt oder nicht.
Postfix unterscheidet hier. Auch wenn Du solche Nachrichten eigentlich mit einem 5xx Fehlercode permanent abweist, gibt postfix bei DNS Problemen nur einen temporaeren 4xx Fehler zurück. Das sollte den Sender veranlassen, es nochmal zu versuchen, wenn Euer DNS Problem (hoffentlich) gefixt ist.
Daher trägt man für gewöhnlich in der /etc/resolv.conf mehrere DNS Server ein, falls einer mal down ist.
Allerdings scheint es Postfix nur mit dem Primären DNS Server zu probieren.. in der Zeit können natürlich schon Mails verloren gehen bzw. werden von Postfix abgewiesen.
/Aus http://www.postfix.org/faq.html:
"Postfix/ calls the C library /routines/ gethostbyname() and gethostbyaddr() in..."
Sprich: Postfix steuert keine Nameserver direkt an, sondern verwendet Bibliotheksfunktionen, die auch von vielen anderen Programmen verwendet werden. Wir verwenden hier auch mehrere Nameserver und durch die regelmäßigen K-Fall Tests (RZs werden der Reihe nach ausgeschaltet) weiß ich, dass dieser Mechanismus prinzipiell wunderbar funktioniert.
Als Lösungsmöglichkeit sehe ich folgende: Einfach auf jedem Postfix Server einen einzelnen bind9 installieren, der nur auf localhost hört und somit kann Postfix vollkommen unabhängig seine DNS Abfragen machen?
Ist ein Workaround - aus o.g. Gründen glaube ich aber, dass Ihr ein anderes Problem habt:
- postfix läuft chrooted und ihr habt in der /var/spool/postfix/etc/hosts nur einen NS eingetragen - einer eurer beiden NS antwortet dem postfix nicht und das fällt nur nicht auf, weil der andere ja im normalfall alle queries beantwortet. erst bei deaktivierung dieses ns klappt es dann - eure OS internen gethostby*() sind borked - ...
Wie macht ihr das? Gibt es dazu eventuell noch bessere Lösungen? Unsere DNS Server sind zwar hochverfügbar aber mir geht es um genau die 30 Sekunden downtime wenn ein DNS Server mal rebootet z.B. wegen Sicherheitsupdates.
Wie beschrieben - wir müssen da gar nichts tun, weil dieser Mechanismus wunderbar funktioniert.
Kannst Du denn z.B. auf der Kommandozeile über beide NS Namen auflösen?
Grüße, Jan