# Proxmox Mail Gateway

# Informationen

## DKIM

Bei einem 2048 Bit langen Schlüssel kann es sein, das dieser zu lang wird - dieser muss dann gesplittet werden. Dies kann mit Tools wie z.B. [https://www.mailhardener.com/tools/dns-record-splitter](https://www.mailhardener.com/tools/dns-record-splitter) erledigt werden. Prüfen Sie jedoch unbedingt danach ob der DKIM Eintrag korrekt ist.

# TLS 1.0 und 1.1 deaktivieren

[https://tgraeber.de/proxmox-mail-gateway-7-tls/](https://tgraeber.de/proxmox-mail-gateway-7-tls/)

Die Protokolldefintionen jedoch von hier übernehmen:

[https://schroederdennis.de/tipps-tricks/mailcow-smtp-smtpd-tls-1-0-tls1-1-deaktivieren/](https://schroederdennis.de/tipps-tricks/mailcow-smtp-smtpd-tls-1-0-tls1-1-deaktivieren/)

Anschließend kann man mit Internet.nl testen, ob die Einstellungen passen.

# DANE einrichten

Um DANE richtig einzurichten, müsst ihr die Hashes eures Zertifikates, des Intermediate- und Root-Zertifikates erstellen.

Dafür ist es wichtig, das ihr die richtigen Zertifikate benutzt, diese ermitteln wir mit checktls.com. Wichtig ist auch später das ihr die TLSA Records mit 3 1 1 (eignes Zertifikat) und 2 1 1 (Root und Intermediate) erstellt, dadurch erzwingt ihr einen Fallbackmodus - dieser sorgt dafür DANE weiterhin gültig bleibt, auch wenn euer eigenes Zertfifikat nach 90 tagen erneuert wurde.

Geht dazu wie folgt vor:

- Ermittelt die Root und Intermediate Zertifkate, geht dazu zu [https://www.checktls.com/TestReceiver](https://www.checktls.com/TestReceiver) und prüft euren Mailserver.
- In der Ausgabe seht ihr welche Root (bei mir in dem Falle X1) und Intermediate (in meinem Falle R10). Die URL der entsprechenden PEM Dateien findet ihr unter [https://letsencrypt.org/certificates/](https://letsencrypt.org/certificates/).
- Ladet diese nun auf die PMR in einen temporären Ordner (z.B. wget -P ./ kopierte\_url).
- Erstellt nun in dem Verzeichnis das Serverzertifikat (kopiert den Inhalt aus dem Zertifikat unter PMR &gt; Certificates &gt; pmg-tls.pem &gt; View Certificates und fügt den Inhalt in eine neue erstellte Datei server.pem mit vi oder nano).
- Erstellt nun die entsprechenden Hashes jdeses Zertifkates mit dem Befehl:

```
openssl x509 -in zertifktesnamen.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl sha256
```

- Mit diesem Eintrag erstellt ihr dann die entsprechenden TLSA Records im DNS - z.B. \_25.\_tcp.mx (Port. Protokoll, Hostname) - danach dann 2 1 1 Wert (2 für Root / Intermediate, 3 für Endzertifikat)
- Bei mir würden die Eintrage in dem Falle wie folgt aussehen:

```
root@mx:~/le# dig _25._tcp.mx.freesoc.de IN TLSA

; <<>> DiG 9.18.24-1-Debian <<>> _25._tcp.mx.freesoc.de IN TLSA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2550
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_25._tcp.mx.freesoc.de.                IN      TLSA

;; ANSWER SECTION:
_25._tcp.mx.freesoc.de. 83132   IN      TLSA    3 1 1 07A5A87B97B38EAD67BD1A9960D3535C18A36DE1FA6C725A1ADEA1FF 5074795F
_25._tcp.mx.freesoc.de. 83132   IN      TLSA    2 1 1 8D02536C887482BC34FF54E41D2BA659BF85B341A0A20AFADB5813DC FBCF286D
_25._tcp.mx.freesoc.de. 83132   IN      TLSA    2 1 1 E5545E211347241891C554A03934CDE9B749664A59D26D615FE58F77 990F2D03

;; Query time: 0 msec
;; SERVER: 192.168.70.246#53(192.168.70.246) (UDP)
;; WHEN: Fri Aug 30 09:06:20 CEST 2024
;; MSG SIZE  rcvd: 192
```

Wartet die TTLS des DNS Servers ab und prüft dann ob alles richtig ist mit checktls und internet.nl

Info für die Werte 3 1 1 bzw. 2 1 1 (Quelle [https://dokuwiki.tachtler.net/doku.php?id=tachtler:let\_s\_encrypt\_-\_tlsa-record\_-\_dane](https://dokuwiki.tachtler.net/doku.php?id=tachtler:let_s_encrypt_-_tlsa-record_-_dane) :

**Die erste Zahl ist ein Wert von *0 bis 3:***

- <div class="li">0: Der Hash gehört der Zertifizierungsstelle die Zertifikate für diesen Host ausstellen darf. Der Client muss die Zertifizierungsstelle kennen oder diese muss von einer vertrauten Zertifizierungsstelle unterschrieben sein.</div>
- <div class="li">**1**: Der Hash gehört dem Serverzertifikat. Es muss von einer Zertifizierungsstelle unterschrieben sein der vom Client vertraut wird.</div>
- <div class="li">**2**: Der Hash gehört einer Zertifizierungsstelle die Zertifikate für diesen Host ausstellen darf. Der Client soll Ihr Vertrauen auch wenn sie ihm Unbekannt und von keiner bekannten Zertifizierungsstelle unterschrieben ist.</div>
- <div class="li">**3**: Der Hash gehört dem Serverzertifikat und der Client soll diesem ohne weitere Prüfung der Vertrauenskette trauen.</div>

**Die Zweite Zahl kann *0 oder 1* sein und gibt an wie der Hash überprüft wird:**

- <div class="li">0: Es wird ein Hash vom kompletten Zertifikat erstellt.</div>
- <div class="li">**1**: Es wird nur ein Hash vom Public Key und des Algorithmus erstellt.</div>

**Die Dritte Zahl enthält einen wert von *0 bis 2*:**

- <div class="li">0: Der Hash enthält das komplette Zertifikat (nicht empfohlen).</div>
- <div class="li">**1**: Der Hash enthält einen SHA-256 Hash.</div>
- <div class="li">**2**: Der Hash enthält einen SHA-512 Hash.</div>

Weitere Informationen:

- [https://github.com/internetstandards/toolbox-wiki/blob/main/DANE-for-SMTP-how-to.md](https://github.com/internetstandards/toolbox-wiki/blob/main/DANE-for-SMTP-how-to.md)
- [https://dokuwiki.tachtler.net/doku.php?id=tachtler:let\_s\_encrypt\_-\_tlsa-record\_-\_dane](https://dokuwiki.tachtler.net/doku.php?id=tachtler:let_s_encrypt_-_tlsa-record_-_dane)
- [https://letsencrypt.org/certificates/](https://letsencrypt.org/certificates/)
- [https://internet.nl](https://internet.nl)
- [https://www.checktls.com/TestReceiver](https://www.checktls.com/TestReceiver)
- [https://dane.sys4.de/smtp](https://dane.sys4.de/smtp)

# Eigene Blacklisten (RBL) integrieren

Eigene Blacklisten wie Spamhaus usw. lassen sich integrieren.

Gehen Sie dazu wie folgt vor:

- Erstellen Sie sich einen kostenlosen Account bei Spamhaus ([https://portal.spamhaus.com](https://portal.spamhaus.com))
- Nach dem einloggen gehen Sie unten unter Spamhaus Services &gt; Data Query Services auf das Icon mit den Zahnrädern.
- Unter Access sehen sie die entsprechenden URLs für die Abfragen der entsprechenden Services.

Wenn Sie die URL haben, dann kommt die Anpassungen in der Proxmox Mail Gateway Konfiguration:

- Loggen Sie sich im UI ein.
- Gehen Sie zu Configuration &gt; Email Proxy &gt; Options.
- Bearbeiten Sie den Eintrag DNSBL Sites und fügen Sie die vorgenannte URL ein und speichern den Eintrag.

Sie können auch weitere Provider verwenden, wie z.B.

```
xxxxxxxxx.zen.dq.spamhaus.net,bl.spamcop.net,b.barracudacentral.org
```

<p class="callout danger">Sie sollten jedoch unbedingt die nächste Zeit den Emailfluss beobachten, da es Probleme geben kann - inbesondere wenn man Public DNS Server wie google usw. verwendet.</p>