Hallo zusammen,
--- Ich sehe grade, dass ich meinen Beitrag eigentlich im IMAP/POP Bereich einordnen hätte sollen. Kann ein Mod vielleicht dahin verschieben? ---
ich bewege mich zurzeit auf einem Root Server (RS Ostern 22 S) mit Debian 11.
Darauf habe ich vor ein paar Tagen Docker und Docker Compose zusammen mit Traefik und der Mailkuh eingerichtet.
Die Geschichte mit der Mailkuh ist nur ein Spielball, da läuft nichts produktiv. Mein Hauptmail-Anbieter ist Mailbox.org.
Die Einrichtung des Servers hab ich jetzt nach mehreren Versuchen hinbekommen, auch mit Traefik.
Versenden und Empfangen über die Weboberfläche und über iPhone, iPad, Macbook funktionieren auch. Laut den Clients wird eine SSL-Verbindung erfordert. Da ich hier keine Fehlermeldungen bekomme, scheint das wohl auch verschlüsselt zu funktionieren. (?) Vergleiche ich den Mailheader von anderen Mails, sehe ich hier keinen Unterschied. Für die Verschlüsselung wird wohl TLS v1.3 verwendet...
Mich irritiert aber folgendes:
Schicke ich von Mailbox.org eine E-Mail an irgendeinen E-Mail-Provider, dann erscheint rechts neben der Mailadresse ein grünes "SSL ok" oder "DANE".
Testweise habe ich zuhause auf der Synology noch den MailPlus-Server am laufen. Selbst wenn ich dorthin eine Mail sende, erscheint bei der Empfängeradresse ein grünes "SSL ok".
Gebe ich allerdings eine Adresse meiner Mailkuh an, wird lediglich graues "? SSL" angezeigt.
Versuche ich das Mailkonto bei der Kuh z. B. in Spark Mail einzurichten, bekomme ich auch eine Meldung, dass eine SSL-Verbindung nicht hergesetllt werden kann. Ohne SSL kann das Konto dann auch in Spark normal nutzen.
Daraufhin hab ich versucht, die Zertifkate zu prüfen.
Bei diversen Portalen wird für meinen Host mail.meinedomain.de alles grün, 10/10 Punkte, A+ oder sonstiges positives angezeigt.
Ich habe dann mal mit openssl die Ports 25, 143, 465, 587, 993, 995 und 4190 getestet.
Während ausschließlich beim Port 465 ein für mich vernünftig aussehendes Ergebnis rauskommt, scheint die Verbindung über die Ports 25 und 587 zwar zu funktionieren, aber da wird wohl das Zertifikat nicht erkannt? Für die Ports 993 und 995 scheint nicht mal die Verbindung zu funktionieren...
Ports 143, 993, 995, 4190:
myServer# openssl s_client -showcerts -connect mail.meinedomain.de:993 -servername mail.meinedomain.de
140297023448384:error:0200206F:system library:connect:Connection refused:../crypto/bio/b_sock2.c:110:
140297023448384:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
140297023448384:error:0200206F:system library:connect:Connection refused:../crypto/bio/b_sock2.c:110:
140297023448384:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
connect:errno=111
Ports 25 und 587:
myServer# openssl s_client -showcerts -connect mail.meinedomain.de:587 -servername mail.meinedomain.de
CONNECTED(00000003)
140202282366272:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:331:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 319 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
Alles anzeigen
Port 465
myServer# openssl s_client -showcerts -connect mail.meinedomain.de:465 -servername mail.meinedomain.de
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 = R3
verify return:1
depth=0 CN = mail.meinedomain.de
verify return:1
---
Certificate chain
0 s:CN = mail.meinedomain.de
i:C = US, O = Let's Encrypt, CN = R3
-----BEGIN CERTIFICATE-----
{...}
-----END CERTIFICATE-----
1 s:C = US, O = Let's Encrypt, CN = R3
i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
-----BEGIN CERTIFICATE-----
{...}
-----END CERTIFICATE-----
2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1
i:O = Digital Signature Trust Co., CN = DST Root CA X3
-----BEGIN CERTIFICATE-----
{...}
---
Server certificate
subject=CN = mail.meinedomain.de
issuer=C = US, O = Let's Encrypt, CN = R3
---
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 5195 bytes and written 399 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 4096 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Session-ID: {...}
Session-ID-ctx:
Resumption PSK: {...}
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
{...}
Start Time: {...}
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
read:errno=0
Alles anzeigen
Die Meldung system library:connect:Connection refused:, die ich bei der Abfrage der Ports 143, 993, 995 und 4190 erhalte, scheint wohl auf nicht geöffnete Ports zurückzuführen zu sein.
Also das ganze mit netcat geprüft.
myServer# nc -z -v 46.38.255.51 1-65000
myRootServer [myIP] 46404 (?) open
myRootServer [myIP] 45610 (?) open
myRootServer [myIP] 37052 (?) open
myRootServer [myIP] 20520 (?) open
myRootServer [myIP] 587 (submission) open
myRootServer [myIP] 465 (submissions) open
myRootServer [myIP] 443 (https) open
myRootServer [myIP] 80 (http) open
myRootServer [myIP] 25 (smtp) open
Hier sollen also nur die für den Mailserver relevanten Ports 25, 465 und 587 offen sein?
Ich habe die "uncomplicated firewall" installiert. Dort sind jedoch alle Ports freigegeben:
myServer# ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 20520/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 143/tcp ALLOW IN Anywhere
[ 5] 25/tcp ALLOW IN Anywhere
[ 6] 4190/tcp ALLOW IN Anywhere
[ 7] 993/tcp ALLOW IN Anywhere
[ 8] 587/tcp ALLOW IN Anywhere
[ 9] 465/tcp ALLOW IN Anywhere
[10] 995/tcp ALLOW IN Anywhere
[11] 20520/tcp (v6) ALLOW IN Anywhere (v6)
[12] 80/tcp (v6) ALLOW IN Anywhere (v6)
[13] 443/tcp (v6) ALLOW IN Anywhere (v6)
[14] 143/tcp (v6) ALLOW IN Anywhere (v6)
[15] 25/tcp (v6) ALLOW IN Anywhere (v6)
[16] 4190/tcp (v6) ALLOW IN Anywhere (v6)
[17] 993/tcp (v6) ALLOW IN Anywhere (v6)
[18] 587/tcp (v6) ALLOW IN Anywhere (v6)
[19] 465/tcp (v6) ALLOW IN Anywhere (v6)
[20] 995/tcp (v6) ALLOW IN Anywhere (v6)
Alles anzeigen
Was ich jetzt nicht verstehe:
- Wieso sind die Ports 143, 993, 995 und 4190 laut netcat nicht geöffnet, obwohl in der Firewall das ganze mit allow eingerichtet ist? (ufw disable && ufw enable hab ich ausgeführt, damit die Regeln übernommen werden)
- Wenn die Überprüfung mit openssl für Port 465 ein gültiges Zertifikat ausspuckt, warum dann nicht auch bei der Prüfung der Ports 25 und 587, wo ja wohl einscheinend eine Verbindung mit dem Server zustande kommt?
- Wie kann ich die restlichen Ports (143, 993, 995, 4190), die angeblich laut netcat geschlossen sind, öffnen, damit die Überprüfung mit openssl auch eine Verbindung zum Server herstellen kann?
Danke schon mal für eure Mühen und eure Hilfe!
Michel.