Inhaltsverzeichnis
Postfix ArchLinux - Konfiguration: main server - SASL-Konfiguration
Postfix ist Wietse Venema's Mail-Server, welcher bei „IBM research“ als Alternative zum ehemals weit verbreiteten Programm Sendmail entwickelt wurde. Postfix erhebt den Anspruch ein schneller, einfach zu administrierender und sicherer Mail-Server zu sein.
Postfix wird von Wietse Venema entwickelt.
Beschreibung | Externer Link |
---|---|
Homepage | http://www.postfix.org |
Ankündigungen | http://www.postfix.org/announcements.html |
Dokumentation | http://www.postfix.org/documentation.html Postfix SASL Howto Postfix - master.cf |
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Vorhaben
Es soll für die Kommunikation via E-Mail mit Postfix nachfolgendes Konstrukt, wie in der gezeigten Skizze zu sehen ist, zum Einsatz kommen:
┌──────────────────────┐ ┌───┐ │ Interne │ │ I │ │ clients │ │ N │ ├──────────────────────┤ │ T │ │ │ │ E │ │ Smartphone, Laptop │ │ R │ │ Auth 'SASL client' │ │ N │ │ │ │ E │ │ Relay: main client │ │ T │ │ │ │ │ └────▼─────────────────┘ └─▲─┘ │ │ │ │ │ │ │ ┌───────────────────────────────────────────┐ │ │ │ Postfix- │ │ │ │ main server │ │ │ ├───────────────────────────────────────────┤ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ │ │ │ IN Port: 25 OUT │ │ │ │ │ ├───────────────────────────────────┤ │ │ │ │ │ ✔ interne E-Mail │ │ │ │ │ │ ✘ externe E-Mail │ │ │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ │ │ ✘ Authentifizierung: KEINE │ │ │ │ │ └───────────────────────────────────┘ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ │ │ │ IN Port: 465 OUT │ │ │ │ │ ├───────────────────────────────────┤ │ │ │ │ │ ✔ interne E-Mail │ │ │ │ │ │ ✔ externe E-Mail │ │ │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ │ │ ✔ Authentifizierung: Zertifikat │ │ │ │ │ └───────────────────────────────────┘ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ └───────────┼───► IN Port: 587 OUT ►───┼─────────────┘ │ ├───────────────────────────────────┤ │ │ │ ✔ interne E-Mail │ │ │ │ ✔ externe E-Mail │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ ✔ Authentifizierung: SASL │ │ │ └───────────────────────────────────┘ │ │ │ │ 'mx1.tachtler.net' │ │ │ └─────────────────────┬─────────────────────┘ │ ┌───────────▼───────────┐ │ │ │ 'imap.tachtler.net' │ │ │ │ Port: 24 │ │ ✔ TLS-verschlüsselt │ │ ✔ LMTP(s)-Transport │ │ │ └───────────────────────┘
Die interne/externe Kommunikation vom Smartphones, Laptops oder sonstiges clients zum Postfix-main server soll via TLS-Verschlüsselung mittels „encrypt“ und ausschliessliche über Port: 587
(submission) und mit einer Authentifizierung über SASL erzwungen werden.
Voraussetzungen
Für die nachfolgende Installation wird vorausgesetzt,
- dass eine lauffähige Version von Postfix ab Version 3.9
vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Postfix als Mindestvoraussetzung zwingend durchgeführt wurden:
Für die nachfolgende Installation wird zusätzlich vorausgesetzt,
- dass eine lauffähige Version von Dovecot ab Version 2.3
vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Dovecot als Mindestvoraussetzung zwingend durchgeführt wurden:
Konfiguration: main server - master.cf
syslog_name
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#syslog_name Postfix SASL Howto |
Defaultwert | syslog_name=${multi_instance_name?{$multi_instance_name}:{postfix}} |
Neuer Wert | syslog_name=postfix/submission |
Beschreibung | Ein Präfix, das dem Prozessnamen in Syslog-Einträgen vorangestellt wird, so dass z. B. aus smtpd - prefix/smtpd wird. WARNUNG - Eine von den Standardwerten abweichende syslog_name -Einstellung wird erst wirksam, nachdem ein Postfix-Prozess seine Initialisierung abgeschlossen hat. Fehler während der Prozessinitialisierung werden mit dem Standardnamen protokolliert. Beispiele hierfür sind Fehler beim „Parsen“ der Befehlszeilenargumente und Fehler beim Zugriff auf die Postfix-Konfigurationsdatei - main.cf . |
smtpd_tls_security_level
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_tls_security_level https://www.postfix.org/postconf.5.html#smtpd_tls_ciphers https://www.postfix.org/postconf.5.html#smtpd_tls_exclude_ciphers https://www.postfix.org/postconf.5.html#smtpd_tls_protocols https://www.postfix.org/postconf.5.html#smtpd_tls_enable_rpk https://www.postfix.org/postconf.5.html#smtpd_tls_mandatory_protocols https://www.postfix.org/postconf.5.html#smtpd_tls_mandatory_exclude_ciphers https://www.postfix.org/postconf.5.html#smtpd_tls_mandatory_ciphers https://www.postfix.org/postconf.5.html#smtpd_tls_fingerprint_digest https://www.postfix.org/postconf.5.html#smtpd_tls_ask_ccert https://www.postfix.org/postconf.5.html#smtpd_tls_req_ccert https://www.postfix.org/postconf.5.html#permit_tls_clientcerts Postfix TLS Support Postfix SASL Howto |
Defaultwert | smtpd_tls_security_level= |
Neuer Wert | smtpd_tls_security_level=enrypt |
Beschreibung | Die SMTP-TLS-Sicherheitsstufe für den Postfix-SMTP-Server; wenn ein nicht leerer Wert angegeben wird, hat dieser Vorrang vor den veralteten Parametern smtpd_use_tls und smtpd_enforce_tls . Dieser Parameter wird bei smtpd_tls_wrappermode = yes ignoriert. HINWEIS 1: Die Stufen fingerprint , verify und secure werden hier nicht unterstützt. Der Postfix-SMTP-Server gibt eine Warnung aus und verwendet stattdessen encrypt . Zur Überprüfung von Zertifikaten entfernter SMTP-Clients siehe Postfix TLS Support für eine Diskussion der Funktionen smtpd_tls_ask_ccert , smtpd_tls_req_ccert und permit_tls_clientcerts . HINWEIS 2: Die Parametereinstellung smtpd_tls_security_level = encrypt impliziert smtpd_tls_auth_only = yes . HINWEIS 3: Wenn Postfix über sendmail -bs aufgerufen wird, bietet es niemals STARTTLS an, da es keine ausreichenden Berechtigungen für den Zugriff auf den privaten Schlüssel des Servers hat. Dies ist das beabsichtigte Verhalten. |
Der Postfix SMTP-Server implementiert mehrere TLS-Sicherheitsstufen. Diese Stufen werden in den folgenden Abschnitten ausführlicher beschrieben
Stufe der Verschlüsselung | Beschreibung |
---|---|
none | TLS wird nicht verwendet. |
may | Opportunistisches TLS: kündigt STARTTLS-Unterstützung für entfernte SMTP-Clients an, verlangt aber nicht, dass die Clients TLS-Verschlüsselung verwenden. |
encrypt | Obligatorische TLS-Verschlüsselung: STARTTLS-Unterstützung für entfernte SMTP-Clients ankündigen und alle Klartextbefehle ausser HELO , EHLO , XCLIENT , STARTTLS , NOOP , QUIT und (Postfix ≥ 3.9) HELP zurückweisen. Gemäss RFC 2487 MUSS dies NICHT bei einem öffentlich referenzierten SMTP-Server angewendet werden. Stattdessen sollte dies auf dedizierten Servern verwendet werden, zum Beispiel Submission (Port 587). |
smtpd_sasl_auth_enable
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_sasl_auth_enable Postfix TLS Support Postfix SASL Howto |
Defaultwert | smtpd_sasl_auth_enable=no |
Neuer Wert | smtpd_sasl_auth_enable=yes |
Beschreibung | Aktiviert die SASL-Authentifizierung im Postfix-SMTP-Server. Standardmässig verwendet der Postfix-SMTP-Server keine Authentifizierung. Wenn ein entfernter SMTP-Client authentifiziert ist, kann die Zugriffsbeschränkung permit_sasl_authenticated verwendet werden, um den „Relay“-Zugriff zu erlauben. Um alle SMTP-Verbindungen von nicht authentifizierten Clients abzulehnen, kann smtpd_delay_reject = yes angegeben werden (welche die Voreinstellung ist) Einzelheiten zur SASL-Konfiguration und zum Betrieb sind unter nachfolgenden externen Link Postfix SASL Howto zu finden. |
smtpd_tls_auth_only
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_tls_auth_only Postfix SASL Howto |
Defaultwert | smtpd_tls_auth_only=no |
Neuer Wert | smtpd_tls_auth_only=yes |
Beschreibung | Wenn die TLS-Verschlüsselung im Postfix-SMTP-Server optional ist, darf die SASL-Authentifizierung über unverschlüsselte Verbindungen nicht angekündigt oder akzeptiert werden. |
local_header_rewrite_clients
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#local_header_rewrite_clients Postfix SASL Howto |
Defaultwert | local_header_rewrite_clients=permit_inet_interfaces |
Neuer Wert | local_header_rewrite_clients=static:all |
Beschreibung | Umschreiben oder Hinzufügen von Nachrichtenkopfzeilen in E-Mails von diesen Clients, wobei unvollständige Adressen mit dem Domänennamen in myorigin oder mydomain aktualisiert und fehlende Kopfzeilen hinzugefügt werden. |
Es kann eine Liste mit null
oder mehr der folgenden Parameter angegeben werden:
Paramater | Beschreibung |
---|---|
permit_inet_interfaces | Hängt den Domänennamen in myorigin oder mydomain an, wenn die Client-IP-Adresse mit inet_interfaces übereinstimmt. Dies ist standardmäßig aktiviert. |
permit_mynetworks | Hängt den Domänennamen in myorigin oder mydomain an, wenn die Client-IP-Adresse mit einem der in mynetworks aufgeführten Netzwerke oder Netzwerkadressen übereinstimmt. Diese Einstellung verhindert nicht das Umschreiben von E-Mail-Header-Adressen, wenn E-Mails von einem entfernten Client von einem benachbarten System weitergeleitet werden. |
permit_sasl_authenticated | Hängt den Domänennamen in myorigin oder mydomain an, wenn der Client erfolgreich über das RFC 4954 (AUTH) Protokoll authentifiziert wurde. |
permit_tls_clientcerts | Hängt den Domänennamen in myorigin oder mydomain an, wenn der TLS-Zertifikatsfingerabdruck oder der Fingerabdruck des öffentlichen Schlüssels des entfernten SMTP-Clients (Postfix Version 2.9 und höher) in relay_clientcerts aufgeführt ist. Der Fingerprint-Digest-Algorithmus kann über den Parameter smtpd_tls_fingerprint_digest konfiguriert werden (vor Postfix-Version 2.5 als md5 fest codiert). Der Standardalgorithmus ist sha256 , wenn Postfix ≥ 3.6 und der compatibility_level auf Version 3.6 oder höher gesetzt ist. Mit Postfix ≤ 3.5 ist der Standardalgorithmus md5. Der bewährte Algorithmus ist jetzt sha256. Die jüngsten Fortschritte in der Kryptoanalyse von Hash-Funktionen haben dazu geführt, dass md5 und sha1 zugunsten von sha256 veraltet sind. Solange jedoch keine „Second-Pre-Image“-Angriffe gegen die älteren Algorithmen bekannt sind, ist ihre Verwendung in diesem Zusammenhang zwar nicht empfohlen, aber wahrscheinlich immer noch sicher. |
permit_tls_all_clientcerts | Hängt den Domänennamen in myorigin oder mydomain an, wenn das TLS-Zertifikat des entfernten SMTP-Clients erfolgreich überprüft wurde, unabhängig davon, ob es auf dem Server aufgelistet ist, und unabhängig von der Zertifizierungsstelle. |
check_address_map | Hängt den Domänennamen in myorigin oder mydomain an, wenn die Client-IP-Adresse mit der angegebenen Nachschlagetabelle übereinstimmt. Das Ergebnis der Suche wird ignoriert, und es wird keine Subnetzsuche durchgeführt. Dies ist z.B. für pop-before-smtp Nachschlagetabellen geeignet. |
smtpd_reject_unlisted_recipient
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_reject_unlisted_recipient Postfix SASL Howto |
Defaultwert | smtpd_reject_unlisted_recipient=yes |
Neuer Wert | smtpd_reject_unlisted_recipient=yes |
Beschreibung | HINWEIS - Die Angabe muss explizit gesetzt werden! Verlangt, dass der Postfix-SMTP-Server E-Mails für unbekannte Empfängeradressen zurückweist, auch wenn keine explizite Zugriffsbeschränkung reject_unlisted_recipient angegeben ist. Dadurch wird verhindert, dass sich die Postfix-Warteschlange mit nicht zustellbaren MAILER-DAEMON -Nachrichten füllt. Eine Adresse gilt als „unbekannt“, wenn sie 1) nicht mit einem virtual -Alias oder einer canonical -Zuordnung übereinstimmt und 2) die Adresse nicht für ihre Adressklasse gültig ist. Für eine Definition der klassenbasierten Adressüberprüfung siehe ADDRESS_CLASS_README. |
smtpd_client_restrictions
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_client_restrictions Postfix SASL Howto Postfix - master.cf |
Defaultwert | smtpd_client_restrictions= |
Neuer Wert | smtpd_client_restrictions=permit_sasl_authenticated,reject |
Beschreibung | Optionale Einschränkungen, die der Postfix-SMTP-Server im Zusammenhang mit einer Client-Verbindungsanfrage anwendet. Standardmässig werden alle Verbindungsanfragen zugelassen. Es kann eine Liste von Beschränkungen angegeben werden, die durch Kommas und/oder Leerzeichen getrennt sind. Bei langen Zeilen kann die nächste Zeile mit einem Leerzeichen begonnen werden. Die Einschränkungen werden in der angegebenen Reihenfolge angewendet; die erste übereinstimmende Einschränkung gewinnt. |
Die folgenden Einschränkungen sind spezifisch für Client-Hostnamen oder Client-Netzwerkadressinformationen:
Beschränkung | Beschreibung |
---|---|
check_ccert_access | Standardmässig wird der Fingerabdruck des Zertifikats des entfernten SMTP-Clients oder der Fingerabdruck des öffentlichen Schlüssels (ab Postfix 2.9) als Nachschlageschlüssel für die angegebene access -Datenbank verwendet; ab Postfix Version 2.2 muss auch das Zertifikat des entfernten SMTP-Clients erfolgreich überprüft werden. Der Fingerprint-Digest-Algorithmus ist über den Parameter smtpd_tls_fingerprint_digest konfigurierbar (vor Postfix Version 2.5 als md5 fest codiert). Diese Funktion erfordert „smtpd_tls_ask_ccert = yes“ und ist ab Postfix Version 2.2 verfügbar. Der Standardalgorithmus ist sha256, wenn Postfix ≥ 3.6 ist und der compatibility_level auf 3.6 oder höher gesetzt ist. Mit Postfix ≤ 3.5 ist der Standardalgorithmus md5. Der bewährte Algorithmus ist jetzt sha256. Die jüngsten Fortschritte in der Kryptoanalyse von Hash-Funktionen haben dazu geführt, dass md5 und sha1 zugunsten von sha256 veraltet sind. Solange jedoch keine „Second-Pre-Image“-Angriffe gegen die älteren Algorithmen bekannt sind, ist ihre Verwendung in diesem Zusammenhang zwar nicht empfohlen, aber wahrscheinlich immer noch sicher. Alternativ dazu akzeptiert check_ccert_access eine explizite Suchreihenfolge (Postfix Version 3.5 und höher). Die Standard-Suchreihenfolge wie oben beschrieben entspricht: check_ccert_access { type:table, { search_order = cert_fingerprint, pubkey_fingerprint } } |
check_client_access | Sucht in der angegebenen Zugangsdatenbank nach dem Hostnamen oder der IP-Adresse des Clients. |
check_client_a_access | Durchsucht die angegebene access -Datenbank nach den IP-Adressen für den Client-Hostnamen und führt die entsprechende Aktion aus. HINWEIS - Ein Ergebnis von OK ist aus Sicherheitsgründen nicht zulässig. Stattdessen sollte DUNNO verwendet werden, um bestimmte Hosts von der Denyliste auszuschliessen. |
check_client_mx_access | Durchsucht die angegebene access -Datenbank nach den MX-Hosts für den Client-Hostnamen und führt die entsprechende Aktion aus. Wenn kein MX-Eintrag gefunden wird, suchen Sie nach A- oder AAAA-Einträgen, genau wie es der Postfix-SMTP-Client tun würde. HINWEIS - Ein Ergebnis von OK ist aus Sicherheitsgründen nicht zulässig. Stattdessen sollte DUNNO verwendet werden, um bestimmte Hosts von der Denyliste auszuschliessen. |
check_client_ns_access | Durchsucht die angegebene access -Datenbank nach den DNS-Servern für den Client-Hostnamen und führt die entsprechende Aktion aus. HINWEIS - Ein Ergebnis von OK ist aus Sicherheitsgründen nicht zulässig. Stattdessen sollte DUNNO verwendet werden, um bestimmte Hosts von der Denyliste auszuschliessen. |
check_reverse_client_hostname_access | Durchsucht die angegebene access-Datenbank nach dem unverifizierten Reverse-Client-Hostnamen oder der IP-Adresse. Siehe die access -Manualseite für weitere Details. HINWEIS - Ein Ergebnis von OK ist aus Sicherheitsgründen nicht zulässig. Stattdessen sollte DUNNO verwendet werden, um bestimmte Hosts von der Denyliste auszuschliessen. |
check_reverse_client_hostname_a_access | Durchsucht die angegebene access -Datenbank nach den IP-Adressen für den nicht verifizierten Reverse-Client-Hostnamen und führt die entsprechende Aktion aus. HINWEIS - Ein Ergebnis von OK ist aus Sicherheitsgründen nicht zulässig. Stattdessen sollte DUNNO verwendet werden, um bestimmte Hosts von der Denyliste auszuschliessen. |
check_reverse_client_hostname_mx_access | Durchsucht die angegebene access -Datenbank nach den MX-Hosts für den nicht verifizierten Reverse-Client-Hostnamen und führt die entsprechende Aktion aus. Wenn kein MX-Eintrag gefunden wird, suchen Sie nach A- oder AAAA-Einträgen, genau wie es der Postfix-SMTP-Client tun würde. HINWEIS - Ein Ergebnis von OK ist aus Sicherheitsgründen nicht zulässig. Stattdessen sollte DUNNO verwendet werden, um bestimmte Hosts von der Denyliste auszuschliessen. |
check_reverse_client_hostname_ns_access | Durchsucht die angegebene access -Datenbank nach den DNS-Servern für den nicht verifizierten Reverse-Client-Hostnamen und führt die entsprechende Aktion aus. HINWEIS - Ein Ergebnis von OK ist aus Sicherheitsgründen nicht zulässig. Stattdessen sollte DUNNO verwendet werden, um bestimmte Hosts von der Denyliste auszuschliessen. |
check_sasl_access | Verwendet den SASL-Benutzernamen des entfernten SMTP-Clients als Nachschlageschlüssel für die angegebene access -Datenbank. Der Nachschlageschlüssel hat die Form „username@domainname“, wenn der Wert des Parameters smtpd_sasl_local_domain nicht leer ist. Anders als check_client_access führt check_sasl_access keine Vergleiche mit übergeordneten Domains oder IP-Subnetzbereichen durch. |
permit_inet_interfaces | Erlaubt die Anfrage, wenn die IP-Adresse des Clients mit inet_interfaces übereinstimmt. |
permit_mynetworks | Erlaubt die Anfrage, wenn die IP-Adresse des Clients mit einem in mynetworks aufgeführten Netzwerk oder einer Netzwerkadresse übereinstimmt. |
permit_sasl_authenticated | Lassen Sie die Anfrage zu, wenn der Client erfolgreich über das Protokoll RFC 4954 (AUTH) authentifiziert wurde. |
permit_tls_all_clientcerts | Die Anfrage zulassen, wenn das Zertifikat des entfernten SMTP-Clients erfolgreich überprüft wurde. Diese Option darf nur verwendet werden, wenn eine spezielle CA die Zertifikate ausstellt und nur diese CA als vertrauenswürdige CA aufgeführt ist. Andernfalls würden auch Clients mit einem Zertifikat eines Drittanbieters zur Weiterleitung zugelassen werden. Wenn tls_append_default_CA = no angegeben ist, wenn die vertrauenswürdige CA mit smtpd_tls_CAfile oder smtpd_tls_CApath angegeben wird, um zu verhindern, dass Postfix die vom System bereitgestellten Standard-CAs anhängt. Diese Funktion erfordert smtpd_tls_ask_ccert = yes . |
permit_tls_clientcerts | Erlaubt die Anfrage, wenn der Fingerabdruck des Zertifikats des entfernten SMTP-Clients oder der Fingerabdruck des öffentlichen Schlüssels (Postfix Version 2.9 und höher) in relay_clientcerts aufgeführt ist. Der Fingerprint-Digest-Algorithmus kann über den Parameter smtpd_tls_fingerprint_digest konfiguriert werden (vor Postfix Version 2.5 als md5 fest codiert). Diese Funktion erfordert smtpd_tls_ask_ccert = yes und ist ab Postfix Version 2.2 verfügbar. Der Standardalgorithmus ist sha256, wenn Postfix ≥ 3.6 ist und der compatibility_level auf 3.6 oder höher gesetzt ist. Mit Postfix ≤ 3.5 ist der Standardalgorithmus md5. Der bewährte Algorithmus ist jetzt sha256. Die jüngsten Fortschritte in der Kryptoanalyse von Hash-Funktionen haben dazu geführt, dass md5 und sha1 zugunsten von sha256 veraltet sind. Solange jedoch keine „Second-Pre-Image“-Angriffe gegen die älteren Algorithmen bekannt sind, ist ihre Verwendung in diesem Zusammenhang zwar nicht empfohlen, aber wahrscheinlich immer noch sicher. |
reject_rbl_client rbl_domain | Weist die Anfrage zurück, wenn die umgekehrte Client-Netzwerkadresse mit dem A-Eintrag „d.d.d.d“ unter rbl_domain aufgeführt ist (nur Postfix Version 2.1 und höher). Jedes „d“ ist eine Zahl oder ein Muster innerhalb von „[]“, das eine oder mehrere „;“-getrennte Zahlen oder Zahlenbereiche enthält (Postfix ab Version 2.8). Wenn kein „=d.d.d.d“ angegeben ist, wird die Anfrage zurückgewiesen, wenn die umgekehrte Client-Netzwerkadresse mit einem beliebigen A-Eintrag unter rbl_domain aufgeführt ist. Der Parameter maps_rbl_reject_code gibt den Antwortcode für abgelehnte Anfragen an (Standard: 554), der Parameter default_rbl_reply gibt die Standardantwort des Servers an, und der Parameter rbl_reply_maps gibt Tabellen mit Serverantworten an, die durch rbl_domain indiziert sind. |
permit_dnswl_client dnswl_domain | Akzeptieren Sie die Anfrage, wenn die umgekehrte Client-Netzwerkadresse mit dem A-Eintrag „d.d.d.d“ unter dnswl_domain aufgeführt ist. Jedes „d“ ist eine Zahl oder ein Muster innerhalb von „[]“, das eine oder mehrere „;“-getrennte Zahlen oder Zahlen..-Zahlenbereiche enthält. Wenn kein „=d.d.d.d“ angegeben ist, wird die Anfrage akzeptiert, wenn die umgekehrte Client-Netzwerkadresse mit einem beliebigen A-Eintrag unter dnswl_domain aufgeführt ist. Zur Sicherheit wird permit_dnswl_client stillschweigend ignoriert, wenn es reject_unauth_destination ausser Kraft setzen würde. Das Ergebnis ist DEFER_IF_REJECT , wenn die Suche nach Allowlist fehlschlägt. |
reject_rhsbl_client rbl_domain | Weist die Anfrage zurück, wenn der Client-Hostname mit dem A-Eintrag „d.d.d.d“ unter rbl_domain aufgeführt ist (nur Postfix Version 2.1 und höher). Jedes „d“ ist eine Zahl oder ein Muster innerhalb von [] , das eine oder mehrere ; getrennte Zahlen oder Zahlenbereiche enthält (Postfix ab Version 2.8). Wenn kein „=d.d.d.d“ angegeben ist, wird die Anfrage zurückgewiesen, wenn der Client-Hostname mit einem beliebigen A-Eintrag unter rbl_domain aufgeführt ist. |
permit_rhswl_client rhswl_domain | Akzeptieren Sie die Anfrage, wenn der Hostname des Kunden mit dem A-Eintrag „d.d.d.d“ unter rhswl_domain aufgeführt ist. Jedes „d“ ist eine Zahl oder ein Muster innerhalb von [] , das eine oder mehrere ; getrennte Zahlen oder Zahlen..-Zahlenbereiche enthält. Wenn kein „=d.d.d.d“ angegeben ist, wird die Anfrage akzeptiert, wenn der Client-Hostname mit einem beliebigen A-Eintrag unter rhswl_domain aufgeführt ist. Vorsicht: Die Auflistung von Client-Namen ist anfällig, da die Suche nach dem Client-Namen aufgrund von vorübergehenden Ausfällen fehlschlagen kann. Client Name Allowlisting sollte nur verwendet werden, um Fehlalarme in z.B. DNS-basierten Blocklisten zu reduzieren, und nicht, um Ausnahmen von Zugriffsregeln zu machen. Zur Sicherheit wird permit_rhswl_client stillschweigend ignoriert, wenn es reject_unauth_destination ausser Kraft setzen würde. Das Ergebnis ist DEFER_IF_REJECT , wenn die Suche nach Allowlist fehlschlägt. |
reject_rhsbl_reverse_client rbl_domain | Weisen Sie die Anfrage zurück, wenn der ungeprüfte Reverse-Client-Hostname mit dem A-Eintrag „d.d.d.d“ unter rbl_domain aufgeführt ist. Jedes „d“ ist eine Zahl oder ein Muster innerhalb von [] , das eine oder mehrere ; getrennte Zahlen oder Zahlen..-Zahlenbereiche enthält. Wenn kein „=d.d.d.d“ angegeben ist, wird die Anfrage zurückgewiesen, wenn der nicht verifizierte Reverse-Client-Hostname mit einem beliebigen A-Eintrag unter rbl_domain aufgeführt ist. Siehe die obige Beschreibung von reject_rbl_client für weitere RBL-bezogene Konfigurationsparameter. |
reject_unknown_client_hostname | Ablehnung der Anfrage, wenn 1) die Zuordnung Client-IP-Adresse→Name fehlschlägt, oder 2) die Zuordnung Name→Adresse fehlschlägt, oder 3) die Zuordnung Name→Adresse nicht mit der Client-IP-Adresse übereinstimmt. Dies ist eine stärkere Einschränkung als die Funktion reject_unknown_reverse_client_hostname , die nur unter der obigen Bedingung 1) ausgelöst wird. Der Parameter unknown_client_reject_code gibt den Antwortcode für abgelehnte Anfragen an (Standard: 450). Die Antwort lautet immer 450, wenn die Suche nach Adresse→Name oder Name→Adresse aufgrund eines vorübergehenden Problems fehlgeschlagen ist. |
reject_unknown_reverse_client_hostname | Ablehnung der Anfrage, wenn die Client-IP-Adresse keine Adresse→Name-Zuordnung hat. Dies ist eine schwächere Einschränkung als die Funktion reject_unknown_client_hostname , die nicht nur erfordert, dass die Zuordnungen Adresse→Name und Name→Adresse existieren, sondern auch, dass die beiden Zuordnungen die Client-IP-Adresse wiedergeben. Der Parameter unknown_client_reject_code gibt den Antwortcode für abgelehnte Anfragen an (Standard: 450 ). Die Antwort lautet immer 450 , wenn die Suche nach Adresse→Name aufgrund eines vorübergehenden Problems fehlgeschlagen ist. |
check_policy_service servername | Fragt den angegebenen Richtlinienserver ab. |
defer | Verschieben Sie die Anfrage. Der Kunde wird aufgefordert, es später erneut zu versuchen. Diese Einschränkung ist am Ende einer Einschränkungsliste nützlich, um die Standardrichtlinie explizit zu machen. Der Parameter defer_code gibt den Antwortcode des SMTP-Servers an (Standard: 450 ). |
defer_if_permit | Verschieben Sie die Anfrage, wenn eine spätere Einschränkung zu einer expliziten oder impliziten PERMIT -Aktion führen würde. Dies ist nützlich, wenn eine Denylisting-Funktion aufgrund eines vorübergehenden Problems fehlschlägt. |
defer_if_reject | Verschieben Sie die Anfrage, wenn eine spätere Einschränkung zu einer REJECT-Aktion führen würde. Dies ist nützlich, wenn eine Erlaubnislistenfunktion aufgrund eines vorübergehenden Problems fehlschlägt. |
permit | Erlaube die Anfrage. Diese Einschränkung ist am Ende einer Einschränkungsliste nützlich, um die Standardrichtlinie explizit zu machen. |
reject_multi_recipient_bounce | Weist die Anfrage zurück, wenn der Absender des Umschlags die Adresse null ist und die Nachricht mehrere Umschlag-Empfänger hat. Diese Verwendung hat seltene, aber legitime Anwendungen: Unter bestimmten Bedingungen kann eine E-Mail mit mehreren Empfängern, die mit der DSN-Option NOTIFY=NEVER verschickt wurde, mit der Absenderadresse Null weitergeleitet werden. HINWEIS - Diese Einschränkung kann nur zuverlässig funktionieren, wenn sie in smtpd_data_restrictions oder smtpd_end_of_data_restrictions verwendet wird, da die Gesamtzahl der Empfänger in einem früheren Stadium der SMTP-Konversation nicht bekannt ist. Bei Verwendung in der RCPT -Phase wird nur der zweite usw. Empfänger zurückgewiesen. Der Parameter multi_recipient_bounce_reject_code gibt den Antwortcode für abgelehnte Anfragen an (Standard: 550 ). |
reject_plaintext_session | Ablehnen der Anfrage, wenn die Verbindung nicht verschlüsselt ist. Diese Einschränkung sollte nicht verwendet werden, bevor der Client die Möglichkeit hatte, die Verschlüsselung mit den Befehlen AUTH oder STARTTLS auszuhandeln. Der Parameter plaintext_reject_code gibt den Antwortcode für abgelehnte Anfragen an (Standard: 450 ). |
reject_unauth_pipelining | Weist die Anfrage zurück, wenn der Client SMTP-Befehle vorzeitig sendet, wo dies nicht erlaubt ist, oder wenn der Client SMTP-Befehle vorzeitig sendet, ohne zu wissen, dass Postfix tatsächlich ESMTP -Befehls-Pipelining unterstützt. Dies verhindert, dass Mails von Massensendungen, die ESMTP-Befehls-Pipelining missbräuchlich verwenden, um die Zustellung zu beschleunigen. Ab Postfix Version 2.6 setzt der SMTP-Server ein Flag pro Sitzung, wenn er illegales Pipelining feststellt, einschliesslich HELO - oder EHLO -Befehle, die in der Pipeline sind. Die Funktion reject_unauth_pipelining testet einfach, ob das Flag zu irgendeinem Zeitpunkt während der Sitzung gesetzt war. Bei älteren Postfix-Versionen prüft reject_unauth_pipelining den aktuellen Status der Input-Read-Queue, und seine Verwendung wird in anderen Kontexten als smtpd_data_restrictions nicht empfohlen. |
reject | Ablehnung der Anfrage. Diese Einschränkung ist am Ende einer Einschränkungsliste nützlich, um die Standardrichtlinie explizit zu machen. Der Konfigurationsparameter reject_code gibt den Antwortcode für abgelehnte Anfragen an (Standard: 554 ). |
sleep seconds | Pausieren Sie für die angegebene Anzahl von Sekunden und fahren Sie mit der nächsten Einschränkung in der Liste fort, falls vorhanden. |
warn_if_reject | Ein Sicherheitsnetz für Tests. Wenn warn_if_reject vor einer Beschränkung vom Typ reject , einer Zugriffstabellenabfrage oder einer check_policy_service -Abfrage steht, wird eine reject_warning -Meldung protokolliert, anstatt eine Anfrage abzulehnen (wenn eine Beschränkung vom Typ reject aufgrund eines temporären Fehlers fehlschlägt, wird eine reject_warning -Meldung für alle impliziten defer_if_permit -Aktionen protokolliert, die normalerweise verhindern würden, dass Mails von einer späteren Zugriffsbeschränkung akzeptiert werden). Diese Funktion hat keine Auswirkungen auf defer_if_reject -Beschränkungen. |
milter_macro_daemon_name
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#milter_macro_daemon_name Postfix TLS Support |
Defaultwert | milter_macro_daemon_name=$myhostname |
Neuer Wert | milter_macro_daemon_name=ORIGINATING |
Beschreibung | Der {daemon_name} Makrowert für Milter (Mailfilter) Anwendungen. Siehe MILTER_README für eine Liste der verfügbaren Makronamen und ihrer Bedeutung. |
SASL-Konfiguration: smtpd
Die interne/externe Kommunikation vom Smartphones, Laptops oder sonstiges clients zum Postfix-main server soll via TLS-Verschlüsselung mittels „encrypt“ und ausschliessliche über Port: 587
(submission) und mit einer Authentifizierung über SASL erzwungen werden.
smtpd_sasl_type
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_sasl_type Postfix SASL Howto |
Defaultwert | smtpd_sasl_type = cyrus |
Neuer Wert | smtpd_sasl_type = dovecot |
Beschreibung | Der SASL-Plug-in-Typ, den der Postfix-SMTP-Server für die Authentifizierung verwenden soll. Die verfügbaren Typen werden mit dem Befehl postconf -a aufgelistet. # postconf -a cyrus dovecot |
Siehe auch | Postfix ArchLinux - Konfiguration: main server - SASL-Konfiguration - smtpd_sasl_path |
smtpd_sasl_path
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_sasl_type Postfix SASL Howto |
Defaultwert | smtpd_sasl_path = smtpd |
Neuer Wert | smtpd_sasl_path = inet:imap.tachtler.net:12345 |
Beschreibung | Implementierungsspezifische Informationen, die der Postfix SMTP-Server an die SASL-Plugin-Implementierung weitergibt, die mit smtpd_sasl_type ausgewählt wurde. Typischerweise wird hier der Name einer Konfigurationsdatei oder eines Rendezvouspunktes angegeben. Wenn Dovecot für TCP-Socket-Kommunikation konfiguriert wurde, weil dieser auf einem anderen Rechner läuft ist diese Kommunikation erforderlich! |
Siehe auch | Postfix ArchLinux - Konfiguration: main server - SASL-Konfiguration - smtpd_sasl_type |
smtpd_sasl_auth_enable
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_sasl_auth_enable Postfix TLS Support Postfix SASL Howto |
Defaultwert | smtpd_sasl_auth_enable = no |
Neuer Wert | smtpd_sasl_auth_enable = yes |
Beschreibung | Aktiviert die SASL-Authentifizierung im Postfix-SMTP-Server. Standardmässig verwendet der Postfix-SMTP-Server keine Authentifizierung. Wenn ein entfernter SMTP-Client authentifiziert ist, kann die Zugriffsbeschränkung permit_sasl_authenticated verwendet werden, um den „Relay“-Zugriff zu erlauben. Um alle SMTP-Verbindungen von nicht authentifizierten Clients abzulehnen, kann smtpd_delay_reject = yes angegeben werden (welche die Voreinstellung ist) Einzelheiten zur SASL-Konfiguration und zum Betrieb sind unter nachfolgenden externen Link Postfix SASL Howto zu finden. HINWEIS - Unabhängig von der Art der SASL-Implementierung erfordert die Aktivierung der SMTP-Authentifizierung im Postfix SMTP-Server immer das Setzen der Option smtpd_sasl_auth_enable = yes |
broken_sasl_auth_clients
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#broken_sasl_auth_clients Postfix SASL Howto |
Defaultwert | broken_sasl_auth_clients = no |
Neuer Wert | broken_sasl_auth_clients = yes |
Beschreibung | Ermöglicht die Interoperabilität mit entfernten SMTP-Clients, die eine veraltete Version des AUTH-Befehls (RFC 4954) implementieren. Beispiele für solche Clients sind MicroSoft Outlook Express Version 4 und MicroSoft Exchange Version 5.0. Die Angabe broken_sasl_auth_clients = yes ermöglicht Postfix die AUTH-Unterstützung, die auf eine nicht standardisierte Weise angekündigt wird. |
smtpd_sasl_security_options
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_sasl_security_options Postfix SASL Howto |
Defaultwert | smtpd_sasl_security_options = noanonymous |
Neuer Wert | smtpd_sasl_security_options = noanonymous, noplaintext |
Beschreibung | Postfix SMTP-Server SASL-Sicherheitsoptionen; ab Postfix Version 2.3 hängt die Liste der verfügbaren Funktionen von der SASL-Server-Implementierung ab, die mit smtpd_sasl_type ausgewählt wird. Die folgenden Sicherheitsfunktionen sind für die SASL-Implementierung des cyrus -Servers definiert: Einschränkung der Authentifizierungsmechanismen, die der Postfix-SMTP-Server dem Client anbietet. Die Liste der verfügbaren Authentifizierungsmechanismen ist systemabhängig. noplaintext - Methoden, die Klartext-Passwörter verwenden, nicht zulassen. noactive - Methoden, die einem aktiven (nicht wörterbuchbasierten) Angriff unterliegen, werden nicht zugelassen. nodictionary - Methoden, die einem passiven Angriff (Wörterbuch) ausgesetzt sind, werden nicht zugelassen. noanonymous - Methoden, die eine anonyme Authentifizierung erlauben, werden nicht zugelassen. forward_secrecy - Nur Methoden zulassen, die Forward Secrecy unterstützen (nur Dovecot). mutual_auth - Nur Methoden zulassen, die gegenseitige Authentifizierung ermöglichen (nicht verfügbar mit Cyrus SASL Version 1). Standardmässig akzeptiert der Postfix-SMTP-Server Klartext-Passwörter, nicht aber anonyme Anmeldungen. WARNUNG - Es scheint, dass die Clients die Authentifizierungsmethoden in der vom Server angegebenen Reihenfolge ausprobieren (z.B. PLAIN ANONYMOUS CRAM-MD5 ). Das bedeutet, wenn Klartextpasswörter deaktiviert sind, melden sich die Clients anonym an, selbst wenn diese CRAM-MD5 verwenden könnten. Wenn also Klartextanmeldungen deaktiviert werden, sollten auch anonyme Anmeldungen deaktiviert werden. Postfix behandelt die anonyme Anmeldung als keine Authentifizierung. |
Eigenschaft | Beschreibung |
---|---|
noanonymous | Verwendet keine Mechanismen, die eine anonyme Authentifizierung erlauben. |
noplaintext | Keine Mechanismen verwenden, die unverschlüsselte Informationen über den Benutzernamen und das Passwort übertragen. |
nodictionary | Keine Mechanismen verwenden, die anfällig für Wörterbuchangriffe sind. |
forward_secrecy | Verlangt vorwärts gerichtete Geheimhaltung zwischen den Sitzungen (die Unterbrechung einer Sitzung führt nicht zur Unterbrechung früherer Sitzungen). |
mutual_auth | Nur Mechanismen verwenden, die sowohl den Client als auch den Server gegenseitig authentifizieren. |
smtpd_sasl_tls_security_options
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_sasl_tls_security_options Postfix SASL Howto |
Defaultwert | smtpd_sasl_tls_security_options = $smtpd_sasl_security_options |
Neuer Wert | smtpd_sasl_tls_security_options = noanonymous |
Beschreibung | Die Sicherheitsoptionen für die SASL-Authentifizierung, die der Postfix-SMTP-Server für TLS-verschlüsselte SMTP-Sitzungen verwendet. |
Eigenschaft | Beschreibung |
---|---|
noanonymous | Verwendet keine Mechanismen, die eine anonyme Authentifizierung erlauben. |
noplaintext | Keine Mechanismen verwenden, die unverschlüsselte Informationen über den Benutzernamen und das Passwort übertragen. |
nodictionary | Keine Mechanismen verwenden, die anfällig für Wörterbuchangriffe sind. |
forward_secrecy | Verlangt vorwärts gerichtete Geheimhaltung zwischen den Sitzungen (die Unterbrechung einer Sitzung führt nicht zur Unterbrechung früherer Sitzungen). |
mutual_auth | Nur Mechanismen verwenden, die sowohl den Client als auch den Server gegenseitig authentifizieren. |
smtpd_tls_auth_only
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_tls_auth_only Postfix SASL Howto |
Defaultwert | smtpd_tls_auth_only = no |
Neuer Wert | smtpd_tls_auth_only = yes |
Beschreibung | Wenn die TLS-Verschlüsselung im Postfix-SMTP-Server optional ist, darf die SASL-Authentifizierung über unverschlüsselte Verbindungen nicht angekündigt oder akzeptiert werden. |
smtpd_sasl_local_domain
Information | Beschreibung |
---|---|
Dokumentation | https://www.postfix.org/postconf.5.html#smtpd_sasl_local_domain Postfix SASL Howto |
Defaultwert | smtpd_sasl_local_domain = |
Neuer Wert | smtpd_sasl_local_domain = $mydomain |
Beschreibung | Der Name des lokalen SASL-Authentifizierungsbereichs des Postfix-SMTP-Servers. Standardmässig ist der Name des lokalen Authentifizierungsbereichs die Zeichenfolge null. Postfix kann einen Domänennamen (oder eine beliebige andere Zeichenfolge) an einen SASL-Anmeldenamen anhängen, der keinen Domänenteil enthält, z. B. „klaus“ anstelle von „klaus@tachtler.net“. |
/etc/postfix/master.cf
Nachfolgende Änderungen sind in der Konfigurationsdatei /etc/postfix/master.cf
erforderlich:
(Nur relevanter Ausschnitt):
# Tachtler - ENABLE submissions - submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o local_header_rewrite_clients=static:all -o smtpd_reject_unlisted_recipient=no # Instead of specifying complex smtpd_<xxx>_restrictions here, # specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions" # here, and specify mua_<xxx>_restrictions in main.cf (where # "<xxx>" is "client", "helo", "sender", "relay", or "recipient"). -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_helo_restrictions= # -o smtpd_sender_restrictions= # -o smtpd_relay_restrictions= # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
Hier werden aus kommentierte Zeilen, wie folgt ein kommentiert.
Erklärung: known_tcp_ports |
---|
Optionale Einstellung, die Nachforschungen in der services -Datenbank vermeidet. Diese Funktion wurde implementiert, um Unstimmigkeiten im Namen des Port „465“-Dienstes zu beseitigen. Die ABNF lautet: known_tcp_ports = empty %%|%% name-to-port *(„,“ name-to-port) name-to-port = 1*(dienstname „=') port-number Das Komma ist erforderlich. Ein Leerzeichen ist optional, darf aber nicht innerhalb eines Dienstnamens oder einer Portnummer stehen. vvvvvvvv |
Bevor der der postfix/master
-Daemon/Dienst zum ersten mal gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration der /etc/postfix/master.cf
durch nachfolgenden Befehl, zu empfehlen
postconf -M
und es sollte eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen:
# postconf -M smtp inet n - n - - smtpd tlsproxy unix - - n - 0 tlsproxy submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o local_header_rewrite_clients=static:all -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING submissions inet n - n - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o local_header_rewrite_clients=static:all -o {smtpd_client_restrictions=check_ccert_access lmdb:${config_directory}/check_ccert_access_maps,reject} -o milter_macro_daemon_name=ORIGINATING pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp -o syslog_name=${multi_instance_name?{$multi_instance_name}:{postfix}}/$service_name showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache postlog unix-dgram n - n - 1 postlogd
/etc/postfix/main.cf
Falls vorstehende Änderungen durchgeführt wurden, sollte ein Neustart von Postfix nichts mehr im Wege stehen.
Bevor der der postfix/master
-Daemon/Dienst zum ersten mal gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen
postconf -n
und es sollte eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen:
# postconf -n alias_database = $alias_maps alias_maps = lmdb:${config_directory}/aliases broken_sasl_auth_clients = yes compatibility_level = 3.9 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, server.idmz.$mydomain myhostname = mx1.tachtler.net mynetworks = 127.0.0.0/32 10.0.0.0/24 192.168.0.0/24 [::1]/128 [fd00:0:0:10::]/64 [fe80:0:0:10::]/64 [fd00:0:0:192::]/64 myorigin = server.idmz.$mydomain proxy_interfaces = 88.217.171.167 recipient_canonical_maps = lmdb:${config_directory}/recipient_canonical_maps smtp_dns_support_level = dnssec smtp_tls_CApath = ${config_directory}/ssl/certs smtp_tls_block_early_mail_reply = yes smtp_tls_chain_files = ${config_directory}/ssl/certs/server-chain.pem smtp_tls_connection_reuse = yes smtp_tls_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtp_tls_loglevel = 1 smtp_tls_mandatory_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtp_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 smtp_tls_protocols = >=TLSv1.2, <=TLSv1.3 smtp_tls_security_level = dane smtp_tls_session_cache_database = lmdb:${data_directory}/smtp_scache smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_sasl_path = inet:imap.tachtler.net:12345 smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_tls_CApath = ${config_directory}/ssl/certs smtpd_tls_ask_ccert = yes smtpd_tls_auth_only = yes smtpd_tls_chain_files = ${config_directory}/ssl/certs/server-chain.pem smtpd_tls_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtpd_tls_loglevel = 1 smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtpd_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 smtpd_tls_protocols = >=TLSv1.2, <=TLSv1.3 smtpd_tls_received_header = yes smtpd_tls_security_level = may smtpd_tls_session_cache_database = lmdb:${data_directory}/smtpd_scache tls_append_default_CA = yes tls_preempt_cipherlist = yes tls_random_bytes = 255
HINWEIS - die Konfiguration des postfix/master
-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration ohne Fehlermeldungen erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber zumindest syntaktische Fehler ausschliesst !!!
Neustart
Zuerst sollte nun der postfix-Server mit nachfolgendem Befehle neu gestartet werden:
# systemctl restart postfix.service
Mit nachfolgendem Befehl kann der Status des Postfix-Servers abgefragt werden:
# systemctl status postfix.service ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: > Active: active (running) since Fri 2024-12-27 21:54:59 CET; 5s ago Invocation: 4e9d16f279b046c09fcbade956f17e46 Process: 3809 ExecStart=/usr/bin/postfix start (code=exited, status=0/SUCCE> Main PID: 3877 (master) Tasks: 3 (limit: 2315) Memory: 2.7M (peak: 3.9M) CPU: 261ms CGroup: /system.slice/postfix.service ├─3877 /usr/lib/postfix/bin/master -w ├─3878 pickup -l -t unix -u └─3879 qmgr -l -t unix -u Dec 27 21:54:59 server systemd[1]: Starting Postfix Mail Transport Agent... Dec 27 21:54:59 server postfix[3875]: postfix/postlog: starting the Postfix mai> Dec 27 21:54:59 server postfix/postfix-script[3875]: starting the Postfix mail > Dec 27 21:54:59 server postfix/master[3877]: daemon started -- version 3.9.1, c> Dec 27 21:54:59 server systemd[1]: Started Postfix Mail Transport Agent.
Nachfolgender Befehl listet die IP-Adressen und die Ports auf, auf denen der Postfix-Server lauscht. Port 587
sollte hinzugekommen sein!:
# ss -taubenp | grep postfix tcp LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master",pid=3877,fd=13)) ino:24084 sk:3 cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 0.0.0.0:465 0.0.0.0:* users:(("master",pid=3877,fd=25)) ino:24099 sk:4 cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 0.0.0.0:587 0.0.0.0:* users:(("master",pid=3877,fd=21)) ino:24093 sk:6 cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 [::]:25 [::]:* users:(("master",pid=3877,fd=14)) ino:24085 sk:b cgroup:/system.slice/postfix.service v6only:1 <-> tcp LISTEN 0 100 [::]:465 [::]:* users:(("master",pid=3877,fd=26)) ino:24100 sk:c cgroup:/system.slice/postfix.service v6only:1 <-> tcp LISTEN 0 100 [::]:587 [::]:* users:(("master",pid=3877,fd=22)) ino:24094 sk:e cgroup:/system.slice/postfix.service v6only:1 <->
Test
Ob die interne/externe Kommunikation vom Smartphones, Laptops oder sonstiges clients zum Postfix-main server soll via TLS-Verschlüsselung mittels „encrypt“ und ausschliessliche über Port: 587
(submission) und mit einer Authentifizierung über SASL erzwungen werden kann, soll nachfolgender Test (bis zur SASL-Authentifizierung) zeigen:
Unter nachfolgendem internen Link, wurden Benutzer im „Backend“-System Dovecot angelegt:
HINWEIS - Die wie in vorher stehenden internen Link angelegten Benutzer sollen nur für nachfolgenden Test herangezogen werden - genauer gesagt die dort angelegten Benutzernamen und das erstellte Passwort!
Da die Authentifizierung mittels Benutzername und Passwort in base64
kodiert erfolgen muss, ist es erforderlich mit nachfolgenden Befehl den Benutzernamen und das Passwort entsprechend wie folgt zu kodieren:
# echo -ne '\000username\000password' | openssl base64
In dem nachfolgend durchzuführenden Beispiel müssen der Benutzername und das Passwort wie folgt kodiert werden:
# echo -ne '\000klaus@tachtler.net\000geheim' | openssl base64 AGtsYXVzQHRhY2h0bGVyLm5ldABnZWhlaW0=
Anschliessend kann dann der eigentliche Test mit nachfolgendem Befehl durchgeführt werden:
# openssl s_client -starttls smtp -connect mx1.tachtler.net:587 Connecting to fd00::10:10:0:0:60 CONNECTED(00000003) depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1 verify return:1 depth=1 C=US, O=Let's Encrypt, CN=R10 verify return:1 depth=0 CN=tachtler.net verify return:1 --- Certificate chain 0 s:CN=tachtler.net i:C=US, O=Let's Encrypt, CN=R10 a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA256 v:NotBefore: Dec 9 09:17:52 2024 GMT; NotAfter: Mar 9 09:17:51 2025 GMT 1 s:C=US, O=Let's Encrypt, CN=R10 i:C=US, O=Internet Security Research Group, CN=ISRG Root X1 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Mar 13 00:00:00 2024 GMT; NotAfter: Mar 12 23:59:59 2027 GMT --- Server certificate -----BEGIN CERTIFICATE----- MIIGEjCCBPqgAwIBAgISA77VgnRw4HEdMMJnb1bmRAwkMA0GCSqGSIb3DQEBCwUA MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD EwNSMTAwHhcNMjQxMjA5MDkxNzUyWhcNMjUwMzA5MDkxNzUxWjAXMRUwEwYDVQQD Ewx0YWNodGxlci5uZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQD+ qbUqa3TORs2GwXHxykg48j+KLv8TNBw7/hqsJxQ/WzuZpEiTxlXDgFztlFEEj5zf UVOyg//vs6msSPqDkrxIx9Yo8SAfjUlS4erwXggRUZsyf1HxKIR89/SAPmw7PgKq Bb9B71Wwpg570X9RqDsszxguVbDBUw/u5Ijb7uOBoIPUe2dpOuS6qmnmNzssKbJX Hx2JHUstqvxfk3Tsgm6CnTfZPJablLyausO3BDn7e+UE0jd9V8xPemkKuLhwIICG HKzYLu61AkdOYYOZnx2LI6xMtqfwBqq0CDHLq1mrIRT3cr4NbBKdrkWL+xjtVP0R WVKeodH531z64XEIX74FlOE8gX6ZkO81EZgWWStLJUwVKVB1oZUElEtkxx4+blGJ XlxsMIbEh72IrF44qoZn/9+JVe4zWxbe5IzMeoc62ax13ovznVQ4QnwMliVtvtSF FPZsNTO12MLmcf2S60ars2vcFMpGDfH/JMnRirv6IIx/JTJFR63OLDcetSxWu0Kq 6sespVDA1c7l8RUBNQlTENPrJ4q2T5x2wp0cH18+NV4xl4nRQVz1XOCYZt1oocmI CBh4YLZCcI888OXcEwuNiCy8k/qbm6fTB3fCnIkamlhw/bcKSz1YxyPqrX5NqDAO QJPlJWvBLCbybF/82VDLAbGlpAK+nRe7iF8yp1Ad6wIDAQABo4ICOjCCAjYwDgYD VR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNV HRMBAf8EAjAAMB0GA1UdDgQWBBT+qMwQqGvSFqb9VP+yKDFfYrtZJjAfBgNVHSME GDAWgBS7vMNHpeS8qcbDpHIMEI2iNeHI6DBXBggrBgEFBQcBAQRLMEkwIgYIKwYB BQUHMAGGFmh0dHA6Ly9yMTAuby5sZW5jci5vcmcwIwYIKwYBBQUHMAKGF2h0dHA6 Ly9yMTAuaS5sZW5jci5vcmcvMEIGA1UdEQQ7MDmCDioudGFjaHRsZXIubmV0ggx0 YWNodGxlci5uZXSCGXd3dy5kb2t1d2lraS50YWNodGxlci5uZXQwEwYDVR0gBAww CjAIBgZngQwBAgEwggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdgBOdaMnXJoQwzhb bNTfP1LrHfDgjhuNacCx+mSxYpo53wAAAZOq64hgAAAEAwBHMEUCIFHdfsua8WoQ +7pES6B50OzUqAx3pEGWNiFAvyqOBdf0AiEAnAQJd/s+y/1wNRd39qaWHB9c5UNt y+VhMI28mw/3gUEAdQDgkrP8DB3I52g2H95huZZNClJ4GYpy1nLEsE2lbW9UBAAA AZOq64iVAAAEAwBGMEQCIFoHh24Xe9heEIgQILIHKVeCZcXEqOGBEGtCuQAv8+XF AiA21yd26l6UrTJa9Gh5JqSUiHombXus1S1iTTVq+CvfLjANBgkqhkiG9w0BAQsF AAOCAQEATRx7zn51qn+MtgcZ/b+JP8kTeBjVHejyQxUSR/lp2a5wt0Aob+gm3QC5 lOFyEr2WQwDuCCi9V3GPhdGqZjV5HNWpNJVlzqugjXcUt1vaQbXC7lPv2bjbJDGO Oyxxo+VEBPXV+nKOYILaI/vZ+7WW9jk2A6lXefwbXF3eQW/tE0wzvTtzXUuwMQqP XRywG5KX5N4+9SjMJw4kdzAjQb0AsgyBEsVJs1kU65G0yyBWbMGkXYgJpTkBCDh1 KouTDY+LluY9FwU/KvkkQfSj43nXzmAKAUbdLirFgdsuelElHFB2YTyG/4o6MBj7 2PAIkiAQfwSAXzdvUuArvWgtwAxlaw== -----END CERTIFICATE----- subject=CN=tachtler.net issuer=C=US, O=Let's Encrypt, CN=R10 --- No client certificate CA names sent Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:ECDSA+SHA1:RSA+SHA224:RSA+SHA1 Shared Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512 Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 3974 bytes and written 470 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 Protocol: TLSv1.3 Server public key is 4096 bit This TLS version forbids renegotiation. Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- 250 CHUNKING --- Post-Handshake New Session Ticket arrived: SSL-Session: Protocol : TLSv1.3 Cipher : TLS_AES_256_GCM_SHA384 Session-ID: 4DCA0D598DB7137F970DB371C1C4A3EEEE2310A3E662D9B45321F7B4F2B25BE2 Session-ID-ctx: Resumption PSK: A409DF0F7D9D4D4E8F48BA5B952382500D112758889C4CF13B318A5490D4F25ACB373FD79EB54D85D59C69B133B1D740 PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 7200 (seconds) TLS session ticket: 0000 - f9 dd c3 11 ec 0e 22 c9-73 75 4d d3 95 34 49 f0 ......".suM..4I. 0010 - a4 cf 6f a6 0f af c2 a6-d0 4e 9f 02 0c f6 91 f6 ..o......N...... 0020 - cb aa 55 07 7e 12 94 5d-40 cf 4e 75 a3 7d 99 81 ..U.~..]@.Nu.}.. 0030 - 9d 01 85 8b e8 54 4a b7-2e 57 7e 24 21 a4 cf 53 .....TJ..W~$!..S 0040 - e6 cf 36 00 79 1e 89 fa-84 59 2a 72 81 7f d4 96 ..6.y....Y*r.... 0050 - e2 17 23 60 55 0e d9 64-a0 26 a7 f8 2c 52 78 02 ..#`U..d.&..,Rx. 0060 - 9b 64 0e d8 1f ce 59 f3-b6 9f 77 f0 83 2f ca cf .d....Y...w../.. 0070 - ee 54 f6 e7 c7 8b 23 4a-9e 2b a9 e9 04 3c c3 23 .T....#J.+...<.# 0080 - 1b be 05 fc 38 9b 09 c9-ec 23 0a 42 43 9e 7c c8 ....8....#.BC.|. 0090 - 52 98 d8 6f b9 e1 99 6c-90 e4 71 a5 8a 2d ad 4e R..o...l..q..-.N 00a0 - be b8 00 3e ee 7a 1e 50-27 27 60 e4 ac db a8 14 ...>.z.P''`..... 00b0 - 5e 02 3b 96 29 25 23 df-30 09 d0 c3 09 4c 54 47 ^.;.)%#.0....LTG 00c0 - 6b 10 4a 33 42 36 db a9-bc 10 fe 40 c4 3c e6 da k.J3B6.....@.<.. Start Time: 1735334400 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: no Max Early Data: 0 --- read R BLOCK EHLO mx1.tachtler.net 250-mx1.tachtler.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN DIGEST-MD5 CRAM-MD5 LOGIN 250-AUTH=PLAIN DIGEST-MD5 CRAM-MD5 LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250-SMTPUTF8 250 CHUNKING AUTH PLAIN AGtsYXVzQHRhY2h0bGVyLm5ldABnZWhlaW0= 235 2.7.0 Authentication successful quit 221 2.0.0 Bye closed
HINWEIS - Wichtig in der vorhergehenden Ausgabe sind die Zeilen:
250-AUTH PLAIN DIGEST-MD5 CRAM-MD5 LOGIN 250-AUTH=PLAIN DIGEST-MD5 CRAM-MD5 LOGIN
Ausgabe, welche SASL-Authentifizierungsmechanismen möglich sind.
235 2.7.0 Authentication successful
Ausgabe, ob die SASL-Authentifizierung erfolgreich war.
Erforderliche Benutzereingaben:
openssl s_client -starttls smtp -connect mx1.tachtler.net:587
EHLO mx1.tachtler.net
AUTH PLAIN AGtsYXVzQHRhY2h0bGVyLm5ldABnZWhlaW0=
quit