Ein eigener, vollständig abgesicherter, Mailserver mit Zarafa

Da es bereits einige Zeit her ist (Februar 2013), wollte ich gerne eine aktualisierte Fassung online bringen, wie man einen Mailserver mit Hilfe von Zarafa und Postfix unter Ubuntu / Debian richtig konfiguriert. Der alte Post wird außerdem in den nächsten Tagen offline gehen. Hier werden wir einen Zarafa-Server zusammen mit Postfix und einer SASL-Authentifizierung sowie Virenscanner und Spamfilter so installieren und einrichten, dass dieser anschließend gegen gängige Angriffe geschützt ist. Dabei wird die gesamte Kommunikation auf Basis von SSL/TLS aufgebaut sein und es wird neben den normalen Web-Zugriff auch die Möglichkeit geben die E-Mail Konten in entsprechende Desktop Clients mit Absicherung einzurichten. Im Rahmen dieses „Tutorials“ werden wir also einen vollständig gesicherten Zarafa-Mailserver in Version 7.1.11 unter Ubuntu 14.04 LTS installieren und einrichten. Da ich bei meinem alten Post bereits Anfragen bekommen habe, ob ich hierbei Unterstützung leisten kann, möchte ich an dieser Stelle direkt darauf hinweisen, dass ich in einer IT-Firma angestellt bin, die diese Dienstleistungen anbieten kann. Bei näheren Fragen hierzu, also bitte an die CVA GmbH wenden. Beginnen wir also nun mit der kleinen „HowTo“-Anleitung.

Um diesen Beitrag in Englisch zu sehen hier klicken: View this post in english

 

Share-Online

Die Vorbereitung

Nachdem wir uns auf unseren Server verbunden haben, sollten wir zunächst einmal in ein beliebiges Verzeichnes wechseln, in dem wir später die Dateien herunterladen. Ich verwende hierfür das Home-Verzeichnes meines aktuellen Benutzers, welches ich mittels „cd ~“ erreiche. Nun müssen wir die passende Zarafa-Version für uns finden und herunterladen. Unter folgender URL können wir uns die passende Version heraussuchen: http://download.zarafa.com/community/final/. Ich verwende hierbei die Version 7.1.11 für Ubuntu 14.04 LTS. Um dorthin zu gelangen, klicken wir auf 7.1 und anschließend auf 7.1.11-46050. Sollte die spätere Verwendung in Microsoft Outlook gewünscht sein, müssen wir uns auch noch für dies das entsprechende Plugin herunterladen. Dieses Plugin finden wir im „windows“-Ordner im Zarafa Download Archiv. Die dortige „*.msi“-Datei können wir auf Windows-Maschinen problemlos installieren. Für eine finale Absicherung zum Ende hin, benötigen wir auch noch ein SSL-Zertifikat, welches wir z.B. von StartSSL bekommen können.

Um nun das Archiv mit den Daten für die Zarafa-Mailserver-Installation herunterzuladen, verwenden wir folgenden Befehl:

wget http://download.zarafa.com/community/final/7.1/7.1.11-46050/zcp-7.1.11-46050-ubuntu-14.04-x86_64-free.tar.gz

Nach dem Download müssen wir dies noch entpacken. Dies kann mit folgendem TAR-Befehl getätigt werden:

tar xvfz zcp-7.1.11-46050-ubuntu-14.04-x86_64-free.tar.gz

Außerdem sollte für die Installation des Mailservers ein Apache2 oder Nginx sowie MySQL installiert sein. Hierfür eignet sich z.B. die Installation des LAMP-Servers. Eine detaillierte Anleitung dazu befindet sich hier: http://www.mypcsupport.de/net/linux/ubuntu-lamp-installation/. Die Installation der MySQL-Datenbanken ist hierbei für dieses Tutorial zwingend erforderlich, während Apache2 bzw. Nginx nur für den Webzugriff (Webaccess und Webapp) von Zarafa notwendig sind.

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 – unserem 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 erfolgt eine Aufforderung zur Installation, hierfür reicht jedoch eine Bestätigung. Beginnend bei der Aufforderung eine gültige Seriennummer einzugeben, kann nun unter http://www.zarafaserver.de/ eine erworben werden. Andernfalls können wir die Seriennummer zunächst leer lassen. Auch eine spätere Ergänzung der Seriennummer ist möglich. Dies werde ich unter den Punkt „Weiteres“ am Ende auflisten.

