howto

Postfix als Backup MX mit SPF

Durch den Umzug auf den neuen Server und der Restvertragslaufzeit des Alten habe ich ja jetzt sozusagen einen vServer als „spare“. Was macht man nun sinnvolles damit?!
Ich habe mich mal für einen backup-mx entschieden. Wenn das alles gut läuft und ich nach dem alten Vertrag noch denke dass ich sowas brauche, werde ich mich einen schönen passenden kleinen Server nazu nehmen.

Aber nun zum Thema.
Was ist ein backup-mx? Eigentlich ganz einfach. Ein backup-mx ist ein Ausfallserver für den primären Email-Server. Angedacht ist, dass wenn bender.morontv.de ausfallen sollte, hermes.morontv.de immernoch verfügbar ist, die eMail annimmt und solange in der eigenen Warteschlange hält, bis er sie an bender.morontv.de zustellen kann.
Wer alles Backup für wen ist, wird in den allgemeinen DNS-Informationen einer Domain festgelegt.
Hier mal ein Auszug aus einem „host -a morontv.de“

morontv.de              A       85.131.189.108
morontv.de              TXT     "v=spf1 ip4:85.131.189.108 ip4:80.82.212.218 ip:89.110.149.90 a mx ~all"
morontv.de              MX      5 bender.morontv.de
morontv.de              MX      10 hermes.morontv.de
morontv.de              NS      ns1.s-dns.de
morontv.de              NS      ns2.s-dns.de

Je kleiner der Zahlenwert vor dem MX-eintrag um so höher ist die Priorität.
Um den postfix auf hermes.morontv.de beizubringen dass er backup-mx für die Domain morontv.de ist, also auch für die Mails für bender.morontv.de verantwortlich ist, diese aber an bender.morontv.de weiterleiten soll, sowie der wieder verfügbar ist, muss man eigentlich recht wenig tun.

Folgende Änderungen muss man auf dem backup-mx, in meinem Fall hermes.morontv.de tun:

vim /etc/postfix/main.cf

Zuerst sollte man sicher gehen, dass permit_sasl_authenticated, permit_mynetworks und reject_unauth_destination vorhanden sind. Das sollte dann so aussehen:

smtpd_recipient_restrictions =
                permit_sasl_authenticated,
                permit_mynetworks,
                reject_unauth_destination,

Ist das gemacht, muss man folgendes in die main.cf eintragen:

relay_domains = $mydestination, morontv.de
relay_recipient_maps =

Durch das relay_recipient_maps = muss nicht jeder user von morontv.de (z.B. michael@morontv.de) einzeln angelegt werden.
Jetzt noch ein postfix reload und der backup-mx ist fertig zum Einsatz.

Da hab ich gedacht, schaun wir uns mal die Mail-Logs an – weil’s so schön ist…
Also erstmal den primären Mailserver mit /etc/init.d/postfix stop angehalten…damit auch der backup-MX zum Einsatz kommt…
Dann habe ich von gmx.de eine email an michael@morontv.de geschickt und auf hermes auf eine Reaktion gewartet. Nach kurzer Zeit ist da auch was passiert – auf dem backup-mx:

Dec 21 23:47:48 v1351 postfix/smtpd[1473]: connect from mail.gmx.net[213.165.64.20]
Dec 21 23:47:48 v1351 postfix/policy-spf[1478]: handler sender_policy_framework: is decisive.
Dec 21 23:47:48 v1351 postfix/policy-spf[1478]: : Policy action=PREPEND Received-SPF: pass (gmx.de: 213.165.64.20 is authorized to use 
'xxx@gmx.de' in 'mfrom' identity (mechanism 'ip4:213.165.64.0/23' matched)) receiver=v1351.ncsrv.de; 
identity=mfrom; envelope-from="xxx@gmx.de"; helo=mail.gmx.net; client-ip=213.165.64.20
Dec 21 23:47:53 v1351 postfix/smtpd[1473]: C802119FBCF8A: client=mail.gmx.net[213.165.64.20]
Dec 21 23:47:53 v1351 postfix/cleanup[1496]: C802119FBCF8A: message-id=xxx@gmx.net
Dec 21 23:47:53 v1351 postfix/qmgr[23787]: C802119FBCF8A: from=xxx@gmx.de, size=1297, nrcpt=1 (queue active)
Dec 21 23:47:53 v1351 postfix/smtpd[1473]: disconnect from mail.gmx.net[213.165.64.20]

