TwitterFacebookGoogleRSS

Der Weg zum eigenen Mailserver mit einem abgesicherten Zarafa Server

Im Rahmen dieses “Tutorials” werde ich die Installation sowie Einrichtung eines Zarafa-Servers zusammen mit Postfix und SASL-Authentifizierung erläutern. Auch werde ich die Thematik der Absicherung in Form von SSL/TLS Kommunikation und einer Sperre nach X-Fehlversuchen erläutern. Voraussetzung für diese Anleitung ist eine gewisse Grundkenntnis für Debian bzw. Ubuntu und die damit zusammenhängenden Befehle. Sollten Fehler oder Probleme mit dieser Anleitung in Verbindung stehen, bitte ich Sie um Rückmeldung, damit ich diese beheben kann. Ansonsten hoffe ich natürlich das ich damit den ein oder anderen auf dem Weg zum eigenen Mailserver weiterhelfen kann. Eins noch vor weg: Wenn Sie einen eigenen Mailserver betreiben, müssen Sie sich auch über die Absicherung des Servers informieren und im Klaren sein. Ein ungeschützt nutzbarer SMTP kann einen unschönen Effekt erzielen. Er könnte unter anderem als Spam-Schnittstelle für Bots genutzt werden. Die gesamte Anleitung basiert auf Zarafa 7.1.3, bei anderen Versionen ist die Gültigkeit dieses Tutorials nicht garantiert.

 

Die Vorbereitung

Für die Vorbereitung benötigen wir zunächst einmal die Zarafa-Binarys und  ggf. auch noch das Plug-in um Zarafa unter Outlook optimal nutzen zu können. Beides ist unter folgender URL erhältlich: http://download.zarafa.com/community/final/ .Hier suchen wir uns zunächst die “Root”-Version heraus, in unserem Fall Version 7.1 und danach die spezifische Version. In diesem Tutorial wird dies Version 7.1.3-40304 sein. Im nun aufgelisteten “windows”-Ordner finden wir das nötige Plug-in für eine optimale Einbindung  u.a. in Outlook. Dies heißt bei unserer Version “zarafaclient-7.1.3-41038.msi”. Dies benötigen wir nur, wenn wir auch einen Client nutzen würden. Ich persönlich empfehle dies aus Komfortgründen (wobei inzwischen auch die Web-Oberfläche sehr schön ist). Im Ordner unserer spezifischen Version müssen wir uns auch noch unsere Zarafa-Binarys aussuchen. Da ich im Rahmen des Tutorials ein Ubuntu 10.04 LTS 64-Bit verwende, werde ich hier die Datei “zcp-7.1.3-40304-ubuntu-12.04-x86_64-free.tar.gz” nutzen. Für eine finale Absicherung zu Ende hin, benötigen wir auch noch ein SSL-Zertifikat, welches wir z.B. von StartSSL bekommen können.

Nun sollten wir noch, nachdem wir uns die ganzen URL-Adressen zurecht gelegt haben, uns auf unseren Server verbinden. Dies ist z.B. mit PuTTY möglich. Navigieren Sie dann in einen Ordner, in dem der Download stattfinden soll (der Zarafa Client gehört natürlich auf den Client-Rechner und nicht auf den Server. Hier benötigen wir lediglich die Zarafa-Binarys). Laden wir also zunächst unsere Zarafa Version herunter. Hierfür benötigen wir folgenden Befehl (Version ggf. anpassen):

wget http://download.zarafa.com/community/final/7.1/7.1.3-40304/zcp-7.1.3-40304-ubuntu-10.04-x86_64-free.tar.gz

Nach dem Download müssen wir dies noch entpacken. Hierfür nutzen wir natürlich den TAR-Befehl:

tar xvfz zcp-7.1.3-40304-ubuntu-10.04-x86_64-free.tar.gz

Außerdem sollte bereits Apache2 sowie MySQL installiert sein. Falls dies nicht der Fall ist, sollte dies nun nachgeholt werden. Dafür bietet sich unter anderem der LAMP-Server an. Eine detaillierte Anleitung dazu finden Sie unter folgendem Link: http://www.mypcsupport.de/net/linux/ubuntu-lamp-installation/ .Hierbei ist zu beachten, dass die MySQL-Installation notwendig ist. Auch die Apache2 Installation ist erforderlich, wenn die Web-Oberfläche genutzt werden soll.