Bei der MySQL-Server Konfiguration, die 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. Sollte dem nicht so sein, helfen die Logfiles sicherlich weiter wo der Fehler liegt. Diese können in der Standard-Konfiguration unter „/var/log/“ gefunden werden. Die hierbei interessanten Log-Dateien sind jene im Apache / Nginx Ordner, Zarafa Ordner sowie der Mail-Log. In den meisten Fällen sind dies hier aber nur Apache / Nginx Modul-Fehler, weil entsprechende Module fehlen. Im Falle des Apache-Webservers sollten hier die Module ssl, rewrite sowie php5 vorhanden und aktiv sein. Auch das Apache-Modul „mod security“ bietet sich hierbei an.

 

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 iptables-persistent

 

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    unix  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

Weiterhin wird Submission Support + SASL aktiviert. Der komplette „submission”-Block inkl -o Parameter wird gelöscht (Zeile löschen in nano mit STRG+K) und durch folgenden Block ersetzt:

submission inet n       -       -       -       -       smtpd -v
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

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, das 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

Damit amavis razor und pyzor verwenden kann, ist folgendes noch zusätzlich notwendig (Zeile für Zeile eingeben):

su - amavis -s /bin/bash
razor-admin -create
razor-admin -register
pyzor discover
exit

Außerdem empfehle ich in der Datei „/etc/amavis/conf.d/20-debian_defaults“ folgende Änderungen durchzuführen (entsprechende Stellen suchen und ändern):

$sa_tag_level_deflt  = undef;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = 20;

Abschließend, damit die Konfigurationen auch wirksam 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 bezüglich der Aktualität können hierbei ignoriert werden – die Aktualisierung geschieht automatisch. Nun sollten wir uns auch mit unserem 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/

 

Anlernen des Spam-Filters

Da ein Spam-Filter, in unseren Fall spamassassin, immer erst angelernt werden muss, um Spam korrekt zu erkennen und Filtern zu können, müssen wir dies nun auch noch tun. Wechseln wir zunächst einmal in ein dafür geeignetes Verzeichnis. Ich nutze hier für „/var/mail/spam/„. Sollte das Verzeichnis nicht vorhanden sein, kann dies mittels „mkdir“ angelegt werden. Geeignete Spam-Archive können z.B. von folgender Seite heruntergeladen werden (wieder mit wget): http://untroubled.org/spam/. Wenn die entsprechenden Archive heruntergeladen worden (es empfiehlt sich immer mindestens die drei letzten zu nehmen) und entpackt worden sind, führen wir einfach folgenden Befehl aus:

sa-learn --no-sync --spam /var/mail/spam/

Dieser Befehl kann nur einige Minuten dauern, also erstmal ein fröhliches Warten. Zusätzlich können wir ein automatisches Anlernen aktivierern. Hierfür müssen wir folgende Datei bearbeiten

nano /etc/spamassassin/local.cf

Hier müssen zwei Zeilen wieder rein genommen werden, welche derzeit durch ein ‚#‘ deaktiviert sind.

use_bayes 1
bayes_auto_learn 1

Auch wenn dies sehr performancehungrig ist, so lernt Spamassassin nun zukünftig durch von uns in Spam / Junk verschobene E-Mail dazu. Natürlich empfiehlt es sich weiterhin auch das direkte anlernen über „sa-learn“ zu nutzen. Hier sollte wenigstens alle 2-3 Monate ein Anlernen stattfinden, um einen sauberen Spam-Filter nutzen zu können. Auch wenn es nicht zwingend notwendig ist, empfiehlt sich ein Neustart von Spamassassin nach erfolgreichen Anlernen durch „sa-learn„.

 

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/ (Hinweis: Diese Zertifikate müssen jährlich erneuert werden). 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 „SHA2“. 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 einfach mit folgenden Befehl an:

