Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:mail_c7:mta_4 [04.11.2014 21:08. ] – [SMTP Relay Restrictions] django | centos:mail_c7:mta_4 [22.07.2020 20:13. ] (aktuell) – [Reject-Regeln] django | ||
---|---|---|---|
Zeile 15: | Zeile 15: | ||
In der Vergangenheit, | In der Vergangenheit, | ||
- | Wir werden daher bei den nun folgendem Beispiel zur Konfiguration unter **CentOS 7** einen, auf den ersten ungewöhnlichen Schritt unternehmen und die **main.cf** beiseite legen und eine eigene anlegen. folgende vier Schritte sind hierzu | + | Wir werden daher bei den nun folgendem Beispiel zur Konfiguration unter **CentOS 7** einen, auf den ersten ungewöhnlichen Schritt unternehmen und die **main.cf** beiseite legen und eine eigene anlegen; folgende vier Schritte sind hierzu |
- Wir stoppen den vorhandenen Postfix-SMTP-Server. < | - Wir stoppen den vorhandenen Postfix-SMTP-Server. < | ||
- Anschließend wechseln wir in das Konfigurationsverzeichnis // | - Anschließend wechseln wir in das Konfigurationsverzeichnis // | ||
- | - Nun löschen | + | - Nun löschen |
- **löschen** < | - **löschen** < | ||
- **verschieben** < | - **verschieben** < | ||
Zeile 40: | Zeile 40: | ||
# | # | ||
- | Wir werden später die einzelnen Konfigurationsoptionen strukturieren, | + | Wir werden später die einzelnen Konfigurationsoptionen strukturieren, |
==== Installations- und Konfigurations Informationen ==== | ==== Installations- und Konfigurations Informationen ==== | ||
Zeile 245: | Zeile 245: | ||
# default: unbekannte Empfänger sollen abgewiesen und nicht mit einem | # default: unbekannte Empfänger sollen abgewiesen und nicht mit einem | ||
# temporären Fehler 450 abgewiesen werden. | # temporären Fehler 450 abgewiesen werden. | ||
- | unknown_local_recipient_reject_code = 550 | + | # default: |
+ | # unverified_recipient_reject_code = 450 | ||
+ | # | ||
# Django : 2014-10-15 - Soll bei einem unbekanntem Ziel der genaue Tabellenname | # Django : 2014-10-15 - Soll bei einem unbekanntem Ziel der genaue Tabellenname | ||
Zeile 273: | Zeile 275: | ||
</ | </ | ||
==== Routing ==== | ==== Routing ==== | ||
- | In der Section | + | In der Sektion |
<WRAP center round tip> | <WRAP center round tip> | ||
- | Auch wenn es für einen kleinen Server erst einmal als Overkill erscheinen mag, den IMAP-Server via **LMTP** anzusprechen, | + | Auch wenn es für einen kleinen Server erst einmal als Overkill erscheinen mag, den IMAP-Server via **LMTP** anzusprechen, |
</ | </ | ||
# vim / | # vim / | ||
<code bash>################################################################################ | <code bash>################################################################################ | ||
- | ## ROUTING | + | ## ROUTING |
# | # | ||
# Django : 2014-10-15 - Relayhost: Alle Nachrichten werden an den Relayhost | # Django : 2014-10-15 - Relayhost: Alle Nachrichten werden an den Relayhost | ||
Zeile 391: | Zeile 393: | ||
# smtp_destination_rate_delay = $default_destination_rate_delay | # smtp_destination_rate_delay = $default_destination_rate_delay | ||
# virtual_destination_rate_delay = $default_destination_rate_delay | # virtual_destination_rate_delay = $default_destination_rate_delay | ||
- | # Ausgehende Nachrichten des MAilinglistenservers | + | # Ausgehende Nachrichten des Mailinglistenservers |
# setzen | # setzen | ||
smtp_destination_rate_delay = 150s | smtp_destination_rate_delay = 150s | ||
</ | </ | ||
+ | <WRAP center round important 90%> | ||
+ | **WICHTIG**: | ||
+ | </ | ||
+ | |||
==== Rückmeldungen beeinflussen und individualisieren ==== | ==== Rückmeldungen beeinflussen und individualisieren ==== | ||
In der Section **RÜCKMELDUNGEN BEEINFLUSSEN UND INDIVIDUALISIEREN** können wir festlegen, welche Informationen unser Mailserver unterdrücken und weitergeben soll. Auch eine Individualisierung auf Mailserverbetreiberebene sind möglich. | In der Section **RÜCKMELDUNGEN BEEINFLUSSEN UND INDIVIDUALISIEREN** können wir festlegen, welche Informationen unser Mailserver unterdrücken und weitergeben soll. Auch eine Individualisierung auf Mailserverbetreiberebene sind möglich. | ||
Zeile 445: | Zeile 451: | ||
# default: disable_vrfy_command = no | # default: disable_vrfy_command = no | ||
disable_vrfy_command = yes | disable_vrfy_command = yes | ||
+ | |||
+ | # Django : 2015-10-08 - Fehlercode bei Verwendung der Option | ||
+ | # reject_plaintext_session beim Einsatz von verpflichtender | ||
+ | # TLS-Transportverschlüsselung. | ||
+ | # https:// | ||
+ | # default: plaintext_reject_code = 450 | ||
+ | # plaintext_reject_code = 571 | ||
</ | </ | ||
- | Da wir ja nicht nur englischsprachige Nutzer haben, die bei unserem MX Post abliefern dürfen, möchten wir unter Umständen auch individuelle Bouncemessages verwenden. In der Section | + | Da wir ja nicht nur englischsprachige Nutzer haben, die bei unserem MX Post abliefern dürfen, möchten wir unter Umständen auch individuelle Bouncemessages verwenden. In der Sektion |
# cd / | # cd / | ||
Zeile 458: | Zeile 471: | ||
Bevor wir uns nun die einzelnen Lookup-Tabellen genauer ansehen, werfen wir noch einen Blick in die nachfolgende Übersicht um festzustellen, | Bevor wir uns nun die einzelnen Lookup-Tabellen genauer ansehen, werfen wir noch einen Blick in die nachfolgende Übersicht um festzustellen, | ||
- | <uml width=910 title=" | + | {{page>centos:mail_c7:postfix& |
- | + | ||
- | state " | + | |
- | qmqp : QMQP-Modul | + | |
- | + | ||
- | state "/ | + | |
- | sendmail | + | |
- | sendmail : " | + | |
- | + | ||
- | state "MTA - MTA Verkehr" | + | |
- | smtp_in : TCP/IP - Port 25 | + | |
- | + | ||
- | state "MUA - MSA Verkehr" | + | |
- | submission : TCP/IP - Port 587 | + | |
- | + | ||
- | state " | + | |
- | lmtp_24 : (Mail Delivery Agent) | + | |
- | lmtp_24 : Dovecot IMAP-Server | + | |
- | lmtp_24 : TCP/IP - Port 24 | + | |
- | + | ||
- | state " | + | |
- | smtp_25 : (Mail Transport Agent) | + | |
- | smtp_25 : andere SMTP-Server (Relayhosts) | + | |
- | smtp_25 : im Internet bzw. Intranet | + | |
- | smtp_25 : TCP/IP - Port 25 | + | |
- | + | ||
- | state " | + | |
- | mailman : Weitergabe der eMail | + | |
- | mailman : an Mailinglisten / wie Mailman | + | |
- | mailman : oder via UUCP ... | + | |
- | + | ||
- | state " | + | |
- | mailbox : Postfix - Queue | + | |
- | mailbox : " | + | |
- | mailbox : lokale Zustellung | + | |
- | + | ||
- | state master { | + | |
- | state " | + | |
- | maildrop : └── maildrop | + | |
- | + | ||
- | state " | + | |
- | pickup : └── pickup | + | |
- | + | ||
- | state " | + | |
- | anvil : └── | + | |
- | + | ||
- | state " | + | |
- | dnsblog : └── | + | |
- | + | ||
- | state " | + | |
- | tlsproxy : └── | + | |
- | + | ||
- | state " | + | |
- | postscreen : └── | + | |
- | + | ||
- | state " | + | |
- | verify : └── | + | |
- | + | ||
- | state " | + | |
- | tlsmgr: └── | + | |
- | + | ||
- | state " | + | |
- | scache: └── | + | |
- | + | ||
- | state " | + | |
- | qmqpd: └── | + | |
- | + | ||
- | state " | + | |
- | discard: └── | + | |
- | + | ||
- | state " | + | |
- | error : ├── error | + | |
- | error : └── retry | + | |
- | + | ||
- | state " | + | |
- | virtual: └── | + | |
- | + | ||
- | state " | + | |
- | cleanup : └── cleanup | + | |
- | + | ||
- | state " | + | |
- | showq : └── | + | |
- | + | ||
- | state " | + | |
- | rewrite : └── trivial-rewrite | + | |
- | + | ||
- | state " | + | |
- | bounce : ├── bounce | + | |
- | bounce : ├── defer | + | |
- | bounce : └── trace | + | |
- | + | ||
- | state " | + | |
- | smtpd : └── smtpd | + | |
- | + | ||
- | state " | + | |
- | incoming : └── incoming | + | |
- | + | ||
- | state " | + | |
- | hold : └── hold | + | |
- | + | ||
- | state " | + | |
- | corrupt : └── corrupt | + | |
- | + | ||
- | state " | + | |
- | active : └── active | + | |
- | + | ||
- | state " | + | |
- | deferred : └── deferred | + | |
- | + | ||
- | state " | + | |
- | qmgr : └── qmgr | + | |
- | + | ||
- | state " | + | |
- | flush : └── flush | + | |
- | + | ||
- | state " | + | |
- | resolve : └── resolve | + | |
- | + | ||
- | state " | + | |
- | local : └── local | + | |
- | + | ||
- | state " | + | |
- | pipe : └── pipe | + | |
- | + | ||
- | state " | + | |
- | lmtp : └── lmtp | + | |
- | + | ||
- | state " | + | |
- | smtp_out : └── smtp | + | |
- | + | ||
- | state " | + | |
- | proxymap : ├── proxymap | + | |
- | proxymap : └── proxywrite | + | |
- | } | + | |
- | + | ||
- | | + | |
- | | + | |
- | + | ||
- | qmqp -right-> qmqpd | + | |
- | | + | |
- | | + | |
- | + | ||
- | anvil --> smtpd | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | qmqpd --> cleanup | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | | + | |
- | qmgr --> deferred | + | |
- | qmgr --> active | + | |
- | qmgr --> hold | + | |
- | qmgr --> corrupt | + | |
- | | + | |
- | | + | |
- | qmgr --> local | + | |
- | qmgr -right-> smtp_out | + | |
- | qmgr --> pipe | + | |
- | qmgr --> lmtp | + | |
- | qmgr -left-> virtual | + | |
- | | + | |
- | error --> qmgr | + | |
- | flush --> qmgr | + | |
- | showq --> qmgr | + | |
- | | + | |
- | + | ||
- | lmtp --> lmtp_24 | + | |
- | | + | |
- | | + | |
- | pipe --> mailman | + | |
- | local --> mailbox | + | |
- | + | ||
- | + | ||
- | note right of cleanup | + | |
- | Lookup Table canonical_maps | + | |
- | Übersetzungstabelle zum | + | |
- | Umschreiben von nicht-lokalen | + | |
- | Empfängeradressen | + | |
- | end note | + | |
- | + | ||
- | + | ||
- | note right of cleanup | + | |
- | Lookup Table virtual_maps | + | |
- | Tabelle mit der Empfängeradresse | + | |
- | aller lokalen, virtuellen und | + | |
- | entfernten eMailadressen | + | |
- | end note | + | |
- | + | ||
- | note right of smtpd | + | |
- | Realtime Blockhole Lists | + | |
- | Nutzung von RBL zum Prüfen | + | |
- | von einliefernden Hosts | + | |
- | reverse DNS-Abfrage z.B. | + | |
- | bei SPAMHAUS | + | |
- | end note | + | |
- | + | ||
- | + | ||
- | note right of rewrite | + | |
- | Lookup Table relocated_maps | + | |
- | Tabelle für die Bounce-Nachrichten | + | |
- | mit Angabe der neuen eMailadresse | + | |
- | bei verzogenen Accounts. | + | |
- | end note | + | |
- | + | ||
- | note left of smtpd | + | |
- | Lookup Table access_client | + | |
- | Lookup Table access_helo | + | |
- | Lookup Table access_recipient | + | |
- | Lookup Table access_recipient-rfc | + | |
- | Lookup Table access_sender | + | |
- | Tabellen zum Black- und Whitelisten | + | |
- | an Hand der IP-Adrese, Hostname, | + | |
- | Empfänger oder Sender | + | |
- | end note | + | |
- | + | ||
- | note left of resolve | + | |
- | Lookup Table transport_maps | + | |
- | Tabelle zur adressabhängigen | + | |
- | Weiterleitung an einen | + | |
- | weiteren (finalen) MTA. | + | |
- | end note | + | |
- | + | ||
- | note right of local | + | |
- | Lookup Table / | + | |
- | Tabelle mit der lokalen eMails | + | |
- | an lokale Empfänger zugewiesen | + | |
- | werden können. | + | |
- | end note | + | |
- | + | ||
- | note left of local | + | |
- | Lookup Table .forward | + | |
- | Tabelle zur Steuerung von | + | |
- | automatischen Anwesenheitsnachrichten | + | |
- | end note | + | |
- | + | ||
- | note right of smtp_out | + | |
- | Lookup Table generic_maps | + | |
- | Tabelle zum Umschreiben | + | |
- | von eMailadressen | + | |
- | beim Versenden. | + | |
- | end note | + | |
- | + | ||
- | note right of lmtp | + | |
- | Lookup Table lmtp_generic_maps | + | |
- | Tabelle zum Umschreiben von Empfänger | + | |
- | eMail-Adressen im Envelope und Header | + | |
- | end note | + | |
- | + | ||
- | </ | + | |
Am Anfang der Definition unserer Lookup-Tabellen setzen wir noch zwei (Adress-)Listenspezifische Werte. Statt der Defaultmäßigen Tabellen im **hash**-Format setzen wir auf die wesentlich performanteren **btree**-Tabellen. | Am Anfang der Definition unserer Lookup-Tabellen setzen wir noch zwei (Adress-)Listenspezifische Werte. Statt der Defaultmäßigen Tabellen im **hash**-Format setzen wir auf die wesentlich performanteren **btree**-Tabellen. | ||
Zeile 1269: | Zeile 1027: | ||
| **5xx**// | | **5xx**// | ||
| **WARN**// | | **WARN**// | ||
+ | | **restriction** | ||
Zeile 1289: | Zeile 1047: | ||
# Postfix die ASCII-Konfigurationsdatei direkt auswertet! | # Postfix die ASCII-Konfigurationsdatei direkt auswertet! | ||
# | # | ||
+ | # | ||
+ | # | ||
</ | </ | ||
Zeile 1338: | Zeile 1098: | ||
# die zugehörige Datenbank erzeugt werden. | # die zugehörige Datenbank erzeugt werden. | ||
# | # | ||
+ | # | ||
</ | </ | ||
Zeile 2621: | Zeile 2382: | ||
virusalert@nausch.org | virusalert@nausch.org | ||
postmaster@nausch.org | postmaster@nausch.org | ||
+ | |||
+ | === virtual_alias files in Verbindung mit postfixadmin === | ||
+ | Verwalten wir die Domänen und Nutzerkonten mit Hilfe von **[[centos: | ||
+ | |||
+ | < | ||
+ | # das mySQL-Datenbankbackend (Verwaltung mit Hilfe von postfixadmin) | ||
+ | # default: virtual_mailbox_domains = $virtual_mailbox_maps | ||
+ | # virtual_alias_maps = $virtual_maps | ||
+ | # virtual_mailbox_maps = | ||
+ | virtual_mailbox_domains = proxy: | ||
+ | |||
+ | virtual_alias_maps = proxy: | ||
+ | proxy: | ||
+ | proxy: | ||
+ | |||
+ | virtual_mailbox_maps = proxy: | ||
+ | proxy: | ||
+ | |||
+ | Die zugehörigen Dateien, haben dann folgende Inhalte. | ||
+ | == mysql_virtual_domains_maps.cf == | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | # Definition der Datenbankanbindung zur Abfrage der virtuellen Domaenen | ||
+ | # | ||
+ | user = postfix_user | ||
+ | password = rbgsDK39DeM2b2btx9iMHfzd | ||
+ | hosts = mariadb.dmz.nausch.org | ||
+ | dbname = postfix | ||
+ | query = SELECT domain FROM domain WHERE domain=' | ||
+ | </ | ||
+ | |||
+ | == mysql_virtual_alias_maps.cf == | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | # Definition der Datenbankanbindung zur Abfrage der virtual Alias Maps | ||
+ | # | ||
+ | user = postfix_user | ||
+ | password = rbgsDK39DeM2b2btx9iMHfzd | ||
+ | hosts = mariadb.dmz.nausch.org | ||
+ | dbname = postfix | ||
+ | query = SELECT goto FROM alias WHERE address=' | ||
+ | </ | ||
+ | |||
+ | == mysql_virtual_alias_domain_maps.cf == | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | # Definition der Datenbankanbindung zur Abfrage der virtual Alias Domain Maps | ||
+ | # | ||
+ | user = postfix_user | ||
+ | password = rbgsDK39DeM2b2btx9iMHfzd | ||
+ | hosts = mariadb.dmz.nausch.org | ||
+ | dbname = postfix | ||
+ | query = SELECT goto FROM alias, | ||
+ | | ||
+ | AND alias_domain.active=' | ||
+ | </ | ||
+ | |||
+ | == mysql_virtual_alias_domain_catchall_maps.cf == | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | # Definition der Datenbankanbindung zur Abfrage der virtual Alias Domain Catchall Maps | ||
+ | # | ||
+ | user = postfix_user | ||
+ | password = rbgsDK39DeM2b2btx9iMHfzd | ||
+ | hosts = mariadb.dmz.nausch.org | ||
+ | dbname = postfix | ||
+ | query = SELECT goto FROM alias, | ||
+ | | ||
+ | AND alias_domain.active=' | ||
+ | </ | ||
+ | |||
+ | == mysql_virtual_mailbox_maps.cf == | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | # Definition der Datenbankanbindung zur Abfrage der virtual Mailbox Maps | ||
+ | # | ||
+ | user = postfix_user | ||
+ | password = rbgsDK39DeM2b2btx9iMHfzd | ||
+ | hosts = mariadb.dmz.nausch.org | ||
+ | dbname = postfix | ||
+ | query = SELECT maildir FROM mailbox WHERE username=' | ||
+ | </ | ||
+ | |||
+ | == mysql_virtual_alias_domain_mailbox_maps.cf == | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | # Definition der Datenbankanbindung zur Abfrage der virtual Alias Domain Mailbox Maps | ||
+ | # | ||
+ | user = postfix_user | ||
+ | password = rbgsDK39DeM2b2btx9iMHfzd | ||
+ | hosts = mariadb.dmz.nausch.org | ||
+ | dbname = postfix | ||
+ | query = SELECT maildir FROM mailbox, | ||
+ | AND mailbox.username = CONCAT(' | ||
+ | | ||
+ | </ | ||
==== bcc ==== | ==== bcc ==== | ||
Zeile 2791: | Zeile 2648: | ||
* **reject_rbl_client ix.dnsbl.manitu.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **ix.dnsbl.manitu.net** geblacklistet ist. | * **reject_rbl_client ix.dnsbl.manitu.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **ix.dnsbl.manitu.net** geblacklistet ist. | ||
* **reject_rbl_client bl.spamcop.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **bl.spamcop.net** geblacklistet ist. | * **reject_rbl_client bl.spamcop.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **bl.spamcop.net** geblacklistet ist. | ||
- | * **reject_rbl_client dnsbl.njabl.org** Blockiert die eMail, wenn die Client-IP-Adresse bei **dnsbl.njabl.org** geblacklistet ist. | ||
* **reject_rhsbl_client multi.uribl.com** \\ Blockiert die eMail, sofern der Client-Hostname in der verwendeten **rhsbl_domain**(**RHSBL**)((**R**ight-**H**and **S**ided **B**lacklist)) gelistet ist. | * **reject_rhsbl_client multi.uribl.com** \\ Blockiert die eMail, sofern der Client-Hostname in der verwendeten **rhsbl_domain**(**RHSBL**)((**R**ight-**H**and **S**ided **B**lacklist)) gelistet ist. | ||
+ | * **reject_plaintext_session** \\ Liefert einen **REJECT**, wenn die Verbindung nicht TLS transportverschlüsselt ist. | ||
==== SMTP Recipient Restrictions ==== | ==== SMTP Recipient Restrictions ==== | ||
Nachfolgende Definitionen fügen wir nun am Ende der // | Nachfolgende Definitionen fügen wir nun am Ende der // | ||
Zeile 2872: | Zeile 2728: | ||
smtpd_relay_restrictions = | smtpd_relay_restrictions = | ||
# Unsere eigenen Nutzer zulassen-/ | # Unsere eigenen Nutzer zulassen-/ | ||
- | | + | |
- | | + | |
# Backupserver (MX) erlauben | # Backupserver (MX) erlauben | ||
- | # | + | # |
# alles andere an relaying verbieten, d.h. mit einem finalen error 550 abweisen | # alles andere an relaying verbieten, d.h. mit einem finalen error 550 abweisen | ||
| | ||
Zeile 3233: | Zeile 3089: | ||
# default: disable_vrfy_command = no | # default: disable_vrfy_command = no | ||
disable_vrfy_command = yes | disable_vrfy_command = yes | ||
+ | |||
+ | # Django : 2015-10-08 - Fehlercode bei Verwendung der Option | ||
+ | # reject_plaintext_session beim Einsatz von verpflichtender | ||
+ | # TLS-Transportverschlüsselung. | ||
+ | # https:// | ||
+ | # default: plaintext_reject_code = 450 | ||
+ | # plaintext_reject_code = 573 | ||
Zeile 3441: | Zeile 3304: | ||
* **[[http:// | * **[[http:// | ||
- | ~~DISCUSSION~~ | + | |
- | ~~AUTOTWEET: | + |