Weiterhin müssen wir bei unserem Domain-Hoster noch die nötigen Subdomains sowie Maindomain konfigurieren. Hierfür benötigen wir einen A-Record für die Subdomain “secure”, die “mail” Subdomain, für die “www” Domain sowie ein MX-Record mit der Priorität 10, welcher auf “mail.example.de” (ersetzen mit Ihrer Domain!) zeigt. Bedenken Sie, dass es bis zu einer Stunde dauern kann, bevor diese verfügbar sind. Die A-Record sollten natürlich alle auf unsere Server-IP-Adresse zeigen.

Nun haben wir alles, was wir zur Installation benötigen. Im nächsten Schritt geht es zur Installation.

 

Die Installation

Postfix

Beginnen wir mit der Installation von Postfix – unseren Kern für den Mailversand unter Zarafa. Hierfür können wir, nachdem wir unsere Paketliste aktualisiert haben, folgenden Befehl verwenden:

apt-get install postfix

Nachdem wir dies getan haben, beginnt auch gleich das Initial-Setup für Postfix. Eigentlich ist es egal was wir in Postfix konfigurieren, da wir vieles davon später manuell ändern werden, um die Sicherheit zu maximieren. Dennoch hier kurz der Guide durch den Installations-Wizard: Im ersten Dialog wird “Internet mit Smarthost” gewählt. Als System E-Mail registrieren wir hier nun servername.domain also z.B. ‘example.example.de’. Für den SMTP-Relay-Server ist es irrelevant was wir wählen, da wir diesen später entfernen. Für den Fall, dass es dennoch benötigt wird, könnte man dies auf z.B. ‘smtp.example.de’ festlegen. Damit ist die grundlegende Installation von Postfix auch bereits abgeschlossen, die nähere Konfiguration folgt später.

 

Zarafa

Kommen wir also nun zur Installation von Zarafa, Postfix sowie SASL und fail2ban. Für die Zarafa-Installation müssen wir zunächst in den gerade entpackten Ordner navigieren. Hier können wir nun das Shell-Script zur Installation verwenden, um so alle Referenzen zu bekommen.

./install.sh

Das nun folgende Setup kann größtenteils durch simples Bestätigen durchgeführt werden. Sollten der Installation Pakete fehlen, so werden Sie aufgefordert diese zu installieren, hierfür reicht jedoch eine Bestätigung. Beginnend bei der Aufforderung eine gültige Seriennummer einzugeben, können Sie nun eine unter http://www.zarafaserver.de/ erwerben. Andernfalls können wir die Seriennummer zunächst leer lassen.

Bei der MySQL-Server Konfiguration, welche im Rahmen des Setups erfragt wird, sollte der Host (wenn auf gleichem Server ‘localhost’), Port, Benutzer sowie Passwort korrekt eingegeben werden. Diese Eingaben orientieren sich an jenen Eingaben aus der Installation. Wurde kein spezieller Benutzername gewählt, müsste dieser ‘root’ sein, für den Host ‘localhost’ und für Port ’3306′. Die Datenbank sollte einen eindeutigen, noch nicht existierenden Namen, bekommen z.B. ‘zarafa’. Als Log-Methode kann grundsätzlich ‘file’ genutzt werden, als Log-File sollte stets eine definierte Datei gewählt werden. Ich werde diese unter ‘/var/log/zarafa/’ ablegen, bei SQL heißt mein Logfile ‘sql.log’.

Als SMTP-Server kann hierbei ‘smtp.example.de’ (example.de ist durchgehend durch die eigene Domain zu ersetzen!) verwendet werden. Auch hier ist wieder das Loggen sinnvoll einzurichten. Bei dem Warning-Interval nutze ich persönlich immer einen Tag also ’1′ als Wert. Natürlich sollte auch hier die Log-Konfiguration sinnvoll eingerichtet werden. Weiter geht es mit der Abfrage für POP3 sowie IMAP. Ich würde hierfür empfehlen den Service zu nutzen, da es auch Clients gibt, die nicht anders genutzt werden können. In diesem Zuge können natürlich auch die dafür verwendeten Ports direkt angepasst werden. Ich verwende hier jedoch die Standardports (110 POP3, 143 IMAP). Im Weiteren Verlauf werden wir gefragt, ob wir auch den iCal-Service nutzen möchten. Auch dies werde ich mitnutzen, da ich die Kalender Integration sinnvoll finde (über iCal / CalDAV findet auch die Anbindung in Kalander Apps auf Android oder iOS statt). Auch hierfür nutze ich den Standardport 8080.

