Mailserver Downtime verhindern

david191186

Member
Ich bin PHP/Laravel Entwickler, und habe eine einen eigenen Email Client programmiert. Ähnlich wie Roundcube.

Nun interessiere ich mich auch mehr für Server. Vorallem Mailserver. Ihr kennt ja alle die großen Anbieter gmail,web,yahoo,aol usw…

Ich habe gelesen, das ein Mailserver niemals down sein darf, sonst kommen keine emails mehr an.

Meine Frage ist jetzt, wie machen die das?

Jedes System braucht irgendwann mal ein Reboot. Bei einem Reboot ist der Server kurz down.

Meine Vermutung ist:
1. Sie benutzen Floating IP, und setzen das Update auf einen anderen Server um. Und ändern anschließend den A Record. Sollten sie einen eigenen Nameserver haben, wäre das komplizierter.

2. Sie benutzen hinter dem Mailserver eine KVM. Was ich aber nicht glaube.

Ich denke es ist aber nicht die beste Lösung, jedes mal die Records beim Domain Registrar zu wechseln.

Wie wird sowas gemacht? Deren Mailserver sind immer online. Danke euch schon mal.
 
Backup MX; das ist ein zweiter Mailserver welcher die Mails abfängt wenn der primäre Server down ist und, je nach Konfig, an diesen die abgefangenen Mails zustellt wenn er wieder da ist.

Das wird durch die Prio Funktion der DNS MX Records realisiert.

Beispiel:
https://www.howtoforge.com/postfix_backup_mx
https://www.msxfaq.de/internet/backupmx.htm

Clustering; Verbund aus Servern
https://nsrc.org/workshops/2005/pre-SANOG-VI/bc/mail/clustering.htm
https://www.tecchannel.de/a/sichere-infrastruktur-fuer-e-mail-systeme,1779571,7
 
Last edited:
Deren Mailserver sind immer online.
Nein sind sie nicht. :p

SMTP ist ausreichend stabil, dass ein temporär nicht erreichbarer Mailserver nicht gleichzeitig dazu führt, dass Mails verloren gehen. Sie kommen nur später. Der einliefernde Mailserver hält sie bei temporären Fehlern eine gewisse Zeitspanne in der Queue und versucht die Zustellung immer wieder neu. Die meisten bewegen sich im Bereich von 3-7 Tagen.

Alles andere ist Budget abhängig. Ob nun mehrere MX Records auf 2 unterschiedliche Server, Failover IPs, Loadbalancer, zusätzliche Mailrelays vor den Mailbox-Servern, usw. kommt ganz auf die anvisierte Verfügbarkeit an.
Bei den größeren Mailprovidern ist es so gut wie immer eine Kombination von mehrerer dieser Techniken.

Wenn wir von Diensten wie GMail sprechen, ist das auch nicht DER eine Mailserver, sondern da sprechen wir locker mal von einer 2-stelligen Anzahl an Rollen, die auf unterschiedliche Systeme verteilt werden und jede dieser Rollen möchte auch irgendwie horizontal skalieren können. Besteht also grundsätzlich aus vielen Servern.
 
Ihr seit echt mega, so schnell eine Antwort.

Also das bedeutet, wenn jetzt jemand von Gmail mir eine Email schreibt, und mein Mailserver ist down, dann bleibt diese Mail bei Gmail 3-5 Tagen in der Queue?
Wenn das wirklich so ist, dann ist das Thema gar nicht so schlimm wie vermutet habe.

Aber wie sieht es bei IMAP aus? Die ausgehenden Emails sind auch in der Queue wenn mein Mailserver down ist??
Ich kenne mich leider mit Postfix und Dovecot nicht so gut aus. Noch nicht..
 
Wie lang genau GMail die Mails in der Queue hält, hab ich gerade nicht im Kopf. Im Zweifel mal mit einem nicht erreichbaren Ziel ausprobieren ;)
Irgendwann kommt die Bounce-Mail zum Absender mit dem Hinweis, dass sie die Zustellung aufgeben.

Über IMAP werden keine Mails versendet. Darüber greifst du nur auf dein Postfach zu. Versandt läuft immer über SMTP (oder ein paar Specials, die aber letztendlich auch auf SMTP basieren).
An der Stelle kommts nun auf den Mailclient an.
Einfache Variante Desktop-Client (Outlook, Thunderbird, ...): Der Client hält die Mail im Postausgang, bis er endlich mal den Mailserver erreicht. Mir wäre hier kein Zeitlimit bekannt.
Komplexere Variante Web-Client (Roundcube, ...):
  • entweder hat der Web-Client so viel eigene Programmlogik, dass er das Queuing selbst übernehmen kann (machen die wenigsten)
  • er hat Fallback-SMTP Server konfiguriert, die er nutzt, wenn der vorhergehende nicht erreichbar ist
  • er nutzt einfach den lokalen MTA von dem System auf dem der Webserver läuft (damit einfach stumpf nur das Queuing ausgelagert). Bedarf dann aber entsprechender Logik, dass der weitere Mailfluss zu DKIM, SPF und sonstigen Mechanismen passt
  • Er spricht klassische Loadbalancer/Failover-IPs an

