Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_archlinux_konfigurationmain_server_smtps_konfiguration

Postfix ArchLinux - Konfiguration: main server - smtps-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:

 ┌──────────────────────┐                                                 ┌───┐
 │       Postfix-       │                                                 │ I │
 │     null client      │                                                 │ N │
 ├──────────────────────┤                                                 │ T │
 │                      │                                                 │ E │
 │  Listen 'localhost'  │                                                 │ R │
 │  Cert 'self-signed'  │                                                 │ 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 Kommunikation vom Postfix-null client zum Postfix-main client soll via TLS-Verschlüsselung mittels „secure“ und ausschliessliche über Port: 465 (smtps) und mit einer Authentifizierung über das Zertifikats des Postfix-null client erzwungen werden.

Voraussetzungen

Konfiguration: main server - master.cf

syslog_name

Information Beschreibung
Dokumentation https://www.postfix.org/postconf.5.html#syslog_name
Postfix TLS Support
Defaultwert
syslog_name=${multi_instance_name?{$multi_instance_name}:{postfix}}
Neuer Wert
syslog_name=postfix/smtps
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_wrappermode

Information Beschreibung
Dokumentation https://www.postfix.org/postconf.5.html#smtpd_tls_wrappermode
Postfix TLS Support
Defaultwert
smtpd_tls_wrappermode=no
Neuer Wert
smtpd_tls_wrappermode=yes
Beschreibung Lässt den Postfix-SMTP-Server im TLS-Wrapper-Modus laufen, anstatt den STARTTLS-Befehl zu verwenden.

Wenn dieser Dienst unterstützt werden soll, muss ein spezieller Port in der master.cf aktiviert werden und es muss -o smtpd_tls_wrappermode = yes in der Befehlszeile des SMTP-Servers angegeben werden. Der Port 465 (submissions/smtps) ist für diesen Zweck reserviert.

local_header_rewrite_clients

Information Beschreibung
Dokumentation https://www.postfix.org/postconf.5.html#local_header_rewrite_clients
Postfix TLS Support
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 knn 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_client_restrictions

Information Beschreibung
Dokumentation https://www.postfix.org/postconf.5.html#smtpd_client_restrictions
Postfix TLS Support
Postfix - master.cf
Defaultwert
smtpd_client_restrictions=
Neuer Wert
smtpd_client_restrictions=
 check_ccert_access lmdb:${config_directory}/check_ccert_access_maps,
 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.

check_ccert_access type:access

Information Beschreibung
Dokumentation http://www.postfix.org/postconf.5.html#check_ccert_access
Defaultwert
check_ccert_access
Neuer Wert
check_ccert_access lmdb:${config_directory}/check_ccert_access_maps
Beschreibung 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 }
 }

/etc/postfix/check_ccert_access_maps

Der Inhalt besteht aus dem Fingerprint des in nachfolgendem Schritt für den Postfix-null client erstellten Zertifikats (Self-Signed-Certificate)

und kann durch Anwendung des nachfolgenden Befehls erstellt werden:

# openssl x509 -fingerprint -noout -sha256 -in /etc/postfix/ssl/certs/client.idmz.tachtler.net.pem
sha256 Fingerprint=26:C7:BA:A6:20:4E:2C:70:FD:61:57:20:43:73:25:2F:DF:7A:48:AB:88:23:C4:D9:14:D7:4F:0B:98:C9:34:17

Mit nachfolgendem Befehl wird die Konfigurationsdatei /etc/postfix/check_ccert_access_maps angelegt:

# vim /etc/postfix/check_ccert_access_maps
# vim /etc/postfix/check_ccert_access_maps
26:C7:BA:A6:20:4E:2C:70:FD:61:57:20:43:73:25:2F:DF:7A:48:AB:88:23:C4:D9:14:D7:4F:0B:98:C9:34:17 OK

:!: WICHTIG - Nach dem Fingerprint MUSS noch eine beliebige Information hinzugefügt werden - hier z.B. OK !!!

Anschliessend ist sind die Änderungen noch in ein für Postfix besser lesbares Datenbankformat umzuwandeln, was erstmals mit nachfolgendem Befehl durchgeführt werden kann:

# postmap lmdb:/etc/postfix/check_ccert_access_maps

:!: HINWEIS - Es erfolgt keine Ausgabe, nach Befehlsausführung!

Abschliessend kann mit nachfolgendem Befehl überprüft werden, ob die Änderungen übernommen wurden:

# ls -l /etc/postfix/check_ccert_access_maps*
-rw-r--r-- 1 root root   264 Dec  4 19:28 /etc/postfix/check_ccert_access_maps
-rw-r--r-- 1 root root 12288 Dec  4 19:29 /etc/postfix/check_ccert_access_maps.lmdb

