Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_archlinux_konfigurationmain_server_sasl_konfiguration

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.

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:

  1. openssl s_client -starttls smtp -connect mx1.tachtler.net:587
  2. EHLO mx1.tachtler.net
  3. AUTH PLAIN AGtsYXVzQHRhY2h0bGVyLm5ldABnZWhlaW0=
  4. quit
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/postfix_archlinux_konfigurationmain_server_sasl_konfiguration.txt · Zuletzt geändert: 2025/01/11 08:51 von klaus