Im 6. Teil der Artikelserie wollen wir SSL-Verschlüsselung für den E-Mail Versand mit Postfix konfigurieren. Hierzu werden wir das Let’s Encrypt Zertifikat aus dem 4. Teil der Artikelserie benutzen. Ausführliche Informationen zum Postfix TLS Support findet man im TLS Readme auf der Postfix Seite. Da es mir hier nur um den E-Mail Versand geht und ich momentan nicht vorhabe E-Mails selbst zu hosten, ist die Konfiguration einfach. Der angepasste TLS Parameter Block in der Postfix-Konfigurationsdatei /etc/postfix/main.cf sieht dann aus wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # TLS parameters smtpd_tls_received_header = yes smtpd_tls_loglevel = 1 smtpd_tls_CAfile=/etc/letsencrypt/live/public1.emrich-ebersheim.de/chain.pem smtpd_tls_CApath=/etc/ssl/certs smtpd_tls_cert_file=/etc/letsencrypt/live/public1.emrich-ebersheim.de/cert.pem smtpd_tls_key_file=/etc/letsencrypt/live/public1.emrich-ebersheim.de/privkey.pem smtpd_use_tls=yes smtpd_tls_security_level=may smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL:, NULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES-CBC3-SHA smtpd_tls_mandatory_protocols = !TLSv1 !SSLv2, !SSLv3 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_loglevel = 1 smtp_tls_CAfile=/etc/letsencrypt/live/public1.emrich-ebersheim.de/chain.pem smtp_tls_CApath=/etc/ssl/certs smtp_tls_cert_file=/etc/letsencrypt/live/public1.emrich-ebersheim.de/cert.pem smtp_tls_key_file=/etc/letsencrypt/live/public1.emrich-ebersheim.de/privkey.pem smtp_use_tls=yes smtp_tls_security_level=may smtp_tls_mandatory_ciphers = high smtp_tls_mandatory_exclude_ciphers = aNULL:, NULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES-CBC3-SHA smtp_tls_mandatory_protocols = !TLSv1 !SSLv2, !SSLv3 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. |
Nachdem wir die Änderungen vorgenommen haben, starten wir postfix neu:
1 | systemctl restart postfix |
Wenn wir das Versenden einer Mail testen, wie am Ende des 5. Teils der Artikelserie beschrieben, erhalten wir in der Mail-Log Datei /var/log/mail.log einen Eintrag der folgenden Form:
1 2 3 4 5 6 7 8 9 10 | Sep 27 11:11:39 public1 postfix/pickup[6310]: DE4B7A0E58: uid=0 from=<root> Sep 27 11:11:39 public1 postfix/cleanup[7983]: DE4B7A0E58: message-id=<20160927111139.DE4B7A0E58@public1.emrich-ebersheim.de> Sep 27 11:11:39 public1 postfix/qmgr[6311]: DE4B7A0E58: from=<root@public1.emrich-ebersheim.de>, size=338, nrcpt=1 (queue active) Sep 27 11:11:39 public1 postfix/cleanup[7983]: EC514A047E: message-id=<20160927111139.DE4B7A0E58@public1.emrich-ebersheim.de> Sep 27 11:11:39 public1 postfix/local[7985]: DE4B7A0E58: to=<root@localhost>, relay=local, delay=0.08, delays=0.04/0.03/0/0.01, dsn=2.0.0, status=sent (forwarded as EC514A047E) Sep 27 11:11:39 public1 postfix/qmgr[6311]: EC514A047E: from=<root@public1.emrich-ebersheim.de>, size=475, nrcpt=1 (queue active) Sep 27 11:11:39 public1 postfix/qmgr[6311]: DE4B7A0E58: removed Sep 27 11:11:40 public1 postfix/smtp[7986]: Trusted TLS connection established to mx00.kundenserver.de[212.227.15.41]:25: TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits) Sep 27 11:11:40 public1 postfix/smtp[7986]: EC514A047E: to=<me@mydomain.tld>, orig_to=<root@localhost>, relay=mx00.kundenserver.de[212.227.15.41]:25, delay=0.25, delays=0.01/0.04/0.13/0.07, dsn=2.0.0, status=sent (250 Requested mail action okay, completed: id=0MUPuI-1bNrDS0ie2-00R0GU) Sep 27 11:11:40 public1 postfix/qmgr[6311]: EC514A047E: removed |
Die Zeile folgende Zeile bestätigt uns, dass die Mail verschlüsselt zum Mailexchanger übertragen wurde.
1 | Trusted TLS connection established to mx00.kundenserver.de[212.227.15.41]:25: TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits) |
Nun müssen wir noch dafür sorgen, dass Postfix seine Konfiguration neu lädt, wenn das Let’s Encrypt Zertifikat erneuert wurde. Dazu ändern wir unser Let’s Encrypt Update Script /root/bin/letsencrypt-updatecerts.sh wie folgt:
1 2 3 4 5 6 7 8 9 | #!/bin/bash /root/bin/letsencrypt-preupdatehook.sh cd /root letsencrypt renew -c /etc/letsencrypt/cli.ini --agree-tos /root/bin/letsencrypt-postupdatehook.sh |
Danach legen wir die beiden Dateien /root/bin/letsencrypt-preupdatehook.sh und /root/bin/letsencrypt-postupdatehook.sh an. Das Script /root/bin/letsencrypt-preupdatehook.sh ist momentan funktionslos und enthält nur die folgenden Zeilen:
1 2 3 | #!/bin/bash cd /root |
Das Script /root/bin/letsencrypt-postupdatehook.sh überprüft, ob sich die Zertifikate verändert haben und führt gegebenenfalls ein Reload für Postfix aus.
1 2 3 4 5 6 7 8 | #!/bin/bash cd /root result=$(find /etc/letsencrypt/live/ -type l -mmin -60 ) if [ -n "$result" ]; then systemctl reload postfix fi |
Abschliessend ändern wir noch die Berechtigungen für die beiden Dateien.
1 | chmod 700 /root/bin/letsencrypt-preupdatehook.sh /root/bin/letsencrypt-postupdatehook.sh |
Damit ist die Konfiguration für verschlüsselte Mail-Übertragung beendet.
Im 7. Teil der Artikelserie, der demnächst folgt, wollen wir uns noch ein wenig mit dem Apache Webserver beschäftigen. Speziell wollen wir uns das Monitoring des Cloudservers und des Apache anschauen.