cd /etc/keys/ && cat mail.ssl.crt mail.ssl.key ca.pem sub.class1.server.ca.pem sub.class1.server.ca.pem > example.de-ssl.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! Anschließend müssen wir noch in der Zarafa-Gateway-Konfiguration IMAPS und/oder POP3S aktivieren. Dies wird in folgender Datei gemacht:

nano /etc/zarafa/gateway.cfg

Hier werden die folgenden eigenschaften mit „yes“ aktiviert (auch die Ports könnten hier geändert werden, falls gewünscht):

pop3s_enable    =       yes
imaps_enable    =       yes

Natürlich müssen nicht beide aktiviert sein. Jedoch verwenden wir in unserer SASL-Konfiguration Reverse-IMAP, dies sollte nicht vergessen werden. Die hier nun genutzten Ports müssen anschließend nur noch in der Firewall frei gegeben werden. Allgemein empfiehlt es sich eine White-List-Firewall zu führen und nur Erlaubtes freizugeben. 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

 

Weiteres

Greylisting

Greylisting ist eine Form der SPAM-Bekämpfung. Hierbei wird sich zunutze gemacht, dass normale Mailserver einen gescheiterten Zustellversuch später wiederholen, während Spammer sich im Allgemeinen nicht diese Mühe machen. Der Greylisting-Dienst identifiziert dabei jeden Client über eine Kombination aus IP-Adresse, Absenderadresse und Empfängeradresse. Taucht eine derartige Kombination das erste Mal auf, so wird der Zustellversuch mit einer Fehlermeldung bzgl. eines temporären Problems abgelehnt und diese ID in einer Liste eingetragen. Wird die Kombination erneut zugestellt, wird diese dann vom Mailer akzeptiert.

Nachteil dieser Methode ist, dass die jeweils ersten Emails von neuen Kontakten ein wenig verzögert eintreffen. Vorteil gegenüber herkömmlichen, analyse-gestützten Spamerkennungsverfahren ist, dass die Mail gar nicht erst angenommen und unter Aufwendung von Rechenzeit untersucht werden muss, sondern direkt abgelehnt wird. Gerade auf ausgelasteten Servern stellt dies eine vorteilhafte Möglichkeit dar, einen Großteil des Mülls gar nicht erst auf das System zu lassen.

Installieren lässt sich das Greylisting ganz simpel über folgenden Befehl:

apt-get install postgrey

Nun muss dies noch in der Datei „/etc/postfix/main.cf“ eingebunden werden. Hier wird die Zeile für die Eigenschaft „smtpd_recipient_restrictions“ um den Wert „check_policy_service inet:127.0.0.1:10023“ erweitert (Achtung: Port könnte abweichen!! Sollte der Port falsch sein, bekommt man einen Verbindungsfehler im Mail-Log mit). Die Zeile sollte nun in etwa so aussehen:

smtpd_recipient_restrictions =  permit_mynetworks,
				permit_sasl_authenticated,
				reject_unauth_destination,
				check_policy_service inet:127.0.0.1:10023

Nun noch Postfix mittels „service postfix restart“ neustarten und schon ist das Greylisting aktiv und sollte im Mail-Log einsehbar sein.

 

Zarafa Bayesian Learning

Um Spam-Mails direkt aus Zarafa zu erlernen, kann folgendes Tutorial verwendet werden:
Zarafa Bayesian Learning (zur Installation des Perl-IMAP Plugins wird unter Ubuntu / Debian folgender Befehl benötigt: „apt-get install libmail-imapclient-perl„)

 

Nachträgliche Installation einer Zarafa-Lizenz

Um nachträglich die Zarafa-Lizenz zu Installieren, muss folgende Datei bearbeitet werden:

nano /etc/zarafa/license/base

Hier wird die Lizenz einfach im Klartext hineingeschrieben und gespeichert. Anschließend müssen die Zarafa Dienste neugestartet werden.