Jippie, GMX hat den backup-mx schonmal gefunden… und direkt danach kam dann auch:

Dec 21 23:47:53 v1351 postfix/smtp[1497]: connect to bender.morontv.de[85.131.189.108]: Connection refused (port 25)
Dec 21 23:47:53 v1351 postfix/smtp[1497]: C802119FBCF8A: to=michael@morontv.de, relay=none, delay=5.7, delays=5.7/0.04/0.04/0, dsn=4.4.1, status=deferred 
(connect to bender.morontv.de[85.131.189.108]: Connection refused)

Gut, is klar… weil bender war ja noch nicht gestartet… also wieder mit /etc/init.d/postfix start gestartet und gewartet bis der nächste Zustellversucht kommt…und der kam auch:

Dec 22 00:17:38 bender postfix/smtpd[30374]: connect from hermes.morontv.de[89.110.149.90]
Dec 22 00:17:39 bender postfix/policy-spf[30379]: handler sender_policy_framework: is decisive.
Dec 22 00:17:39 bender postfix/policy-spf[30379]: : Policy action=550 Please see http://www.openspf.org/Why?s=mfrom&id=xxx@gmx.de&ip=89.110.149.90&r=unknown
Dec 22 00:17:39 bender postfix/smtpd[30374]: NOQUEUE: reject: RCPT from hermes.morontv.de[89.110.149.90]: 550 5.7.1 : Recipient address rejected: 
Please see http://www.openspf.org/Why?s=mfrom&id=xxxx&ip=89.110.149.90&r=unknown; from=xxx@gmx.de to=michael@morontv.de proto=ESMTP helo=mail.morontv.de
Dec 22 00:17:39 bender postfix/smtpd[30374]: disconnect from hermes.morontv.de[89.110.149.90]

WTF?! Warum wurde die Mail abgelehnt!? – google Fragen…
Die SPF Schnittstelle zählt immer nur den vorhergehenden HOP und der kam ja von hermes.morontv.de und deswegen hat mein eigener backup-mx die SPF-Prüfung versemmelt. Das soll nachtürlich nicht sein und lässt sich auch recht einfach lösen. Nachdem ich ein bisschen die Postfix Acsess Seite gelesen habe, war alles klar. Mann kann mit check_client_access IP-Adressen oder Domains spezifizieren, auf die keinerlei Filter angewendet werden; denen also blind vertraut wird. Sollte bei seinem eigenem backup-mx ja auch so sein.

Also los – am primären Mailserver folgendes tun:
In der „/etc/postfix/main.cf“ „check_client_access hash:/etc/postfix/backupmx“ einfügen, dass es so aussieht:

smtpd_recipient_restrictions =
                permit_sasl_authenticated,
                permit_mynetworks,
                check_client_access hash:/etc/postfix/backupmx

dann

vim /etc/postfix/backupmx

(falls es die Daei nicht gibt, wird sie damit angelegt.) Und so siehts in meiner Datei aus:

89.110.149.90   OK

Man kann auch IPs komplett blocken – z.B. mit:

89.110.149.90   OK
66.249.93.104 REJECT

Wenn man die Datei fertig bearbeitet hat noch ein „postmap /etc/postfix/backupmx“ und ein „postfix reload“ und schon werden Mails von dieser IP nicht mehr gecheckt!

Dec 22 01:59:29 bender postfix/smtpd[31177]: connect from hermes.morontv.de[89.110.149.90]
Dec 22 01:59:29 bender postfix/smtpd[31177]: D3BD9E134A: client=hermes.morontv.de[89.110.149.90]
Dec 22 01:59:29 bender postfix/cleanup[31181]: D3BD9E134A: message-id=xxx@gmx.net
Dec 22 01:59:29 bender postfix/smtpd[31177]: disconnect from hermes.morontv.de[89.110.149.90]

WUNDERBAR!

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s