Die folgende Tabelle zeigt, welche Protokolle/Ports in jedem Schritt der E-Mail-Übertragung verwendet werden können. Die Tabelle gibt auch an, welche Protokolle/Ports ich in meinem Server-Setup verwenden möchte, postfix
indem ich sie mit ✘ oder ✔ markiere.
N | Betrieb | Absender | Empfänger | mögliche Protokolle/Ports |
---|---|---|---|---|
1 | "Mail-Übermittlung" | MUA | MSA | (✘) SMTP 25 (✘) SMTP 25 & STARTTLS (✘) SMTP 587 & STARTTLS (✔) SMTPS 465 & implizites TLS |
2 | "Server intern" | MSA | MTA | / |
3... | "Mail-Relay" | MTA | MTA | (✘) SMTP 25 (✘) SMTP 25 & STARTTLS (✔) SMTP 25 & STARTTLS & DANE |
n -2 | "Server intern" | MTA | MDA | / |
n - 1 | "Server intern" | MDA | MS | / |
N | "Mailbox-Zugriff" | MS | MUA | (✘) POP3 110 & STARTTLS (✘) POP3S 995 & implizites TLS(✘) IMAP 143 & STARTTLS (✔) IMAPS 993 & implizites TLS |
Bevor ich fortfahre, möchte ich Sie bitten, zwei meiner Annahmen zuzustimmen oder nicht:
ANNAHME A:
Ich nehme an, vonDasalte Antwort, dass PostfixService 465
wurde smtps
irgendwo auf dem Weg umbenannt. Daher verwende ichService smtps
um zuzuhören"Mail-Übermittlung"SMTPS-Port 465
.
ANNAHME B:
Der Anfang meiner /etc/postfix/master.cf
Datei sieht folgendermaßen aus:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_security_level=encrypt
-o smtpd_use_tls=yes
-o smtpd_tls_wrappermode=yes
-o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
-o smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
-o smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
...
ich leseHierDas:
postfix/smtpd
- ist SMTP-Daemon-Prozess für"eingehende Post"und leiten Sie es an den entsprechenden internen Speicherort weiter.
postfix/smtp
- ist SMTP-Daemon-Prozess für"ausgehende Mail"in die Welt hinaus.
Ich gehe jetzt davon aus, dass postfix/smtpd
auf Port lauscht 465
für"eingehende E-Mail"von lokalen Benutzern und auf Port 25
für"eingehende E-Mail"von überall sonst. Ich gehe auch davon aus, dass postfix/smtp
der Port verwendet wird 25
, an den gesendet wird"ausgehende E-Mail".
PROBLEM:
Als ich Postfix konfigurierte, habe ich irgendwo im Laufe der Zeit einen gesamten TLS-Abschnitt darin deaktiviert, /etc/postfix/main.cf
weil ich nicht wollte, dass globale Einstellungen meine Einstellungen für einzelne Dienste, die ich darin festgelegt habe, durcheinanderbringen /etc/postfix/master.cf
.
Wie Sie sehen, habe ich -o
für den Dienst keine Optionen verwendet, obwohl ich für den Dienst smtp
viele Optionen verwendet habe . Was mich am meisten verwirrt, ist, dass ich in der offiziellen Dokumentation viele fast duplizierte Optionen finden kann, wie:-o
smtps
/etc/postfix/main.cf
Laut dem zitierten Text müsste ich verwenden:
- diejenigen, die mit
smtp_
für beginnen"ausgehende Mail" - diejenigen, die mit
smtpd_
für beginnen"eingehende Post".
Wenn meine Philosophie richtig ist, sollte mein aktuelles Setup funktionieren. Teilweise funktioniert es, weil ich mit einem openssl
Befehl auf einem anderen Computer wie diesem einen TLS 1.3-Handshake erreichen kann:
┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
└─> openssl s_client -connect pis.eu:465 -tls1_3
CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tekpi-eu
verify return:1
---
Certificate chain
0 s:CN = tek-eu
i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----
< REMOVED FOR CLARITY >
-----END CERTIFICATE-----
subject=CN = tek-eu
issuer=CN = tek-eu
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1286 bytes and written 313 bytes
Verification error: self signed certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self signed certificate)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Session-ID: 45F832A32F5F27CEAA41B271F28545ECA98DC1AC61F51A484123DD28B2535C30
Session-ID-ctx:
Resumption PSK: 3175AD1641D8D77511FD5C76508D339D01F5D1CE02DBF90F33FEBD334A7E76FD44B52808A846C281616469143977B6F1
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
< REMOVED FOR CLARITY >
Start Time: 1607602078
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
220 mail.pis.eu -------> "HELLO!"
Oben habe ich einen Parameter verwendet -tls1_3
, der funktionieren sollte, da mein Konfigurationsparameter -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
jeden anderen Handshake als TLS 1.2 und TLS 1.3 verbieten sollte. Aber wenn ich den Parameter ändere, -tls1_3
um -tls1
einen TLS 1-Handshake auszuprobieren, funktioniert es!?
┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
└─> openssl s_client -connect pis.eu:465 -tls1
CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tek-eu
verify return:1
---
Certificate chain
0 s:CN = tek-eu
i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----
< REMOVED FOR CLARITY >
-----END CERTIFICATE-----
subject=CN = tek-eu
issuer=CN = tek-eu
---
No client certificate CA names sent
Peer signing digest: MD5-SHA1
Peer signature type: RSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1385 bytes and written 227 bytes
Verification error: self signed certificate
---
New, TLSv1.0, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1
Cipher : ECDHE-RSA-AES256-SHA
Session-ID: C1E39786A475DA48ED222EAB5247CCE57D49875AE9A442A73027FBE1F9BB7C4D
Session-ID-ctx:
Master-Key: 5900F37B79A7949871008A827904F2BA907F42EE8BBC73328CD49DF7E37AF2687C06B316922D7D76DDC36FA1DF912E7A
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
< REMOVED FOR CLARITY >
Start Time: 1607602884
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: yes
---
220 mail.pis.eu -------> "HELLO!"
Wie kommt es, dass das klappt? Was mache ich falsch? Momentan hat mein Setup nur -o smtpd_
Optionen. Sollte ich auch -o smtp_
Optionen verwenden? Wo sollte ich diese platzieren?
Wie Sie sehen, bin ich verwirrt ...