> ## Content Index
> Fetch the complete content index at: https://blog.lange-it.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Postfix | moderne Verschlüsselung
- URL: https://blog.lange-it.com/postfix-moderne-verschlusselung/
- Published: 2025-09-29T10:19:42.000Z
- Updated: 2026-03-01T15:21:48.000Z
- Author: Peter Lange
- Tags: SSL-Security

## Vorraussetzungen

ℹ️

Ein ****Grundwissen** für die Postfix-Administration wird vorausgesetzt. Ihr solltet wissen was ihr tut und die nachfolgenden Vorschläge nicht einfach 1:1 übernehmen, sondern an eure Umgebung / Bedürfnisse anpassen.

## Vorbereitungen

Ihr solltet bereits ein [RSA](https://de.wikipedia.org/wiki/RSA-Kryptosystem)– und [ECDSA](https://de.wikipedia.org/wiki/Elliptic%5FCurve%5FDSA)\-Schlüsselpärchen erzeugt haben, welches von einer CA beglaubigt wurde. Für diesen Zweck nutze ich das [acme.sh](https://github.com/acmesh-official/acme.sh) Shell-Skript, um mir anschließend via [Let’s Encrypt](https://letsencrypt.org/) ein »gültiges« Zertifikat zu generieren. Ich reiße das im Folgenden kurz an.

### RSA- und ECDSA-Schlüsselpärchen

Beantragen eines LE Zertifikats auf Basis von RSA

```bash
./acme.sh --issue -d mail.deine.tld --keylength 4096 --standalone
```

Beantragen eines LE Zertifikats auf Basis von ECDSA

```bash
./acme.sh --issue -d mail.deine.tld --keylength ec-384 --standalone
```

### Diffie-Hellman-Schlüssel mit 4096 Bit

Postfix nutzt [Forward Secrecy](https://de.wikipedia.org/wiki/Perfect%5FForward%5FSecrecy) bereits ohne weitere Konfiguration. Allerdings werden für den Schlüsselaustausch via Forward Secrecy geeigneten [Cipher-Suiten](https://de.wikipedia.org/wiki/Cipher%5FSuite) (EDH) bereits **vorberechnete** DH-Schlüssel mit 2048-Bit und 512-Bit verwendet. Da der 512-Bit DH-Schlüssel bei uns niemals verwendet wird – wir nutzen keine altmodischen EXPORT-Chipher – berechnen wir nur den DH-Schlüssel mit 4096-Bit neu:

```bash
openssl dhparam -out /etc/postfix/dh_4096.pem -2 4096
```

Über den Parameter »[smtpd\_tls\_dh1024\_param\_file](http://www.postfix.org/postconf.5.html#smtpd%5Ftls%5Fdh1024%5Fparam%5Ffile)« binden wir den DH-Schlüssel später in die Konfiguration ein und ersetzen damit den Standard DH-Schlüssel mit 2048 Bit.

💡

Forward Secrecy bezeichnet ein kryptographisches Protokoll zum Schlüsselaustausch, das sicherstellt, dass eine früher aufgezeichnete Kommunikation später nicht rekonstruiert werden kann – auch denn nicht, wenn der damals verwendete (private) Schlüssel mittlerweile kompromittiert oder geknackt ist.

## Postfix einstellungen

### Allgmeine TLS-Einstellungen

```bash
sudo nano /etc/postfix/main.cf
```

```bash
[...]

# Path CAfile
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# TLS RSA public / private keys
smtpd_tls_cert_file = /etc/ssl/certs/mail.deine.tld.cer
smtpd_tls_key_file = /etc/ssl/private/mail.deine.tld.key
# TLS ECDSA public / private keys
smtpd_tls_eccert_file = /etc/ssl/certs/mail.deine.tld_ecc.cer
smtpd_tls_eckey_file = /etc/ssl/private/mail.deine.tld_ecc.key
# TLS supported cipherlist
tls_high_cipherlist = !aNULL:!eNULL:!CAMELLIA:HIGH:@STRENGTH
# Prefer the servers order of ciphers over clients
tls_preempt_cipherlist = yes
# EDH-Parameter 
smtpd_tls_dh1024_param_file = /etc/postfix/dh_4096.pem
# Server security grade for ephemeral elliptic-curve Diffie-Hellman (EECDH) key exchange
smtpd_tls_eecdh_grade = ultra
# No SSL compression
tls_ssl_options = NO_COMPRESSION

[...]
```

### Verschlüsselung beim Versenden

```bash
sudo nano /etc/postfix/main.cf
```

```bash
[...]

# TLS protocols accepted by Postfix (Outgoing)
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
# TLS supported ciphers (Outgoing)
smtp_tls_ciphers = high
smtp_tls_mandatory_ciphers = high
# Uses TLS if this is supported by the receiving SMTP server
smtp_tls_security_level = may
# Enable additional Postfix SMTP server logging of TLS activity
smtp_tls_loglevel = 1

[...]
```