Der nächste Service wäre der “Search”-Service (dt. Such-Service). Auch diesen werde ich nutzen. Gegebenenfalls werden Sie nun nochmals aufgefordert fehlende Pakete zu installieren, dies können Sie erneut mit einer Bestätigung akzeptieren. Abschließend kommt die Frage, ob der Service starten soll. Dies wird bestätigt und der “Search”-Service wird ausgeführt. Im Regelfall, mal abgesehen von Passwörtern sowie ob die einzelnen Services genutzt werden, kann der in den [] stehenden Standardwert durch einfaches drücken von Enter akzeptiert werden.

Wenn alles korrekt eingerichtet wurde, sollte nun bereits unter http://SERVER_IP_ADRESSE/webapp/ der Zarafa Server erreichbar sein.

 

SASL Authentication

Weiter geht es mit der SASL Installation. Aber was ist SASL eigentlich? SASL sorgt im Grunde für eine gesicherte Authentifizierung, damit wir SMTP nur mit Login verwenden können. Somit ist dies eine Erweiterung, die wir unbedingt nutzen sollten. Die Installation hiervon geschieht über eine simple Kommandozeile.

apt-get install sasl2-bin

Das ist erstmal auch schon alles, was wir mit SASL zur Installation machen müssen.

 

fail2ban

Ähnlich wie SASL muss auch fail2ban lediglich mit einem Befehl installiert werden. Dieses nützliche Programm schützt uns vor Brute-Force sowie DDOS Attacken.

apt-get install fail2ban

 

Amavis

Genauso anspruchsvoll ist die als letztes verbleibende Installation von Amavis – unserem Viren und Spamschutz. Auch hierfür genügt ein einzelner Befehl und zwar folgender:

apt-get install amavisd-new clamav-daemon spamassassin razor pyzor

Nun sind wir mit unseren Installationen soweit fertig und können mit der Konfiguration beginnen.

 

Die Konfiguration

Beginnen wir mit der Konfiguration unserer einzelnen Teile. Da wir zuvor kein Zertifikat beantragen können, werden wir hier nun zunächst das ganze ohne SSL einrichten müssen und können erst im zweiten Schritt zur SSL Absicherung voranschreiten.

 

Die Grundeinrichtung

Als Grundlage für unseren Server sollten wir zunächst unsere SASL Authentifizierung konfigurieren. Dies tun wir indem wir folgende Datei bearbeiten (im Beispiel mit dem Nano-Editor):

nano /etc/postfix/sasl/smtpd.conf

Hier müssen wir Folgendes einfügen und anschließend abspeichern:

pwcheck_method: saslauthd
mech_list: plain login

Wenn dies erledigt ist, müssen wir den “Postfix”-Benutzer noch der “SASL”-Gruppe zuordnen. Hierfür steht uns folgender Befehl zur Verfügung:

gpasswd -a postfix sasl

Weiter geht es mit unserer Hauptkonfiguration von Postfix. Gehen wir also zunächst zu unserer Konfigurationsdatei:

nano /etc/postfix/main.cf

Hier müssen wir die ‘relayhost’-Zeile durch Löschen oder Auskommentieren entfernen. Diese sollte sich relativ weit unten befinden und in etwa so aussehen (abhängig von der Angabe bei der Postfix Installation): ”relayhost = smtp.example.de“. Wenn dies erledigt ist, fügen wir am Ende unserer Datei Folgendes ein (bitte die ‘example.de’-Domain entsprechend ersetzen!):

# SASL Auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,check_relay_domains,reject_unauth_destination 

# Amavis
content_filter=smtp-amavis:[127.0.0.1]:10024 

# Zarafa Mailbox mapping
virtual_mailbox_domains = example.de
virtual_alias_maps = hash:/etc/aliases
mailbox_command = /usr/bin/zarafa-dagent "$USER"
virtual_transport = zarafa: zarafa_destination_recipient_limit = 1

Auch hier natürlich abspeichern und weiter geht es nochmal mit unserer SASL-Konfiguration. Dafür müssen wir folgende Datei bearbeiten:

nano /etc/default/saslauthd

Hier ist es am einfachsten, zunächst alles zu löschen und anschließend das Ganze in einem Stück einzufügen. Der Inhalt der Datei sollte anschließend wie folgt aussehen:

START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="rimap"
MECH_OPTIONS="127.0.0.1"
THREADS=0
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Nun geht es weiter, indem wir unseren Virtual-Mail Benutzer anlegen und einbinden. Außerdem benötigen wir noch einen Benutzer für Amavis.

adduser --system --no-create-home vmail
adduser clamav amavis

Somit haben wir also auch noch die Benutzer angelegt, die unser Setup benötigen wird. Außerdem müssen wir unseren Virutal-Mail-Benutzer noch für Zarafa bekannt machen. Dafür nutzen wir folgende Datei:

nano /etc/zarafa/server.cfg

Dazu suchen wir nach der Variable “local_admin_users” und fügen, wie bereits in der Kommentarzeile abgebildet, den vmail-Benutzer hinzu. Weiter geht es mit Amavis und dessen Einbindung. Hierfür müssen wir folgende Datei bearbeiten:

nano /etc/amavis/conf.d/15-content_filter_mode

Hier müssen wir jeweils die ‘#’-Zeichen vor den Zeilen, die mit einem ‘@’ starten und deren jeweiliger Folgezeile entfernen. Abschließend sollte die Konfiguraiton in etwa so aussehen:

use strict;

@bypass_virus_checks_maps = (
 \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
 \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

 1;

Weiter geht es damit, Amavis zu aktivieren. Dies geschieht in folgender Datei:

nano /etc/default/spamassassin

Hier muss lediglich die Variable ‘ENABLED’ auf ’1′ anstatt auf ’0′ gesetzt werden. Danach folgt die Einrichtung von fail2ban. Hier müssen wir noch die zu schützenden Schnittstellen aktivieren. Dies können natürlich mehr sein als nur die für unseren Mail-Verkehr . Ich werde hier aber nur jene erläutern. Dafür benötigen wir folgende Datei:

nano /etc/fail2ban/jail.conf

Hier können wir zunächst nach “postfix” suchen und die ‘enabled‘ Variable auf ‘true‘ setzen. Selbiges machen wir nun noch mit “sasl“. Sinn machen würde es auch noch für apache sowie ssh. Abschließend für unsere Grundkonfiguration folgt die Anpassung in der Postfix Master-Datei. Diese finden Sie hier:

nano /etc/postfix/master.cf

Hier muss auch gleich einiges ergänzt werden. Unter der Zeile “pickup    fifo  n       –       –       60      1       pickup” können wir folgendes für Amavis einfügen:

# Amavis
 -o content_filter=
 -o receive_override_options=no_header_body_checks
# Amavis end

Unter der Zeile “smtp      unix  -       –       –       –       –       smtp” wird dies eingefügt:

smtps inet n - n - - smtpd
 -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

Und abschließend muss am Ende der Datei dieser Block eingefügt werden:

zarafa unix - n n - 10 pipe
 flags=DRhu user=vmail argv=/usr/bin/zarafa-dagent -R ${recipient}
# Amavis
smtp-amavis unix - - - - 2 smtp
 -o smtp_data_done_timeout=1200
 -o smtp_send_xforward_command=yes
 -o disable_dns_lookups=yes
 -o max_use=20

127.0.0.1:10025 inet n - - - - smtpd
 -o content_filter=
 -o local_recipient_maps=
 -o relay_recipient_maps=
 -o smtpd_restriction_classes=
 -o smtpd_delay_reject=no
 -o smtpd_client_restrictions=permit_mynetworks,reject
 -o smtpd_helo_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o smtpd_data_restrictions=reject_unauth_pipelining
 -o smtpd_end_of_data_restrictions=
 -o mynetworks=127.0.0.0/8
 -o smtpd_error_sleep_time=0
 -o smtpd_soft_error_limit=1001
 -o smtpd_hard_error_limit=1000
 -o smtpd_client_connection_count_limit=0
 -o smtpd_client_connection_rate_limit=0
 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Damit ist die Konfiguration an sich abgeschlossen. Allerdings benötigen wir noch einen E-Mail Account sowie die Weiterleitung von ‘webmaster’, ‘postmaster’ und ‘hostmaster’ auf unseren Mail-Account. Legen wir uns also zunächst einmal unseren Mail-Account an. Dies geschieht über folgende Befehle (Zeilen einzeln ausführen und Bildschirmausgabe beachten!):

adduser mailuser --no-create-home
zarafa-admin -c mailuser -p mailpassword -f "Mailuser Example" -e "mailuser@example.de" 
zarafa-admin -u mailuser --enable-feature imap 
zarafa-admin --create-store mailuser

Ok, was geschieht hier nun? Zunächst erzeugen wir einen lokalen Benutzer ohne sonderlich viele Rechte und ohne Home-Verzeichnis. Hierfür müssen wir noch ein Passwort auf unserem System festlegen welches dasselbe sein sollte wie das spätere Mail-Passwort. Anschließend machen wir Zarafa mit unserem Benutzer bekannt. Der Parameter ‘-c’ gibt hierbei den Loginnamen an, ‘-p’ das Passwort, ‘-f’ den Anzeigenamen und da ein Leerzeichen vorkommt in “” (dies ist im Regelfall Vor- und Nachname) und zum Schluss ‘-e’ welches die Mail angibt. In der nächsten Zeile erlauben wir unserem neuen Benutzer noch die IMAP-Kommunikation zu benutzen und fügen anschließend noch ein Storage für die Mails hinzu. Bitte beachten Sie hierbei, dass der Benutzer- / Loginname sowie das Passwort durchgehend identisch sein sollte.

Bearbeiten wir nun die Weiterleitung der Postfächer. Dazu müssen wir folgende Datei bearbeiten:

nano /etc/aliases

Am einfachsten ist es hier, die folgende Zeile einzufügen:

root: mailuser

Denn so werden alle, die auf root geleitet werden auf unseren Mail-Benutzer (natürlich anpassen!) weitergeleitet. Ansonsten muss diese Anpassung mindesten für die drei oben genannten erfolgen, damit wir dessen Mails auch bekommen. Nun benötigen wir noch folgenden Befehl um die Datenbank zu aktualisieren:

newaliases

Für nähere Informationen zu den Aliases, kann folgendes Tutorial herangezogen werden: http://townx.org/blog/elliot/adding_aliases_to_postfix_on_ubuntu

Abschließend, damit die Konfigurationen auch akzeptiert werden, müssen nochmals sämtliche verwendeten Services neugestartet werden (bitte Zeilen nur einzeln eingeben!).

service saslauthd restart
service spamassassin restart
service clamav-daemon restart
service amavis restart
service postfix restart
service zarafa-dagent restart
service zarafa-server restart
service apache2 restart
service fail2ban restart

Etwaige Warnungen von Amavis bzgl. der Aktualität können hierbei ignoriert werden – die Aktualisierung geschieht automatisch. Nun sollten wir uns auch mit unseren Mail-Benutzer sowie dessen Passwort im Zarafa-Webinterface einloggen können. Dafür stehen uns folgende zwei Webinterfaces standardmäßig zur Verfügung:

WebApp: http://SERVER_IP_ADRESSE/webapp/
Webaccess: http://SERVER_IP_ADRESSE/webaccess/

 

Die SSL Konfiguration

Nun haben wir eine schon einigermaßen gesicherte Konfiguration. Aber was noch fehlt ist die Verschlüsselung durch SSL. Hierfür benötigen wir nun ein Zertifikat, eine erneute Anpassung unserer Konfigurationen und zum Schluss wieder einen Neustart unserer Systeme. Ein kostenloses Zertifikat können wir z.B. von hier bekommen: https://www.startssl.com/ . Die einzige Bedingung ist eine Registrierung (das Registrierungszertifikat sollte man sich Speichern, da es später zum Login dient). Mit Hilfe des “Validation Wizard” können wir unsere Domain validieren lassen. Hierfür müssen wir bei Type “Domain Name Validation” wählen und dem Wizard folgen. Am Ende sollten wir eine E-Mail mit unserem Freischaltcode bekommen. Sollte diese nicht ankommen, müssen wir uns die Logdatei von unserem Mailserver näher ansehen. Dies finden Sie hier:

tail -f --lines=30 /var/log/mail.log

Meist findet man hier alle benötigen Informationen, wenn etwas schief geht. Wenn die Validierung geschafft ist, geht es weiter zum “Certificates Wizard”. Hier wählen wir als Certificate Target “Web Server SSL/TLS Certificate”. Anschließend müssen wir ein Passwort für unser Zertifikat wählen, dies sollte möglichst komplex und lang sein, jedoch ist es erforderlich, dass dies noch in ein paar Minuten zur Verfügung steht. Als “Keysize” muss hier “2048″ gewählt werden und als Hash-Algorithm “SHA1″. Nun haben wir unseren privaten Schlüssel. Anschließend gehen wir auf dem Server zu folgender Datei:

nano /etc/keys/mail.ssl.key

Dort fügen wir den Text 1:1 ein. Im nächsten Schritt führen wir folgenden Befehl aus und geben unser Passwort ein, welches wir zur Zertifikatserstellung gewählt haben und hier eigtl. zum letzten Mal benötigen.

openssl rsa -in /etc/keys/mail.ssl.key -out /etc/keys/mail.ssl.key

Danach geht es weiter im Wizard. Nun wählen wir unsere Domain aus und geben die Subdomain an, welche wir bei unserem Domain-Hoster registriert haben. Ich nutze hierfür z.B. “secure.example.de“. Nun bekommen wir noch eine Zertifikatsdatei, die wir hier ablegen:

nano /etc/keys/mail.ssl.crt

Erneut den Inhalt 1:1 einfügen, den wir im Wizard bekommen. Nun benötigen wir noch das CA-Zertifikat sowie das Class1-CA-Zertifikat. Beginnen wir mit dem Class1 Zertifikat:

nano /etc/keys/sub.class1.server.ca.pem

Hier fügen wir Folgendes ein (nur wenn StartSSL verwendet wird, ansonsten bitte das passende Class1-CA-Zertifikat anfordern):

-----BEGIN CERTIFICATE-----
MIIGNDCCBBygAwIBAgIBGDANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW
MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkwHhcNMDcxMDI0MjA1NDE3WhcNMTcxMDI0MjA1NDE3WjCB
jDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsT
IlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0
YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgU2VydmVyIENBMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtonGrO8JUngHrJJj0PREGBiE
gFYfka7hh/oyULTTRwbw5gdfcA4Q9x3AzhA2NIVaD5Ksg8asWFI/ujjo/OenJOJA
pgh2wJJuniptTT9uYSAK21ne0n1jsz5G/vohURjXzTCm7QduO3CHtPn66+6CPAVv
kvek3AowHpNz/gfK11+AnSJYUq4G2ouHI2mw5CrY6oPSvfNx23BaKA+vWjhwRRI/
ME3NO68X5Q/LoKldSKqxYVDLNM08XMML6BDAjJvwAwNi/rJsPnIO7hxDKslIDlc5
xDEhyBDBLIf+VJVSH1I8MRKbf+fAoKVZ1eKPPvDVqOHXcDGpxLPPr21TLwb0pwID
AQABo4IBrTCCAakwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
VR0OBBYEFOtCNNCYsKuf9BtrCPfMZC7vDixFMB8GA1UdIwQYMBaAFE4L7xqkQFul
F2mHMMo0aEPQQa7yMGYGCCsGAQUFBwEBBFowWDAnBggrBgEFBQcwAYYbaHR0cDov
L29jc3Auc3RhcnRzc2wuY29tL2NhMC0GCCsGAQUFBzAChiFodHRwOi8vd3d3LnN0
YXJ0c3NsLmNvbS9zZnNjYS5jcnQwWwYDVR0fBFQwUjAnoCWgI4YhaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMCegJaAjhiFodHRwOi8vY3JsLnN0YXJ0
c3NsLmNvbS9zZnNjYS5jcmwwgYAGA1UdIAR5MHcwdQYLKwYBBAGBtTcBAgEwZjAu
BggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjA0
BggrBgEFBQcCARYoaHR0cDovL3d3dy5zdGFydHNzbC5jb20vaW50ZXJtZWRpYXRl
LnBkZjANBgkqhkiG9w0BAQUFAAOCAgEAIQlJPqWIbuALi0jaMU2P91ZXouHTYlfp
tVbzhUV1O+VQHwSL5qBaPucAroXQ+/8gA2TLrQLhxpFy+KNN1t7ozD+hiqLjfDen
xk+PNdb01m4Ge90h2c9W/8swIkn+iQTzheWq8ecf6HWQTd35RvdCNPdFWAwRDYSw
xtpdPvkBnufh2lWVvnQce/xNFE+sflVHfXv0pQ1JHpXo9xLBzP92piVH0PN1Nb6X
t1gW66pceG/sUzCv6gRNzKkC4/C2BBL2MLERPZBOVmTX3DxDX3M570uvh+v2/miI
RHLq0gfGabDBoYvvF0nXYbFFSF87ICHpW7LM9NfpMfULFWE7epTj69m8f5SuauNi
YpaoZHy4h/OZMn6SolK+u/hlz8nyMPyLwcKmltdfieFcNID1j0cHL7SRv7Gifl9L
WtBbnySGBVFaaQNlQ0lxxeBvlDRr9hvYqbBMflPrj0jfyjO1SPo2ShpTpjMM0InN
SRXNiTE8kMBy12VLUjWKRhFEuT2OKGWmPnmeXAhEKa2wNREuIU640ucQPl2Eg7PD
wuTSxv0JS3QJ3fGz0xk+gA2iCxnwOOfFwq/iI9th4p1cbiCJSS4jarJiwUW0n6+L
p/EiO/h94pDQehn7Skzj0n1fSoMD7SfWI55rjbRZotnvbIIp3XUZPD9MEI3vu3Un
0q6Dp6jOW6c=
-----END CERTIFICATE-----

Weiter geht es mit dem CA-Zertifkat, welches hier liegt:

nano /etc/keys/ca.pem

Mit folgendem Inhalt (nur wenn StartSSL verwendet wird, ansonsten bitte das passende CA-Zertifikat anfordern):

-----BEGIN CERTIFICATE-----
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW
MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9
MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh
cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk
pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf
OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C
Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT
Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi
HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM
Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w
+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+
Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3
Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B
26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID
AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j
ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js
LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM
BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0
Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy
dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh
cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh
YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg
dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp
bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ
YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT
TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ
9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8
jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW
FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz
ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1
ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L
EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu
L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC
O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V
um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh
NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14=
-----END CERTIFICATE-----

Nun müssen wir noch ein zusammengefügtes Zertifikat erzeugen. Dieses legen wir hier an:

nano /etc/keys/example.de-ssl.pem

Der Inhalt hiervon ist jedoch relativ flexibel – mehr oder weniger. Dazu fügen wir einfach die vier uns vorliegenden Zertifikate untereinander stumpf ein ohne Leerzeilen dazwischen, aber mit den “— Begin —” sowie “— End —” Zeilen. Die Reihenfolge in der unsere Zertifikate hier nun eingetragen werden ist folgende:

mail.ssl.crt
mail.ssl.key
ca.pem
sub.class1.server.ca.pem
sub.class1.server.ca.pem

Und ja, es ist korrekt, dass das letzte Zertifikat hier zwei mal hinein gehört. Nun haben wir auch unser zusammengefügtes Zertifikat. Abschließend müssen wir nochmals die Main-Konfiguration von Postfix anpassen. Diese finden wir erneut hier: 

nano /etc/postfix/main.cf

Hier ist nun der Teil unter “# TLS parameters” bis hin zu “# See /usr/share/doc…” durch folgenden zu ersetzen:

smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes

smtpd_tls_cert_file = /etc/keys/example.de-ssl.pem
maildrop_destination_recipient_limit = 1

smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Sollte Ihre zusammengefügte Zertifikatsdatei anders heißen, korrigieren Sie diese bitte! Erneut können wir einfach den oben bereits genutzten Restart-Block nutzen, um das Ganze zu aktivieren (theoretisch würde ein postfix, apache und zarafa reload genügen).

service saslauthd restart
service spamassassin restart
service clamav-daemon restart
service amavis restart
service postfix restart
service zarafa-dagent restart
service zarafa-server restart
service apache2 restart
service fail2ban restart

Somit können wir nun mit Hilfe eines E-Mail Programms die gesicherte Verbindung testen. Sollte es erforderlich sein, dass die Weboberflächen ebenfalls mit SSL, also HTTPS aufgerufen werden können, ist noch eine Anpassung bei apache nötig. Hierfür kann folgendes Tutorial genutzt werden: http://wiki.ubuntuusers.de/Apache/SSL

 

Fazit

Abschließend möchte ich noch hinzufügen, dass das Aufsetzen eines eigenen Mailservers mithilfe von Zarafa und Postfix wirklich ein Kinderspiel ist. Selbst die Absicherung des Servers ist in kürzester Zeit zu realisieren. Jedem der einen eigenen Mailserver aufsetzten will, dem kann ich Zarafa nur empfehlen. Aktuell ist dies aus meiner Sicht das Beste. Auch für Firmen lohnt es sich hier eine entsprechend lizensierte Fassung aufzusetzen und zu verwenden, da auch die Lizenzkosten akzeptabel sind. Die Unterschiede zwischen der kostenlosen und der kostenpflichten Version können der Zarafa Homepage problemlos entnommen werden.

Ich hoffe ich konnte Ihnen mit diesem Tutorial helfen und würde mich über Feedback freuen.

10 Gedanke zu “Der Weg zum eigenen Mailserver mit einem abgesicherten Zarafa Server

  1. Ich bin mir nicht sicher ob ich es übersehen habe, aber vielleicht könnte man noch die Implementierung von SSL in die Apache Configs übernehmen? So wie du es mir auf Arbeit gezeigt hattest?

    Grüße,
    Meikel

  2. Super Tutorial, vielen Dank!

    Einen kleinen Fehler habe ich gefunden:
    bevor man den ersten key mit nano einfügt muss der entsprechnde ordner noch angelegt werden (sudo mkdir /etc/keys/).

    Leider hab ich nach dem Tutorial noch das Problem das Thunderbird nur eine unverschlüsselte verbindung für imap aufbauen will (smtp funktioniert). Habe ich ein fehler gemacht oder muss das noch anders aktiviert werden?

    • Ich weiß nicht genau, wie es im Thunderbird ist, da ich Outlook nutze. Aber bei der Lösung ist es vorgesehen das auch ältere E-Mail Clients Funktionieren dies setzt voraus das die unverschlüsselte Übertragung möglich ist. Jedoch sollte es möglich sein Thunderbird auf der SSL Konfiguration auch im IMAP Nutzen zu können. Es könnte sein, dass der Port (443) evtl. Blockiert ist.

      • Denke nicht das es an Thunderbird liegt, der testet eigentlich alles durch und nimmt wenn möglich immer die verschlüsselte Variante, auch manuelle Einstellung hat nicht geklappt. Mit K9 Mail unter android kriege ich das gleiche problem. Unverschlüsselte verbindung geht, bei “StartSSL (required)” – Port 143- sagt er “Cannot connect to server. (TLS not supported but required)”. Bei anderen varianten (TLS/SSL – 443 oder 993) sagt er “Cannot connect to server”. Ports 22, 25, 80, 110, 143, 236, 237, 443, 465, 587, 993, 995 und 8080, waren aber eigentlich offen, habe jetzt aber um sicher zu gehen nochmal iptables (&iptables-persistent) und fail2ban uninstalliert und neugestartet, ging trotzdem nicht.

        Bin gerade auch die letzten Schritte nochmal durchgegangen um den Fehler zu suchen und habe noch zwei offen Fragen:
        - In /etc/keys/example.de-ssl.pem kommt an zweiter stelle die _unverschlüsselte_ mail.ssl.key rein, oder?
        - Bei dem zweiten Scritt beim erzeugen der Zertifizierung muss nicht der hostname des servers rein, oder?
        Ich habe jetzt secure.MEINDOMAIN.eu genommen, diese subdomain leitet auch auf die ip von dem server (der hostname ist aber nicht “secure” sondern “vserver”)

        Ansosnten wüsste ich nicht wo ich ein Fehler hätte machen können, die anleitung war schließlich sehr detailiert…

        Danke nochmal für deine Hilfe!

        • Ich werde es morgen mal im Thunderbird testen, wie es sich da verhält. Ich habe es bei mir ebenfalls exakt so gemacht und zumindest Outlook sowie der Mail-Client auf Android Arbeiten damit super über eine SSL Verschlüsselung.

          Die Datei die alle Zertifikate beinhaltet ist bei mir wie folgt aufgebaut (die Zeilen zwischen den jeweiligen BEGIN und END sind mit den entsprechenden Inhalt zu fülle):

          -----BEGIN CERTIFICATE-----
          mail.ssl.CRT
          -----END CERTIFICATE-----
          -----BEGIN RSA PRIVATE KEY-----
          mail.ssl.KEY
          -----END RSA PRIVATE KEY-----
          -----BEGIN CERTIFICATE-----
          CA-Zertifikat
          -----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----
          Class1-CA-Zertifikat
          -----END CERTIFICATE-----
          -----BEGIN CERTIFICATE-----
          Class1-CA-Zertifikat
          -----END CERTIFICATE-----

          Und was genau meinst du mit Hostnamen? Also mein Server heißt “lvps.dedicated.hosteurope.de” und der taucht sonst nirgends in der Konfiguration auf, oder? ;)

          • Die zusammengefügte Zertifikat Datei sieht bei mir auch so aus, ich wollte nur sicher gehen das bei der mail.ssl.KEY die unverschlüsselte Variante (wie sie nach dem befehlt “openssl rsa -in /etc/keys/mail.ssl.key -out /etc/keys/mail.ssl.key” aussieht) rein muss.
            Sprich

            -----BEGIN RSA PRIVATE KEY----
            SDFGDFHSDGFASSDFASFDASFASF usw.

            und nicht:

            -----BEGIN RSA PRIVATE KEY----
            Proc-Type: 4,ENCRYPTED usw.

            Mit hostnamen meinte ich durchaus den Namen von dem Server ;-) . Hab da nur gefragt weil ich bei dem Schritt nicht ganz verstanden habe wofür man bei der Zertifikaterstellung ein subdomain angeben muss.

            Bin mal gespannt ob es bei dir mit Thunderbird (und wenn mit welchen Einstellungen) klappt.

            Nochmals Danke für die Hilfe.

Hinterlasse ein Kommentar.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Als Anti-Spam Schutz musst du leider folgende Aufgabe lösen (bitte beachte Groß- und Kleinschreibung sowie etwaige Leerzeichen):

Welche der folgenden Personen ist keine Comicfigur? Donald Duck, Batman, Asterix, Nelson Mandela
CyberChimps