reject

Information Beschreibung
Dokumentation http://www.postfix.org/postconf.5.html#reject
Defaultwert
reject
Neuer Wert
reject
Beschreibung 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).

/etc/postfix/master.cf

Nachfolgende Änderungen sind in der Konfigurationsdatei /etc/postfix/master.cf erforderlich:

(Nur relevanter Ausschnitt):

# Choose one: enable submissions for loopback clients only, or for any client.
#127.0.0.1:submissions inet n  -       n       -       -       smtpd
# Tachtler - ENABLE submissions/smtps - 
submissions     inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=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=
       check_ccert_access lmdb:${config_directory}/check_ccert_access_maps,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
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=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

:!: HINWEIS - Es sind keine zusätzliche Änderungen notwendig!

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
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_tls_CApath = ${config_directory}/ssl/certs
smtpd_tls_ask_ccert = 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 Wed 2024-12-04 20:52:29 CET; 15s ago
 Invocation: 3c3814531cc843e7b1b58e253a9deb4d
    Process: 9796 ExecStart=/usr/bin/postfix start (code=exited, status=0/SUCCE>
   Main PID: 9865 (master)
      Tasks: 3 (limit: 2315)
     Memory: 2.7M (peak: 4M)
        CPU: 277ms
     CGroup: /system.slice/postfix.service
             ├─9865 /usr/lib/postfix/bin/master -w
             ├─9866 pickup -l -t unix -u
             └─9868 qmgr -l -t unix -u

Dec 04 20:52:29 server systemd[1]: Starting Postfix Mail Transport Agent...
Dec 04 20:52:29 server postfix[9863]: postfix/postlog: starting the Postfix mai>
Dec 04 20:52:29 server postfix/postfix-script[9863]: starting the Postfix mail >
Dec 04 20:52:29 server postfix/master[9865]: daemon started -- version 3.9, con>
Dec 04 20:52:29 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 465 sollte hinzugekommen sein!:

# ss -taubenp | grep postfix
tcp   LISTEN 0      100                 0.0.0.0:465       0.0.0.0:*     users:(("master",pid=9865,fd=21))
ino:48920 sk:3 cgroup:/system.slice/postfix.service <->
tcp   LISTEN 0      100                 0.0.0.0:25        0.0.0.0:*     users:(("master",pid=9865,fd=13))
ino:48911 sk:5 cgroup:/system.slice/postfix.service <->
tcp   LISTEN 0      100                    [::]:465          [::]:*     users:(("master",pid=9865,fd=22))
ino:48921 sk:9 cgroup:/system.slice/postfix.service v6only:1 <->
tcp   LISTEN 0      100                    [::]:25           [::]:*     users:(("master",pid=9865,fd=14))
ino:48912 sk:c cgroup:/system.slice/postfix.service v6only:1 <->

Test

Ein Test, ob die interne Kommunikation vom Postfix-null client zum Postfix-main client via TLS/StartTLS-Verschlüsselung und mittels „secure“ erzwungen wird und auf den Fingerprint des Client-Zertifikats überprüft wird, kann erst erfolgen, wenn die nachfolgenden Konfigurationen innerhalb des Konstrukts

wie folgt durchgeführt werden.

Es kann mit einem kleinen Test vom

aus herausgefunden werden, ob lokal erzeugte e-Mails auch intern Zugestellt werden können, was ausnahmsweise mit nachfolgendem Befehl (und nicht mit telnet) durchgeführt werden soll:

# echo "Test E-Mail - SMTPS - null client und main server" | /usr/sbin/sendmail root

Als Ergebnis sollten zwei Dinge kontrolliert werden:

  1. Die Log-Einträge im systemd-journald
  2. Der Inhalt in der (falls nicht schon vorhandenen) neu im mbox-Format erstellten Datei /var/spool/mail/klaus

Der Inhalte der Log-Einträge im systemd-journald auf dem

sollte eine Ausgabe wie nachfolgend dargestellt ergeben, was mit nachfolgendem Befehl durchgeführt werden kann:

# journalctl -u postfix*

wonach eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen sollte: (Nur relevanter Ausschnitt):

Dec 04 21:07:36 client postfix/pickup[2260]: 7E3CC8D: uid=0 from=<root>
Dec 04 21:07:36 client postfix/cleanup[2329]: 7E3CC8D: message-
 id=<20241204140736.7E3CC8D@client.idmz.tachtler.net>
Dec 04 21:07:36 client postfix/qmgr[2136]: 7E3CC8D: from=<root@client.idmz.tachtler.net>, size=314,
 nrcpt=1 (queue active)
Dec 04 21:07:36 client postfix/tlsproxy[2338]: CONNECT to [10.0.0.60]:465
Dec 04 21:07:36 client postfix/tlsproxy[2338]: Verified TLS connection established to
 mx1.tachtler.net[10.0.0.60]:465: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS
 (2048 bits) client-digest SHA256
Dec 04 21:07:36 client postfix/smtp[2336]: Verified TLS connection established to
 mx1.tachtler.net[10.0.0.60]:465: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange
 X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits)
 client-digest SHA256