Edit:
Das der erste Punkt in der Praxis kaum eine Rolle spielt, hat einen guten Grund. Alles was ein Mailserver übernehmen kann, sollte auch ein Mailserver machen. Mailzustellung ist kein einfaches Thema und sehr viele Entwickler sind ziemlich baden gegangen, als sie meinten, sie können es besser als die etablierten. ;)
 
Last edited:
Wie lang genau GMail die Mails in der Queue hält, hab ich gerade nicht im Kopf. Im Zweifel mal mit einem nicht erreichbaren Ziel ausprobieren ;)
Irgendwann kommt die Bounce-Mail zum Absender mit dem Hinweis, dass sie die Zustellung aufgeben.

Über IMAP werden keine Mails versendet. Darüber greifst du nur auf dein Postfach zu. Versandt läuft immer über SMTP (oder ein paar Specials, die aber letztendlich auch auf SMTP basieren).
An der Stelle kommts nun auf den Mailclient an.
Einfache Variante Desktop-Client (Outlook, Thunderbird, ...): Der Client hält die Mail im Postausgang, bis er endlich mal den Mailserver erreicht. Mir wäre hier kein Zeitlimit bekannt.
Komplexere Variante Web-Client (Roundcube, ...):
  • entweder hat der Web-Client so viel eigene Programmlogik, dass er das Queuing selbst übernehmen kann (machen die wenigsten)
  • er hat Fallback-SMTP Server konfiguriert, die er nutzt, wenn der vorhergehende nicht erreichbar ist
  • er nutzt einfach den lokalen MTA von dem System auf dem der Webserver läuft (damit einfach stumpf nur das Queuing ausgelagert). Bedarf dann aber entsprechender Logik, dass der weitere Mailfluss zu DKIM, SPF und sonstigen Mechanismen passt
  • Er spricht klassische Loadbalancer/Failover-IPs an
Ja das dachte ich mir. Also bei den ausgehenden Emails sehe ich da auch keine Probleme. Mein eigener Mailclient hält die Emails auch lange in der Queue. Roundcube wird das auch machen, schätze ich mal. Wenn ich Zeit habe, teste ich mal Roundcube. Einfach Roundcube auf den anderen Server und Mail senden, wenn er down ist.

Ich habe richtig bock darauf. Ich habe mir schon Mailinabox angesehen, sowie Mailcow. Mailcow finde etwas übertrieben, wozu so eine große Gui, wenn man alles in der .conf ändern kann.
Miab finde ich schon besser, allerdings nervt mich der eingebaute NSD Server. Alles unötige Ressourcen.
Das Beste wäre Postfix und Dovecot von Grund auf zu lernen. Ich bin so wissenshungrig wie Rocky 1976 beim Kampf gegen Apollo
 
Ich habe mir Roundcube schon ein paar Jahre nicht mehr angeschaut. Aber du solltest da nicht zu viel erwarten.
IMHO steht da ein einzelner SMTP Server in der Config, wenn der nicht erreichbar ist, gibt's keine erneute Zustellung. Würde mich wundern, wenn sich daran was geändert haben sollte. Die meisten Standalone-Webmailer von der Stange arbeiten so und erfordern oben genannte Alternativen.

Größere Mailcluster sind eh an allen Stellen redundant. Daher brauchen die keine Special-Queue-Logik im Webmailer und kleineren Setups ist es völlig egal oder sie nehmen halt eh den lokalen MTA vom Webserver.
 
Ich habe mir Roundcube schon ein paar Jahre nicht mehr angeschaut. Aber du solltest da nicht zu viel erwarten.
IMHO steht da ein einzelner SMTP Server in der Config, wenn der nicht erreichbar ist, gibt's keine erneute Zustellung.
Also ich hatte das gemacht, und es war keine große Sache. Man kann ja programmieren was mit failed Jobs passieren soll in der Queue. Wie gesagt ich schau mal, wie es Roundcube macht. Ich habe noch eine fertige Roundcube Repo bei Github.

Benutzt du auch einen eigenen Mailserver?
 
Wow...Es gibt also tatsächlich noch Leute, die freiwillig die Basics lernen wollen...Das ich das noch erleben darf :D

Mit dieser Einstellung wirst du dir hier im Forum viele Freunde machen.
Danke, aber diese Dinge sind echt eine Hausnummer. Aber ich habe einfach Lust darauf. :)
Ich habe mit PHP IMAP schon genug durchgemacht. Da habe ich graue Haare bekommen.

