Uncategorized
0

TLS mit Let’s Encrypt für Postfix unter Debian 13 einrichten

In diesem Artikel richten wir eine TLS-Verschlüsselung für unseren Postfix-Mailserver unter Debian 13 mit einem kostenlosen Let’s-Encrypt-Zertifikat ein. Dadurch können E-Mails verschlüsselt übertragen werden und Mailclients wie Outlook, Thunderbird oder Smartphones können den Server sicher über Port 587 verwenden.

Außerdem verbessert eine korrekte TLS-Konfiguration die Zustellbarkeit bei vielen Mailprovidern erheblich.

Was ist TLS?

TLS (Transport Layer Security) verschlüsselt die Verbindung zwischen:

  • Mailclient und Mailserver
  • Mailserver und anderen Mailservern

Dadurch können Zugangsdaten und E-Mails nicht einfach im Netzwerk mitgelesen werden.

Was ist Let’s Encrypt?

Let’s Encrypt ist eine kostenlose Zertifizierungsstelle (CA), die automatisch gültige TLS-Zertifikate ausstellt.

Die Zertifikate sind:

  • kostenlos
  • automatisch erneuerbar
  • von allen gängigen Systemen vertrauenswürdig

Voraussetzungen

Folgende Voraussetzungen sollten erfüllt sein:

  • Debian 13
  • funktionierender Postfix-Mailserver
  • öffentliche Domain
  • DNS zeigt auf den Server
  • Port 80 erreichbar
  • Root-Zugriff

In diesem Beispiel verwenden wir:

host01.meine-domain.de

DNS prüfen

Damit Let’s Encrypt funktioniert, muss die Domain auf den Server zeigen.

A-Record prüfen

host01.meine-domain.de -> SERVER-IP

Prüfen mit:

dig mail.example.de

oder:

ping mail.example.de

Firewall prüfen

Let’s Encrypt muss den Server über HTTP auf Port 80 erreichen können.

Falls beispielsweise UFW verwendet wird:

ufw allow 80/tcp

Anschließend prüfen:

ufw status

Certbot installieren

Zunächst installieren wir Certbot.

apt update
apt install certbot -y

Zertifikat erstellen

Postfix kurz stoppen:

systemctl stop postfix

Nun das Zertifikat erstellen:

certbot certonly --standalone -d host01.meine-domain.de

Erklärung:

  • certonly → nur Zertifikat erstellen
  • --standalone → eingebauten Webserver verwenden
  • -d → Domainname

Wenn alles erfolgreich war, erscheint eine Meldung wie:

Successfully received certificate

Speicherort der Zertifikate

Die Zertifikate befinden sich anschließend unter:

/etc/letsencrypt/live/host01.meine-domain.de/

Wichtige Dateien:

DateiBedeutung
fullchain.pemZertifikat inklusive Zertifikatskette
privkey.pemPrivater Schlüssel

TLS in Postfix konfigurieren

Nun konfigurieren wir Postfix für TLS.

Datei öffnen:

nano /etc/postfix/main.cf

Folgende Konfiguration ergänzen oder anpassen:

smtpd_tls_cert_file=/etc/letsencrypt/live/host01.meine-domain.de/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/host01.meine-domain.de/privkey.pem

smtpd_tls_security_level=may
smtp_tls_security_level=may

smtpd_tls_auth_only=yes

Erklärung der TLS-Konfiguration

smtpd_tls_cert_file

smtpd_tls_cert_file=/etc/letsencrypt/live/host01.meine-domain.de/fullchain.pem

Gibt das TLS-Zertifikat an, welches Postfix verwendet. Hier sollte immer die fullchain.pem verwendet werden.

smtpd_tls_key_file

smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.de/privkey.pem

Pfad zum privaten Schlüssel des Zertifikats. Dieser Schlüssel sollte niemals öffentlich zugänglich sein.

smtpd_tls_security_level

smtpd_tls_security_level=may

Postfix bietet STARTTLS an, erzwingt TLS aber nicht.

Das bedeutet:

  • Verschlüsselung wird genutzt, wenn die Gegenstelle TLS unterstützt
  • ältere Mailserver können trotzdem noch zustellen