Dec 04 21:07:36 client postfix/tlsproxy[2338]: DISCONNECT [10.0.0.60]:465
Dec 04 21:07:36 client postfix/smtp[2336]: 7E3CC8D: to=<root@tachtler.net>, orig_to=<root>,
 relay=mx1.tachtler.net[10.0.0.60]:465, delay=0.14, delays=0.03/0.03/0.06/0.02, dsn=2.0.0, status=sent
 (250 2.0.0 Ok: queued as 90B87180083)
Dec 04 21:07:36 client postfix/qmgr[2136]: 7E3CC8D: removed

:!: HINWEIS - Wichtig ist hier das auftauchen von

  • Verified TLS connection established …

Der Inhalte der Log-Einträge im systemd-journald auf dem

sollte eine Ausgabe wie nachfolgend dargestellt ergeben, was mit nachfolgendem Befehl durchgeführt werden kann:

# journalctl -u postfix*

wonach eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen sollte: (Nur relevanter Ausschnitt):

Dec 04 21:07:36 server postfix/smtps/smtpd[12226]: connect from client.idmz.tachtler.net[10.0.0.80]
Dec 04 21:07:36 server postfix/smtps/smtpd[12226]: Trusted TLS connection established from
 client.idmz.tachtler.net[10.0.0.80]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS
 (2048 bits) client-digest SHA256
Dec 04 21:07:36 server postfix/smtps/smtpd[12226]: 90B87180083: client=client.idmz.tachtler.net[10.0.0.80]
Dec 04 21:07:36 server postfix/cleanup[12230]: 90B87180083: message-
 id=<20241204140736.7E3CC8D@client.idmz.tachtler.net>
Dec 04 21:07:36 server postfix/qmgr[12157]: 90B87180083: from=<root@client.idmz.tachtler.net>, size=805,
 nrcpt=1 (queue active)
Dec 04 21:07:36 server postfix/smtps/smtpd[12226]: disconnect from client.idmz.tachtler.net[10.0.0.80]
 ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Dec 04 21:07:36 server postfix/local[12231]: 90B87180083: to=<klaus@server.idmz.tachtler.net>,
 orig_to=<root@tachtler.net>, relay=local, delay=0.02, delays=0.01/0.01/0/0, dsn=2.0.0, status=sent
 (delivered to mailbox)
Dec 04 21:07:36 server postfix/qmgr[12157]: 90B87180083: removed

:!: WICHTIG - Die E-Mail liegt nicht auf dem „null client“, sondern auf dem unter relayhost definierten Ziel!

Auf dem „main server“ kann der Inhalt der im mbox-Format angelegten Datei /var/spool/mail/klaus angesehen werden und sollte ebenfalls eine Ausgabe wie nachfolgend dargestellt ergeben, was mit nachfolgendem Befehl durchgeführt werden kann:

# cat /var/spool/mail/klaus

wonach eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen sollte:

Prüfung

:!: HINWIES - Wenn der Fingerprint des Client-Zertifikats NICHT übereinstimmt, sollte nachfolgende Meldung im LOG erscheinen:

Postfix-null client

Dec 04 19:29:27 client postfix/smtp[1442]: ABED894: to=<root@tachtler.net>,
orig_to=<root@client.idmz.tachtler.net>, relay=mx1.tachtler.net[fd00::10:10:0:0:60]:465, delay=0.02,
delays=0/0/0.02/0, dsn=5.7.1, status=bounced (host mx1.tachtler.net[fd00::10:10:0:0:60] said: 554 5.7.1
<client.idmz.tachtler.net[fd00::10:10:0:0:80]>: Client host rejected: Access denied (in reply to RCPT TO
command))

Postfix-main server

Dec 04 19:29:27 server postfix/smtps/smtpd[8419]: NOQUEUE: reject: RCPT from
client.idmz.tachtler.net[fd00::10:10:0:0:80]: 554 5.7.1 <client.idmz.tachtler.net[fd00::10:10:0:0:80]>:
Client host rejected: Access denied; from=<> to=<root@tachtler.net> proto=ESMTP
helo=<client.idmz.tachtler.net>
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_smtps_konfiguration.txt · Zuletzt geändert: 2025/01/11 08:51 von klaus