Aber nochmal zum Thema mit den 20 Servern von Gmail. Das ist alles nachvollziehbar, aber da ist das Problem, das jeder Server eine eigene IP hat. Wegen der IP Reputation. Okay Gmail wird da jetzt keine Probleme haben, aber als kleine Firma, bist du froh eine IP Adresse zu haben, welche Reputation hat. Schließlich sollen die Mails nicht im Spam Ordner landen. Die haben bestimmt irgendein Gateway wo die Mails immer über die gleiche IP raus gehen?
 
aber diese Dinge sind echt eine Hausnummer. Aber ich habe einfach Lust darauf. :)
Es macht aber eben auch einen riesen Spaß, wenn man nicht nur sieht, daß es funktioniert sondern auch weiß, welche internen Systemabläufe notwendig sind, damit es funktioniert.
Und ganz ehrlich...So schwer ist es garnicht, wenn man man immer zwei Dinge beachtet: Schritt für Schritt vorgehen und immer die passende Doku zur Hand haben (Zitat von meinem damaligen Prof)
 
Es macht aber eben auch einen riesen Spaß, wenn man nicht nur sieht, daß es funktioniert sondern auch weiß, welche internen Systemabläufe notwendig sind, damit es funktioniert.
Und ganz ehrlich...So schwer ist es garnicht, wenn man man immer zwei Dinge beachtet: Schritt für Schritt vorgehen und immer die passende Doku zur Hand haben (Zitat von meinem damaligen Prof)
Vielen Dank für diesen Satz :) Ich werde das auch so machen.
 
Super, das gehe ich mal durch.
Ist allerdings teuer und aufwändig.

Für die Reputation von nicht Multi-Milliarden Unternehmen ist es einfach wichtig das Haus sauber zu halten. Ggf. dann mit Manpower die in Kontakt mit Spamlistenbetreibern treten im Fall der Fälle.
 
Benutzt du auch einen eigenen Mailserver?

Beruflich ja, Privat hab ich es mittlerweile sein gelassen. Mail allein reicht halt nicht. Man will auch Kalender & Kontakte synchronisieren. Wer da CalDAV und CardDAV präferiert, steht wohl auch sonst auf Schmerzen.
Kann mir in meiner Freizeit schöneres vorstellen, als eine Single-User-Groupware betreiben zu müssen. So bin ich privat dann irgendwann zum Hosted Exchange gewechselt. Erst bei OVH (da gibts hier im Forum auch einen länglichen und schmerzhaften Erfahrungsbericht dazu) und nun seit vielen Jahren direkt von Microsoft.


aber da ist das Problem, das jeder Server eine eigene IP hat

Deswegen sagte ich vorhin, in so einer großen Umgebung hast du mehrere Mailserver-Rollen, die alle spezifische Aufgaben erfüllen. Eine davon ist ein Pool von MTAs, welche die Mails verarbeiten, die die eigene Organisation verlassen.
Jenachdem was du da für Kundschaft drauf hast, gibts sogar mehrere dieser Pools, in die die Postfächer je nach sendendem Mailaufkommen automatisch einsortiert werden. So dass für die große Masse der Postfächer mit wenigen Mails die gute Reputation erhalten bleibt und die wenigen Spam-Schleudern (die man in einem kommerziellen Shared-Mailcluster grundsätzlich immer hat) schiebt man einfach auf ein Mailrelay, bei dem einen die Reputation egal ist. Wenn der Kunde sich beschwert, dass Mails nicht ankommen, darf er gern woanders hin gehen oder paar Scheine mehr auf den Tisch legen, damit man ihm für seinen Einsatzzweck eine passende Lösung baut.
 
Ist allerdings teuer und aufwändig.

Och, kommt auf die Ausgangslage an. :p
Betreibe beruflich ein Anycast Cluster für DNS Resolver und Linux-Distro-Mirror mit 2-stelliger Anzahl Servern über 4 Standorte.

In unserer Branche findet man auch genug verrückte, die zu Hause ein eigenes AS betreiben. Da ist der Schritt dann zum Anycast Cluster nicht mehr weit. :D
 
In unserer Branche findet man auch genug verrückte, die zu Hause ein eigenes AS betreiben.
Ich glaub irgendwann mal gelesen zu haben, daß man als Privatperson garkeine ASN Zuteilung mehr bekommt...
Rein aus Neugier (und sry fürs OT), weißt du zufällig, wie da der aktuelle Stand ist?
 
Also ich habe mir mal AN durchgelesen. Für einen kleinen eigenen Mailserver ist das zu übertrieben.

Was gibt es den noch für Möglichkeiten?
Folgende Situation. Ein Reboot ist erforderlich bzw ein großes Update.
Ich persönlich würde jetzt alles auf einen neuen Server updaten. Die alten Daten per Storage Volume rüberziehen. Dann die Floating Ip zuweisen auf den neuen Server. Aber eine gewisse Downtime ist da trotzdem. Gibt es noch einfachere Lösungen? :)
 
Back
Top