Dies ist die empfohlene Einstellung für maximale Kompatibilität.

smtp_tls_security_level

smtp_tls_security_level=may

Legt fest, wie sich Postfix bei ausgehenden Verbindungen verhält.

Auch hier bedeutet may:

  • TLS verwenden wenn möglich
  • ansonsten unverschlüsselt senden

smtpd_tls_auth_only

smtpd_tls_auth_only=yes

SMTP-Authentifizierung wird nur über verschlüsselte Verbindungen erlaubt. Dadurch können Benutzername und Passwort nicht unverschlüsselt übertragen werden. Sehr wichtige Sicherheitseinstellung.

Optionale TLS-Logging- und Analysefunktionen

Die folgenden Einstellungen sind optional und nicht zwingend für den TLS-Betrieb erforderlich. Sie erweitern hauptsächlich die Protokollierung und fügen zusätzliche Informationen zu TLS-Verbindungen in Logs und Mailheader ein. Dies kann besonders bei der Fehlersuche und Analyse hilfreich sein.

smtpd_tls_loglevel=1
smtpd_tls_received_header=yes
smtp_tls_note_starttls_offer=yes

Submission-Port 587 aktivieren

Für Mailclients sollte Port 587 verwendet werden.

Datei öffnen:

nano /etc/postfix/master.cf

Folgende Sektion aktivieren oder ergänzen:

submission inet n       -       y       -       -       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 smtpd_recipient_restrictions=permit_sasl_authenticated,reject

Erklärung der Submission-Konfiguration

smtpd_tls_security_level=encrypt

-o smtpd_tls_security_level=encrypt

Auf Port 587 wird TLS verpflichtend. Unverschlüsselte Verbindungen werden abgelehnt.

smtpd_sasl_auth_enable

-o smtpd_sasl_auth_enable=yes

Aktiviert SMTP-Authentifizierung.

Benötigt für:

  • Thunderbird
  • Outlook
  • Smartphones
  • andere Mailclients

smtpd_recipient_restrictions

-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

Nur authentifizierte Benutzer dürfen E-Mails versenden. Dadurch wird verhindert, dass der Server als Open Relay missbraucht wird.

Postfix neu starten

Nach den Änderungen:

systemctl restart postfix

Status prüfen:

systemctl status postfix

TLS testen

STARTTLS auf Port 25 testen

openssl s_client -connect host01.meine-domain.de:25 -starttls smtp

Wichtige Punkte:

  • gültiges Zertifikat
  • keine Zertifikatsfehler
  • richtige Domain

Submission-Port testen

openssl s_client -connect host01.meine-domain.de:587 -starttls smtp

Zertifikatserneuerung testen

Let’s Encrypt erneuert Zertifikate automatisch.

Testlauf:

certbot renew --dry-run

Wenn keine Fehler erscheinen, funktioniert die automatische Erneuerung korrekt.

Typische Fehler

Let’s Encrypt schlägt fehl

Häufige Ursachen:

  • Port 80 blockiert
  • Firewall blockiert HTTP
  • DNS zeigt auf falsche IP
  • anderer Dienst verwendet Port 80

Prüfen mit:

ss -tulpn | grep :80

Zertifikat wird nicht geladen

Ursachen:

  • falscher Pfad
  • Tippfehler
  • Postfix nicht neugestartet

Prüfen:

postfix check

STARTTLS wird nicht angeboten

Prüfen:

postconf | grep tls

Abschließender Test

Zum Abschluss empfiehlt sich ein Test mit:

  • mail-tester.com
  • MXToolbox

Dadurch lässt sich schnell erkennen:

  • ob TLS funktioniert
  • ob Zertifikate korrekt geladen werden
  • welche Verschlüsselung genutzt wird

Fazit

Mit Let’s Encrypt und Postfix lässt sich unter Debian 13 schnell eine sichere TLS-Verschlüsselung für den Mailserver einrichten.

Dadurch:

  • werden Zugangsdaten geschützt
  • verbessert sich die Zustellbarkeit
  • erfüllen Mailclients moderne Sicherheitsstandards

Inhalt

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.