Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
centos:mail_c6:mta_6 [24.09.2012 20:18. ] – [Backupmailserver] django | centos:mail_c6:mta_6 [28.12.2013 21:41. ] – [Dynamische Empfänger-Adress-Verifizierung] manuelles Löschen eines Eintrags in der verify-Datenbank django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Backupmailserver ====== | ||
+ | Nur mit einem Mailserver in Produktion zu gehen, wirft natürlich für das Thema //geplante Wartungsarbeiten / Downtime// schon einige Fragen auf. Egal ob nun ein Hardewardefekt, | ||
+ | Bevor nun die Domäne, bei einer längeren " | ||
+ | Wir setzen aus den gerade genannten Gründen einen sog. **„Store-and-Forward“**-Backup-Server ein. Hierbei werden bei Bedarf die eMails vom Backup-Server angenommen und sobald der **eigentlichen MX-Server** wieder verfügbar ist, an diesen zugestellt. | ||
+ | ===== DNS-Einträge ===== | ||
+ | Für unsere Domäne definieren wir die zugehörigen MX-Records und legen hierzu die entsprechenden [[centos: | ||
+ | # dig nausch.org MX | ||
+ | |||
+ | ;; ANSWER SECTION: | ||
+ | | ||
+ | | ||
+ | |||
+ | ===== Backupmailserver definieren ===== | ||
+ | Über die Variable **permit_mx_backup** wird unser Mailserver angewiesen, eMails anzunehmen und weiterzuleiten, | ||
+ | Wir tragen also die IP-Adressen, | ||
+ | # vim / | ||
+ | <code bash># Django : 2012-02-06 | ||
+ | # Backup Mailserver definiert | ||
+ | permit_mx_backup_networks = 88.217.171.167/ | ||
+ | </ | ||
+ | |||
+ | ===== Dynamische Empfänger-Adress-Verifizierung ===== | ||
+ | |||
+ | Ähnlich wie schon bei der Anbindung unseres Postfix-Mailservers an einem Backend-Mailserver (Cyrus-IMAP-Server) verwenden wir auch hier das **verify-modul**. | ||
+ | |||
+ | Den notwendigen Konfigurationseintrag finden wir bereits in der Hauptkonfigurationsdatei von unserem **Postfix 2.6.6** unter **CentOS 6.x**. | ||
+ | # grep verify / | ||
+ | |||
+ | | ||
+ | |||
+ | Postfix wird mit Hilfe des Moduls **verify** versuchen, noch während der Annahme der Nachricht von einem fremden Mailserver, beim Backend-System in Erfahrung zu bringen, ob dieses die Nachricht auch abnehmen würde. Ist dies der Fall, reicht der Backup-Mailserver die Nachricht an unseren Mailserver weiter, sobald dieser wieder erreichbar ist. Anderenfalls wird die Annahme der Nachricht verweigert. Damit nun der Mailserver nicht jedesmal nachfragen muss, werden wir ihm hierzu eine kleine Datenbanktabelle spendieren, die auch nach einen Neustart des Servers zur Verfügung stehen kann. | ||
+ | |||
+ | Als erstes legen wir nun das entsprechende Verzeichnis an und schenke es dem Nutzer postfix. | ||
+ | # mkdir / | ||
+ | |||
+ | # chown postfix.root / | ||
+ | |||
+ | # chmod 700 / | ||
+ | |||
+ | Als nächstes definieren wir noch die entsprechende Datenbank, bzw. den Ort wo Postfix diese Datenbank abspeichern wird. Hierzu tragen wir in die Konfigurationsdatei **main.cf** folgenden Eintrag nach. | ||
+ | # vim / | ||
+ | |||
+ | <code bash># Postfix-eigene verify-Datenbank für die dynamische | ||
+ | # Empfänger-Überprüfung nutzen | ||
+ | address_verify_map = btree:/ | ||
+ | </ | ||
+ | |||
+ | Ferner aktivieren wir noch den in der [[centos: | ||
+ | <code bash># | ||
+ | # Django : 2012-02-06 | ||
+ | # Schutz durch Restrictions für unser SOHO | ||
+ | # | ||
+ | |||
+ | smtpd_recipient_restrictions = | ||
+ | # Postmaster, abuse und andere aufgaben- oder funktionsgebundene E-Mail-Adressen (Role-Accounts) whitelisten | ||
+ | check_recipient_access btree:/ | ||
+ | # Black- und Whitelisting | ||
+ | check_client_access cidr:/ | ||
+ | check_helo_access btree:/ | ||
+ | check_sender_access btree:/ | ||
+ | check_recipient_access btree:/ | ||
+ | # Unsauberer eMails nicht annehmen | ||
+ | reject_non_fqdn_sender, | ||
+ | reject_non_fqdn_recipient, | ||
+ | reject_unknown_sender_domain, | ||
+ | reject_unknown_recipient_domain, | ||
+ | # Unsere eigenen Nutzer zulassen-/ | ||
+ | permit_sasl_authenticated, | ||
+ | permit_mynetworks, | ||
+ | # RBL überprüfen (Kapitel 10.11 Realtime Blackhole Lists) | ||
+ | reject_rbl_client zen.spamhaus.org, | ||
+ | reject_rbl_client ix.dnsbl.manitu.net, | ||
+ | reject_rbl_client bl.spamcop.net, | ||
+ | reject_rbl_client dnsbl.njabl.org, | ||
+ | reject_rhsbl_client multi.uribl.com, | ||
+ | # Dynamische Prüfung auf existente Relay-Empfänger | ||
+ | reject_unverified_recipient, | ||
+ | # Backupserver (MX) erlauben | ||
+ | permit_mx_backup, | ||
+ | # alles andere an relaying verbieten | ||
+ | reject_unauth_destination, | ||
+ | # Zu guter Letzt alles durchlassen, | ||
+ | permit | ||
+ | </ | ||
+ | |||
+ | Die Pflege der verify-Datenbank übernimmt dabei Postfix selbst, trägt neue Adressen ein und löscht auch regelmäßig alte Einträge - kurz und gut, der Postfix betreibt also eine Art // | ||
+ | # postconf address_verify_positive_refresh_time | ||
+ | |||
+ | | ||
+ | |||
+ | Nach Ablauf der sieben Tage wird das verify-Modul eine bereits bekannte und positiv gekennzeichnete eMailadresse erneuit beim Zielserver anfragen und die Aktualität des Datensatzes überprüfen. | ||
+ | |||
+ | # postconf address_verify_positive_expire_time | ||
+ | |||
+ | | ||
+ | |||
+ | Erst nach Ablauf von 31 Tagen wird eine bekannte und positive Adresse aus der Datenbank entfernt. Da aber bereits nach 7 Tagen eine Überprüfung der Adresse stattfindet, | ||
+ | |||
+ | # postconf address_verify_negative_refresh_time | ||
+ | |||
+ | | ||
+ | |||
+ | Nach drei Stunden wird das verify-Modul eine noch nicht existente gecachte Empfänger-Adresse beim Zielserver erneut anfragen. | ||
+ | |||
+ | # postconf address_verify_negative_expire_time | ||
+ | |||
+ | | ||
+ | |||
+ | Nicht existierende Empfängeradressen werden maximal drei Tage vorgehalten und dann gelöscht. | ||
+ | |||
+ | # postconf address_verify_sender | ||
+ | |||
+ | | ||
+ | |||
+ | # postconf double_bounce_sender | ||
+ | |||
+ | | ||
+ | |||
+ | Dieser Parameter legt fest, mit welchem // | ||
+ | |||
+ | # tail -f / | ||
+ | < | ||
+ | Jun 4 22:11:20 vml000080 postfix/ | ||
+ | Jun 4 22:12:06 vml000080 postfix/ | ||
+ | Jun 4 22:12:06 vml000080 postfix/ | ||
+ | Jun 4 22:12:06 vml000080 postfix/ | ||
+ | Jun 4 22:12:06 vml000080 postfix/ | ||
+ | Jun 4 22:12:09 vml000080 postfix/ | ||
+ | Jun 4 22:12:17 vml000080 postfix/ | ||
+ | ... | ||
+ | </ | ||
+ | Das Beispiel zeigt einen erfolgreichen Überprüfungsversuch // **status=deliverable (250 2.1.5 ok)** // ). | ||
+ | |||
+ | Wir im Gegensatz versucht an einen nicht existierenden Empfänger eine Nachricht zuzustellen, | ||
+ | < | ||
+ | Jun 4 22:26:07 vml000080 postfix/ | ||
+ | Jun 4 22:26:37 vml000080 postfix/ | ||
+ | Jun 4 22:26:38 vml000080 postfix/ | ||
+ | Jun 4 22:26:38 vml000080 postfix/ | ||
+ | Jun 4 22:26:38 vml000080 postfix/ | ||
+ | Jun 4 22:26:40 vml000080 postfix/ | ||
+ | Jun 4 22:26:49 vml000080 postfix/ | ||
+ | ... | ||
+ | </ | ||
+ | Werfen wir nun einen Blick in die verify-Datenbank von Postfix können wir für beide Beispiele die entsprechenden Einträge finden. | ||
+ | # postmap -s btree:/ | ||
+ | <code bash> | ||
+ | peer.heinlein@nausch.org 2: | ||
+ | </ | ||
+ | |||
+ | Wollen wir, warum auch immer, einen Eintrag der verify-Datenbank manuell entfernen, greifen wir auch auf den Befehl **postmap** zurück. | ||
+ | # postmap -d peer.heinlein@nausch.org / | ||
+ | |||
+ | |||
+ | Nach den erfolgreichen Testläufen definieren wir nun noch, dass Zustellversuche an nicht existierende Empfänger auf dem eigentlichen Zielsystem auch wirklich mit einem **500er** geblockt werden. | ||
+ | # vim / | ||
+ | <code bash> | ||
+ | # Django : 2009-02-02 | ||
+ | # für den Backupmailserverbetrieb eingetragen | ||
+ | # unbekannte Empfangsadressen final mit dem Fehlercode 577 ablehnen | ||
+ | unverified_recipient_reject_code = 577 | ||
+ | </ | ||
+ | |||
+ | Anschließend werden die Änderungen wie gewohnt durch einen Restart aktiviert: | ||
+ | # service postfix restart | ||
+ | |||
+ | ====== Links ====== | ||
+ | * **[[centos: | ||
+ | * **[[wiki: | ||
+ | * **[[http:// | ||
+ | |||
+ | ~~DISCUSSION~~ | ||
+ | |||
+ | ~~AUTOTWEET: |