Postfix: Backup-MX
Betreibt man einen Mailserver kann es passieren, dass dieser für längere Zeit nicht erreichbar ist. Was in einem solchen Fall mit eingehenden Mails geschieht entscheidet der einliefernde Mailserver. In der Regel geht dieser von einem temporären Fehler aus und versucht die Zustellung erneut. Sofern dies über mehrere Stunden nicht gelingt erhält der Absender eine “Delayed Mail Warning”, sprich eine Nachricht, dass die von ihm versendete Mail den Empfänger noch nicht erreicht hat, aber keine weiteren Schritte nötig sind, da der Zustellversuch noch über mehrere Tage erneut versucht wird. Erst wenn auch dies nicht gelingt wird der Versuch abgebrochen und der Absender erhält eine entsprechende Mitteilung.
Leider ist dies der Idealfall, manche Mailserver verwerfen die Mail direkt nach dem ersten, nicht erfolgreichen, Zustellversuch. Andere Mailserver informieren den Absender nicht über die Verzögerung (oder tun dies so kryptisch, dass der Absender den Sinn der Nachricht nicht versteht). Wieder andere Mailserver informieren den Absender nicht einmal darüber dass die Mail gar nicht zugestellt wurde.
Kurz gesagt ist man also von der Konfiguration anderer Systeme abhängig. Aus dieser Abhängigkeit kann man sich größtenteils durch die Verwendung eines Backup-MX befreien.
DNS-Konfiguration
Hierzu ist zunächst (bei Manitu) eine neue Subdomain im DNS (Forward) zu registrieren:
1 |
mx1 21x9.org IN A 1.2.3.4
|
Für diese Domain wird anschließend ein weiterer MX-Eintrag erstellt:
1 |
21x9.org IN MX 100 mx1.21x9.org.
|
Wichtig ist hierbei dass der Wert für die Priorität (100) größer ist als für den eigentlichen Mailserver (mx0.21×9.org).
Abschließend wird ein Reverse-DNS-Eintrag erstellt:
1 |
IPv4 1.2.3.4 PTR mx1.21x9.org
|
Sobald sich die Änderungen im DNS herumgesprochen haben (dauert bis zu 48 Stunden) sollte dig 21x9.org MX
folgendes ausgeben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
; <<>> DiG 9.7.3 <<>> 21x9.org MX ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26324 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;21x9.org. IN MX ;; ANSWER SECTION: 21x9.org. 42053 IN MX 100 mx1.21x9.org. 21x9.org. 42053 IN MX 10 mx0.21x9.org. ;; Query time: 8 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Mon Apr 30 10:32:10 2012 ;; MSG SIZE rcvd: 82 |
Die Domain mx1.21x9.org
sollte auf die IP 217.11.61.100
verweisen:
1 2 3 4 5 6 7 |
PING mx1.21x9.org (217.11.61.100) 56(84) bytes of data. 64 bytes from mx1.21x9.org (217.11.61.100): icmp_req=1 ttl=57 time=13.5 ms 64 bytes from mx1.21x9.org (217.11.61.100): icmp_req=2 ttl=57 time=11.8 ms ^C --- mx1.21x9.org ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 11.819/12.672/13.526/0.860 ms |
Ist nun der primäre Mailserver (mx0.21x9.org
) nicht erreichbar versucht der, korrekt konfigurierte, einliefernde Mailserver die Zustellung über den Backup-MX (mx1.21x9.org
). Sind beide Server nicht erreichbar greift das oben beschriebene Szenario.
Der Backup-MX nimmt die Mail entgegen und versucht nun seinerseits die Zustellung der Nachricht an den primären Mailserver durchzuführen. Der Vorteil, nun liegt die Kontrolle über “Delayed Mail”-Warnungen und den Zeitraum in dem ein erneute Zustellversuche unternommen werden in unserer Hand.
Postfix-Konfig
Hinweis: smtpd
am Beginn einer Konfigurationsseite bezieht sich immer auf die Serverseite, smtp
auf die Clientseite.
Die Installation von postfix
unterscheidet sich zunächst kaum von der Grundkonfiguration des primären Mailservers. Die Maßnahmen zur Spamfilterung werden jedoch auf ein Minimum beschränkt, da diese später vom primären Mailserver durchgeführt werden. Auch der Virencheck entfällt zunächst. Damit der primäre Mailserver aber nach einem Ausfall nicht mit zu vielen Mails von Backup-MX konfrontiert wird sollten aber zumindest RBL-Checks durchgeführt werden. Greylisting wäre ggf. sinnvoll, da dies ansonsten gänzlich entfällt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# /etc/postfix/main.cf> # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = mx1.21x9.org alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = 21x9.org, localhost.cat06.de, localhost relayhost = permit_mx_backup_networks = 21x9.org mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all smtpd_recipient_restrictions = check_client_access hash:/etc/postfix/client_whitelist permit_sasl_authenticated reject_non_fqdn_sender reject_non_fqdn_recipient reject_unauth_destination reject_invalid_hostname reject_non_fqdn_hostname reject_unknown_client reject_unauth_pipelining reject_rbl_client bl.spamcop.net reject_rbl_client sbl-xbl.spamhaus.org reject_rbl_client ix.dns1.manitu.net permit_mynetworks permit_mx_backup unknown_client_reject_code = 550 relay_domains = $mydestination, $permit_mx_backup_networks relay_recipient_maps = message_size_limit = 64000000 notify_classes = bounce, delay, policy, protocol, resource, software maximal_backoff_time = 10m minimal_backoff_time = 1m queue_run_delay = 60s maximal_queue_lifetime = 4w |
Wichtig bei der Konfiguration ist vor allem folgendes:
- Entfernen der
delay_warning_time
- Die Domains des primären Mailservers dürfen nicht unter
mydestination
aufgeführt sein - Angabe der Domains unter
permit_mx_backup_networks
permit_mx_backup_networks
inrelay_domains
aufnehmen- Leere
relay_recipient_maps
anlegen
Mit den Werten maximal/minimal_backoff_time
, queue_run_delay
und maximal_queue_lifetime
kann dann das Verhalten festgelegt werden, sollte der primäre Mailserver nicht erreichbar sein. Insbesondere maximal_queue_lifetime
sollte deutlich über dem Default-Wert von 5 Tagen liegen, damit auch bei einem sehr langen Ausfall keine Mails verworfen werden.
Mehr Informationen: https://www.21×9.org/e-mail-server-5-backup-mx/