service zarafa-dagent restart
service zarafa-gateway restart
service zarafa-ical restart
service zarafa-licensed restart
service zarafa-monitor restart
service zarafa-search restart
service zarafa-server restart
service zarafa-spooler restart

 

Zarafa-Mailserver Administration

Da das ZAdmin (Zarafa-Admin) Webinterface noch nicht für Ubuntu 14.04 freigegeben worden ist, müssen die administrativen Zugriffe (anlegen, ändern, löschen und anzeigen) der Dienste über eine SSH-Sitzung durchgeführt werden. Nachfolgend eine Auflistung der wichtigsten Zarafa-Administrationsbefehlen. Eine detaillierte Erklärung sämtlicher Zarafa-Administrationsbefehle kann hier nachgeschlagen und gefunden werden:
http://doc.zarafa.com/7.1/Administrator_Manual/en-US/html/_UserManagement.html (DB plugin)

Befehl Auswirkung
zarafa-admin -l Zeigt alle existierenden Benutzer an. Hier wird der Benutzername (Loginname), der vollständige Name sowie der „Homeserver“ ausgegeben.
zarafa-admin -c MAILUSER -p MAILPASSWORD -f „FULL MAILUSER NAME“ -e „MAILUSER@example.de“ Legt einen neuen Benutzer an. Der Parameter „-c“ wird hierbei mit den Loginnamen versehen, „-p“ mit dem dazugehörigen Passwort, „-f“ mit den vollständen Namen des Benutzers und „-e“ mit der entsprechenden E-Mail Adresse (diese muss zu den Zertifikatsinformationen passen).
zarafa-admin -u MAILUSER –enable-feature imap Aktiviert die IMAP-Funktionalität für den entsprechenden Benutzer. Wenn dies nicht ausgeführt wird, ist nur POP3 verfügbar.
zarafa-admin –create-store mailuser Erstellt das Mail-Storage für den Benutzer. Wenn das Anlegen des neuen Benutzers mit „sudo“ ausgeführt worden ist, ist dieser Befehl nicht notwendig.
zarafa-admin –d MAILUSER Löscht den entsprechenden Benutzer.
zarafa-admin –details MAILUSER Gibt die Details des jeweiligen Benutzers aus.

Eine Ausführliche Erklärung des zarafa-admin-Tools kann unter anderem auch unter diesem Link gefunden werden:
http://rpm.pbone.net/index.php3/stat/45/idpl/15454311/numer/1/nazwa/zarafa-admin

 

Bei Änderung des MySQL-Passwortes

Wenn die Passwörter  zur Sicherheit geändert werden (auch wenn der Zarafa-Benutzer nur lokalen Zugriff haben sollte), muss dies in folgender Datei angepasst werden:

nano /etc/zarafa/server.cfg

 

Weitere Informationen zur Mailserver Funktionsweise

MTA: http://de.wikipedia.org/wiki/Mail_Transfer_Agent
MDA: http://de.wikipedia.org/wiki/Mail_Delivery_Agent
Zarafa: http://www.zarafa.com/wiki/index.php/Main_Page
Anti-Spam (spamassassin): http://de.wikipedia.org/wiki/SpamAssassin
Anti-Virus (Amavis): http://de.wikipedia.org/wiki/Amavis

 

Hilfreiches Wissen / Weitere Konfigurationen

Zarafa: http://wiki.ubuntuusers.de/Zarafa
Postfix: http://wiki.ubuntuusers.de/Postfix
Postfix Erweiterte Konfiguration: http://wiki.ubuntuusers.de/Postfix/Erweiterte_Konfiguration
Amavis-Spam-Virenfilter: http://wiki.ubuntuusers.de/Amavis-Spam-Virenfilter

 

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.

 

Der Beitrag hat euch gefallen, geholfen und Ihr wollt mich unterstützen? Den macht dies doch einfach direkt hier. Teilt die Seite über Socialmedia Netzwerke, nutzt die Amazon Links oder spendet einfach einen kleinen Betrag via PayPal. Jede Art der Unterstützung ist eine Hilfe für Blogs wie diesen.