Lange Zeit habe ich mich geträubt mich mit dem Thema TLS/SSL beim Mailserver zu beschäftigen. “Funktioniert ja auch ohne”. Aber in Zeiten von Firesheep und öffentlichen WLANs kommt der Gedanke immer wieder hoch. Am heutigen langweiligen Sonntag hab ich beschlossen mich damit mal zu beschäftigen. (Nachdem ich Freitag schon mein Roundcube upgedatet und gepimpt habe).
Eigentlich ist das alles gar nicht so schwer. Courier IMAP und Postfix mit SASL laufen schon ewig. Nur SSL/TLS fehlten noch irgendwie.
Dem courier-imap SSL beibringen (Dank an die Quelle):
# apt-get install courier-imap-ssl
(Standard-Key erstellen lassen, den ändern wir gleich wieder)
# vi /etc/courier/imapd.cnf
... [ req_dn ] C=DE ST=NI L=Stadt O=Meine Firma OU=IMAP CN=imap-server-domain.de emailAddress=postmaster@imap-server-domain.de ...
Neues Zertifikat mit den geänderten Einstellungen erstellen:
# /usr/local/courier-imap/mkimapdcert
Und den IMAP-SSL neustarten:
# /etc/init.d/courier-imap-ssl restart
Fertig!
Nun noch dem Postfix STARTTLS beibringen (Dank an die Quelle):
Zertifikate erstellen:
mkdir /etc/postfix/ssl/ cd /etc/postfix/ssl/ /usr/lib/ssl/misc/CA.pl -newca openssl req -new -nodes -keyout server-key.pem -out server-req.pem -days 365 openssl ca -out server-crt.pem -infiles server-req.pem chmod 644 server-crt.pem demoCA/cacert.pem chmod 400 server-key.pem
vi /ets/postfix/main.cf
(Folgenden Inhalt anfügen)
# tls config smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_CAfile = /etc/postfix/ssl/demoCA/cacert.pem smtpd_tls_cert_file = /etc/postfix/ssl/server-crt.pem smtpd_tls_key_file = /etc/postfix/ssl/server-key.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom tls_random_prng_update_period = 3600s
Postfix neustarten:
# /etc/init.d/postfix restart
Fertig!
Nov 7 21:32:20 foo postfix/smtpd[5773]: connect from foo.bar Nov 7 21:32:21 foo postfix/smtpd[5773]: setting up TLS connection from foo.bar Nov 7 21:32:22 foo postfix/smtpd[5773]: TLS connection established from foo.bar: TLSv1 with cipher AES128-SHA (128/128 bits)
Nov 7 21:33:47 foo imapd-ssl: Connection, ip=[::ffff:foo] Nov 7 21:33:48 foo imapd-ssl: LOGIN, user=foo, ip=[::ffff:foo], port=[56082], protocol=IMAP