Da musste ich neulich einen neuen Email-Server aufsetzen, so mit allem drum und dran. Sah auf den ersten Blick für mich etwas komplex aus; SMTP-Server, IMAP und POP3 via TLS/SSL, SMTP-AUTH, Webmail via HTTPS … und das ganze am besten in ner Stunde fertig.
Ganz so schnell hab ichs zwar nicht geschafft, es war dann aber doch einfacher als ich gedacht hatte.
Realisiert habe ich das ganze mit einer Fedora Core 5 – übers vorhandene yum konnte ich problemlos alle benötigen Programme installieren: sendmail als SMTP-Server, Dovecot für IMAP und POP3, Cyrus-SASL für die Authentifizierung, Apache mit Squirrelmail für Email-via-Web, OpenSSL für die Sicherheit drumherum. Und vorsichtshalber habe ich auch einen Mailman mit vorbereitet, falls ich in den kommenden paar Wochen mal nach einem Dingsbums für Mailinglisten gefragt werde.
Und so gehts…
- Betriebssystem
Hier hatte ich wie gesagt einfach eine normale Fedora Core 5 Basisinstallation vorgenommen. Direkt danach erstmal via
# yum -y update
das System auf den aktuellen Stand bringen. Gleich danach können auch schon alle benötigen Pakete installiert werden. Hierbei gebe ich nur die nötigsten an, yum löst dabei selbstständig alle Abhängigkeiten auf und installiert diese passend mit.
# yum -y install apache cyrus-sasl mailman squirrelmail dovecot openssl sendmail
- Zertifikate für Apache, Sendmail und Dovecot
Damit alle Daten auch schön verschlüsselt über die Leitung gehen werden TLS/SSL-Zertifikate angeboten. Alle Pakete bringen selbst-signierte Zertifikate mit, diese sind aber nur ein Kalenderjahr gültig und leider nur für localhost.localdomain ausgestellt.
Sendmail
# cd /etc/pki/sendmail/certs
# openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 3650
# openssl req -nodes -new -x509 -keyout sendmail.pem -out sendmail.pem -days 3650
Apache
# cd /etc/pki/tls/certs
# rm localhost.crt
# make testcert
Dovecot
# vi /etc/pki/dovecot/dovecot-openssl.cnf
# cd /usr/share/doc/dovecot-1.0/examples
# ./mkcert.sh
Damit sind drei unterschiedliche Zertifikate erzeugt worden und alle auf unterschiedliche weise. Tatsächlich habe ich selbst die Zertifikate alle mit den entsprechenden openssl-Aufrufen erzeugt (siehe oben), hier kann man aber selbst noch schön sehen, daß es ebenso via Makefile oder shell-script lösbar ist.
- Sendmail mit TLS/SSL und SMTP-AUTH
Hört sich kompliziert an, ist es aber absolut nicht. Da wir das Zertifikat schon fertig haben, brauchen wir den sendmail nur noch dazu überreden, es zu benutzen. Hierzu bearbeiten wir einfach die sendmail.mc:
# vi /etc/mail/sendmail.mc
dnl ### do STARTTLS
define(`confCACERT_PATH’, `/etc/pki/sendmail/certs’)dnl
define(`confCACERT’, `/etc/pki/sendmail/certs/cacert.pem’)dnl
define(`confSERVER_CERT’, `/etc/pki/sendmail/certs/sendmail.pem’)dnl
define(`confSERVER_KEY’, `/etc/pki/sendmail/certs/sendmail.pem’)dnl
define(`confCLIENT_CERT’, `/etc/pki/sendmail/certs/sendmail.pem’)dnl
define(`confCLIENT_KEY’, `/etc/pki/sendmail/certs/sendmail.pem’)dnl
DAEMON_OPTIONS(`Family=inet, Port=465, Name=MTA-SSL, M=s’)dnl
Fedora hat noch die unangenehme Eigenart, sendmail per default lediglich auf 127.0.0.1 horchen zu lassen – das klappt natürlich nicht. Daher sollte die folgende Zeile gelöscht werden:
DAEMON_OPTIONS(`Port=smtp, Address=127.0.0.1, Name=MTA’)dnl
Schon kann unser sendmail TLS/SSL mit uns sprechen. SMTP-Auth wollten wir auch noch:
dnl ### do SMTPAUTH
TRUST_AUTH_MECH(`PLAIN LOGIN DIGEST-MD5 CRAM-MD5′)dnl
define(`confAUTH_MECHANISMS’, `PLAIN LOGIN DIGEST-MD5 CRAM-MD5′)dnl
define(`confAUTH_OPTIONS’, `A p’)dnl
Änderungen speichern und mit make eine neue sendmail.cf erzeugen lassen. Jetzt den Dienst neu starten und vorher sichergehen, daß die SASL ebenfalls läuft.
# make
# service saslauthd restart
# service sendmail restart
Sendmail ist jetzt TLS/SSL-fähig und lässt Emails nur von authentisierten Usern abschicken. Falls es noch nicht klappt empfehle ich einfach das Logging von Sendmail auf Level 13 hochzudrehen und dann beim versuchten Verschicken der Emails die Logs mal genauer zu untersuchen. Meißt sinds nur Tippfehler …
Wenn Sendmail nicht nur TLS/SSL sondern auch unverschlüsselte Verbindungen zulassen soll, muß darauf geachtet werde, daß in der /etc/mail/access alles mit TLS gelöscht oder auskommentiert wird. Bei der FC5 findet sich nach dieser Installationsanleitung folgende Zeile:
TLS_Clt: ENCR:128
Diese kann einfach gelöscht werden um nicht-TLS/SSL Verbindungen zu ermöglichen.
- Dovecot für IMAP und POP3 via TLS/SSL
Einfacher gehts fast nicht. Da das Zertifikat bereits existiert und Dovecot auf der Fedora eine passende Vorkonfiguration besitzt, brauchen wir nur folgendes Kommando auszuführen:
# service dovecot restart
- Apache mit Squirrelmail via HTTPS
Fast ebensoleicht wie die Einrichtung von Dovecot ist Apache mit Squirrelmail. Apache zeigt in der Basisinstallation eine Willkommens-Seite an. Die Config dazu habe ich einfach mißbraucht.
# vi /etc/httpd/conf.d/welcome.conf
Meine korrigierte config springt bei einem Aufruf auf den Webserver direkt auf mein Squirrelmail, da der Server ja keine weiteren Webseiten anbieten soll.
Options -Indexes
# ErrorDocument 403 /error/noindex.html
Redirect permanent / https://web.example.net/webmail
Danach noch den Apache neu starten
# service httpd restart
und schon ist mein Email-Server startklar. Natürlich fehlen jetzt noch die ganzen Benutzer, eventuell virtuelle Domains, Zusatzmodule für den Squirrelmail und die Einrichtung des Mailman – aber das ist jetzt nur noch ne Kleinigkeit.












