Zarafa auf Ubuntu 14.04.1 LTS

Vor etwa 18 Monaten hatte ich mich erstmalig daran versucht, einen Zarafa-Server aufzusetzen, und ich hatte dies auch in einem kleinen Tutorial dokumentiert. Dabei war es aber auch geblieben, benutzt wurde die Installation nie. Das soll sich nun ändern. Ein dummer und langsamer NAS soll in Kürze durch einen kleinen, verbrauchsarmen aber dennoch vernünftig nutzbaren „richtigen“ Linux-Server ersetzt werden.

Für die Installation habe ich Ubuntu Server 14.04.1 LTS 64-bit sowie Zarafa 7.1.11 OpenSource verwendet. Wer die Installation Schritt für Schritt nachvollziehen möchte, lade bitte das Ubuntu-CD-Image sowie das Zarafa-Installationsarchiv herunter:

Zu Testzwecken habe ich den Server erst einnmal als virtualisierten Server unter Citrix XenServer aufgesetzt. Beim ersten Mal hat es ein wenig länger gedauert, mittlerweile geht das Aufsetzen von Ubuntu und dem Nachinstallieren von Zarafa recht flott von der Hand; in gut einer Stunde sollte das Thema durch sein.

Vorbereitungen

  • Wer XenServer, VirtualBox oder VMWare verwendet, erzeuge bitte eine neue virtuelle Maschine und stelle eine virtuelle Festplatte mit mindestens 4 GB, besser 8 GB bereit. Das Ubuntu-ISO-Image lege man in sdas virtuelle CD-Laufwerk ein.
  • Wer physikalische, 64-bit-fähige Hardware nutzen möchte, brenne das ISO-Image auf eine CD bzw. erzeuge einen bootfähigen USB-Stick. Dazu noch eine Festplatte, die komplett plattgemacht werden kann (sprich auf der alle vorhandenen Daten gelöscht werden können): je größer und schneller die Festplatte ist, desto besser. Ab 2 GB RAM und 40 GB HDD fängt es wohl an, gut zu funktionieren, ab 4 GB und 250 GB dann auch Spaß zu machen.
  • Wer kein DHCP benutzt sondern die IP-Adresse manuell konfigurieren möchte, sollte sich die bereits jetzt überlegen und die IP-Adresse des Gateways kennen. Wem das nichts sagt, möge bitte hier aufhören zu lesen.
  • Einen schönen Rechnernamen sollte man sich ebenfalls vorher überlegen. Diesen wichtigen Entscheidungs-Prozess schließe man am ab, bevor das Herunterladen des Ubuntu-ISO-Images abgeschlossen ist. 😉

Ubuntu-Installation

Wir installieren nun erst einmal einen rudimentären Ubuntu Server. CD einlegen, Rechner einschalten, im BIOS die Bootreihenfolge auf „CD, HDD, …“ ändern, wählen „Deutsch“ und sehen dann diesen Bildschirm:

zaus-001

Wir drücken RETURN und beginnen die Installation.

  • Zunächst meckert Ubuntu, dass die gewählte Sprache für die Installation nicht ganz vollständig sei und fragt nach, ob wir dennoch weitermachen wollen. Ja, wir wollen fortsetzen.
  • Als Standort wählen wir Deutschland
  • Tastaturmodell erkennen? Nein
  • Tastatur konfugurieren? Deutsch
  • Tastaturbelegung: Deutsch

Nun beginnt die Hardwareerkennung und Ubuntu lädt ein paar für die Installation benötigte Komponenten. Die Netzwerkkarte wird zu erkennen versucht, eine IP-Adresse wird vom DHCP-Server angefordert. In meinem Falle – kein DHCP-Server vorhanden – schlägt die automatische Netzwerkkonfiguration fehl und ich konfiguriere das Netzwerk manuell: IP-Adresse 192.168.0.26, Netzmaske 255.255.255.0, Gateway 192.168.0.200 (IP-Adresse meines DSL-Routers), Adresse DNS-Server 192.168.0.200 (dito).

Anschließend geben wir unserem Baby einen schicken Namen. Ich wähle „zaus“ (Zarafa auf Ubuntu Server), weil mir nichts Besseres einfiel.

Als letzter Teil der Netzwerkeinrichtung folgt die Eingabe des Domain-Namens:

zaus-002

Wir wählen der Einfachheit „example.test“.

Es folgt die Angabe des ersten und wichtigsten Benutzers des Servers, mit dem wir alle Administrationstätigkeiten durchführen werden. Ich verwende hier unter Ubuntu aus nicht näher begründeten, historischen Gründen als vollständigen Namen „Dirk Hagedorn“, als Benutzernamen für das Konto „dirk“.

zaus-003

Wir geben noch das Passwort zweimalig ein und entscheiden uns mit „nein“ gegen das Verschlüsseln des persönlichen Ordners. Abschließend bestätigen wir, dass „Europe/Berlin“ die korrekte Zeitzone für unseren neuen Server ist.

Weiter geht es mit der Partitionierung der Festplatte. Wir verwenden die gesamte Festplatte (Achtung: Alle etwaigen vorhandenen Daten werden unwiderruflich gelöscht!) ohne LVM:

zaus-004

Nach Bestätigung „Änderungen schreiben?“ mit Ja wird die Festplatte partitioniert, formatiert und mit der Installation des Systems begonnen.

zaus-005

Nach wenigen Minuten werden wir gefragt, ob wir einen Proxy verwenden, um auf das Internet zuzugreifen – in der Regel ist das zu Hause nicht der Fall, das Eingabefeld also leer lassen und einfach RETURN drücken. Für die Installation benötigte Bestandteile werden ab hier aus dem Internet nachgeladen.

zaus-006

Nach weiteren wenigen Sekunden/Minuten (je nach Internetanbindung) fragt uns der Installer, ob wir Systemaktualisierungen automatisch herunterladen wollen, oder nicht, oder nur manchmal. Wer wie ich immer gerne weiß, wann was wo wie passiert, wähle auch „Keine automatischen Aktualisierungen„.

Anschließend werden wir gefragt, welche Server-Bestandteile wir direkt installieren möchten. Mittels Cursor-Hoch/Runter und der Leertaste wählen wir lediglich „OpenSSH server„, den Rest installieren wir später nach.

zaus-006

Jetzt werden ruckzuck 183 Softwarepakete geladen, installiert und konfiguriert. Je nach Hardware reicht die Zeit aber durchaus, sich eine neue Tasse Kaffee kochen zu können…

Zum Abschluss der rudimentären Installation muss nun noch der Bootsektor auf die Festplatte geschrieben werden, damit Ubuntu nach dem Einschalten auch brav bootet. Wer nur eine Festplatte bzw. kein Multi-OS-Setup verwendet, sollte einfach „Ja“ antworten:

zaus-008

Das war es schon! Nach einem letzten „weiter“ bootet unser Ubuntu Server und der Anmeldeprompt erscheint:

zaus-010

Weitere Pakete installieren

Nach der ersten Anmeldung mit dem oben angelegten Benutzer installieren wir sofort einen ganzen Schwung an Paketen nach, die wir in Kürze sowieso benötigen werden oder einsetzen wollen.

Für Zarafa benötigen wir Apache2 (Webserver), MySQL (Datenbank) und Postfix (Mailtransfer). Da ich den Server zudem als Fileserver einsetzen möchte, installiere ich auch Samba für den Zugriff von Windows-Rechnern.

sudo apt-get install apache2 mysql-server postfix samba

Es müssen 19,2 MB heruntergeladen werden. Gerne bestätigen wir mit RETURN. Die Pakete werden nun alle heruntergeladen, installiert und konfiguriert. Los geht’s mit dem Kennwort für den MySQL-Datenbank-Administrator/“root“-Benutzer:

zaus-011

Hier gibt man ein sinnvolles Kennwort ein, merkt sich dieses; wir werden es bald während der Zarafa-Installation wieder eingeben müssen. Sagen wir mal, wir vergeben als Kennwort „my-secret„. Auf der folgenden Seite gebe man das Kennwort ein zweites Mal ein (wer sich hier vertippt, erhält den Hinweis erst Sekunden später).

Es folgt die Konfiguration von Postfix. Hier wählen wir „Internet mit Smarthost“. Was dies bedeutet, lesen wir auf dem Bildschirm:

zaus-012

Den folgenden System-E-Mail-Name („zaus.example.test“) übernehmen wir, den SMTP-Relay-Server („smtp.example.test“) ebenfalls – den werden wir bald umkonfigurieren.

Wir installieren nun noch ein paar weitere Pakete. PHP5 wird ebenfalls für Zarafa benötigt, den Midnight Commander (mc) kann man auf der Commandline immer gebrauchen, emacs und xterm sowieso, und synaptic als grafisches apt-get-Frontend ebenfalls (macht 72,2 MB):

sudo apt-get install php5 mc emacs xterm synaptic

Zarafa-Installation

Ab spätestens diesem Zeitpunkt empfehle ich, mit einem anderen Rechner per SSH auf den Ubuntu-Server zuzugreifen und die Kommandos nicht direkt in die Konsole zu tippen. Grund: Per Copy&Paste lassen sich Dateinamen so wunderbar in ein Terminalfenster kopieren, Abtippen an der Konsole ist doof. Als Terminal-Anwendung empfehle ich das Rundumsorglospaket MobaXterm.

Wenn wir das zarafa-Installations-Archiv bereits heruntergeladen haben, kopieren wir es nun per SCP ins /tmp-Verzeichnis. Falls nicht, laden wir es per wget (sudo apt-get install wget) herunter, entpacken das Archiv, wechseln ins erzeugte Verzeichnis und starten die Zarafa-Installation:

cd /tmp
wget http://download.zarafa.com/community/final/7.1/7.1.11-46050/zcp-7.1.11-46050-ubuntu-14.04-x86_64-opensource.tar.gz
tar xvfz zcp-7.1.11-46050-ubuntu-14.04-x86_64-opensource.tar.gz
cd zcp-7.1.11-46050-ubuntu-14.04-x86_64/
sudo bash install.sh

zaus-013

Es rauschen nun reichlich Fehlermeldungen durch, die uns nicht weiter beunruhigen dürfen. Das Installationsscript versucht zu ermitteln, welche Pakete noch alle nachinstalliert werden müssen und welche bereits vorhanden sind. Nach ein paar Seiten Fehlermeldungen stehen die noch zu installierenden Pakete fest, was in etwa so aussehen sollte:

zaus-014

Das übliche Spiel wiederholt sich – mit RETURN bestätigen, die Pakete werden heruntergeladen und installiert.

Im Anschluss wird es spannend – oder auch nicht. Das Installationsscript verlangt von uns nun die noch für Zarafa notwendigen Angaben, die wir – bis auf das root-Passwort des MySQL-Datenbankadministrators – alle einfach mit RETURN bestätigen können:

zaus-015

Anschließend drücken wir noch ein paar Mal RETURN, tja, und dann war es das auch schon: Der Zarafa-Server läuft.

Was noch fehlt

Wir haben nun einen Ubuntu-Server mit einem installierten Zarafa-Server, der aber noch nicht benutzbar ist. Ja, und wir haben auch noch Postfix, der auch noch nicht brauchbar läuft. Folgendes müssen wir nun noch erledigen:

  • Zarafa-Administrator anlegen
  • Zarafa-Benutzer anlegen
  • Zarafa-Web-Access ermöglichen
  • Mailversand per SMTP ermöglichen (Postfix konfigurieren)
  • Zugriff für Mail-Client mittels POP3/IMAP ermöglichen
  • Mailabholdienst per POP3 installieren (z.B. per fetchmail)

Zarafa-Administrator anlegen

Das Kommandozeilen-Tool „zarafa-admin“ ist unser Freund. Mit folgendem Befehl legen wir den Zarafa-Benutzer „admin“ mit dem Passwort „secret“ mit dem Vollnamen „Zarafa Administrator“ und der E-Mail-Adresse „postmaster@zaus.example.test“ an. Mit der Option „-a 1“ bestimmen wir, dass dieser Zarafa-Benutzer ein Administrator ist.

sudo zarafa-admin -c "admin" \
                  -p "secret" \
                  -f "Zarafa Administrator" \
                  -e "postmaster@zaus.example.test" \
                  -a 1

Zarafa-Benutzer anlegen

Normalen Zarafa-Benutzer (ohne Administratorrechte) legen wir ganz analog an. Die E-Mail-Adresse hinter -e soll die sein, über die der Benutzer später extern erreichbar sein soll bzw. welche Zarafa beim Versand vom E-Mail als Absenderadresse verwenden wird. Ich verwende in den Beispielen weiterhin „example.test“, wer „meine-domain.de“ reserviert hat, setze dies dann dort entsprechend ein.

sudo zarafa-admin -c "erika" \
                  -p "Geheim" \
                  -f "Erika Mustermann" \
                  -e "erika.mustermann@example.test"

sudo zarafa-admin -c "max" \
                  -p "AuchGeheim" \
                  -f "Max Mustermann" \
                  -e "max.mustermann@example.test"

Frau Erika Mustermann wird sich in Kürze als Benutzer „erika“ mit Passwort „Geheim“ im Web-Frontend anmelden können, der Herr Max Mustermann als Benutzer „max“ mit Passwort „AuchGeheim“.

Zarafa-Web-Access ermöglichen

Apache2 wurde installiert, PHP5 und MySQL ebenso. Es fehlt nur noch die Aktivierung des WebAccess-Teils von Zarafa.

Wir fügen dazu einen Apache-Alias hinzu, konfigurieren PHP5 einmal leicht um und starten Apache2 dann neu. Zunächst legen wir im Config-Verzeichnis des Apache eine neue Konfiguration an.

cd /etc/apache2/conf-available
sudo vi zarafa-webaccess.conf

Alias /webaccess /usr/share/zarafa-webaccess/
<Directory /usr/share/zarafa-webaccess/>
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Nun wechseln wir ins Verzeichnis der aktivierten Konfigurationen, setzen einen symbolischen Link:

cd ../conf-enabled/
sudo ln -s ../conf-available/zarafa-webaccess.conf .

Anschließend starten wir den Apache2-Webserver neu und versuchen, auf den Zarafa-WebAccess über http://zaus/webaccess/ zuzugreifen

sudo service apache2 restart

Nach dem Zugriff erhalten wir prompt folgende Fehlermeldung:

zaus-016

PHP Config error: short_open_tag must be ‚on‘
Modify this setting in ‚/etc/php5/apache2/php.ini‘
Zarafa WebAccess can’t start because of incompatible configuration.

Das ist nicht schwer: Wir editieren also die php.ini und ersetzen ein Off durch ein On, speichern die Änderung und stoppen/starten den Apache erneut. Es ist immer eine gute Idee, die alten Einstellungen auskommentiert zurück zu lassen. Wir kommentieren also die aktuelle Einstellung „short_open_tag = Off“ mit einem führenden Semikolon aus und schreiben die neue Variante darunter.

sudo vi /etc/php5/apache2/php.ini

; short_open_tag = Off
short_open_tag = On

Speichern und den Apache2 neu starten:

sudo service apache2 restart

Erneuter Zugriff auf den Zarafa WebAccess: Bingo! 🙂

zaus-017

Unsere oben angelegten Zarafa-Benutzer können sich nun anmelden, können auch bereits Daten anlegen/verändern/löschen, sie können E-Mails verfassen.

Dummerweise gehen die noch nicht raus, es kommen auch noch keine E-Mails herein. Für den erfolgreichen Versand müssen wir nun erst einmal Postfix konfigurieren.

Postfix konfigurieren

Postfix ist für den Mailversand zuständig. Diese Anleitung geht davon aus, dass wir eine eigene Domain reserviert haben. Das folgende Beispiel funktioniert für Strato. Zunächst tragen wir den Strato-SMTP-Server und -Port ein, aktivieren TLS und ignorieren Zertifikats-Fehler:

cd /etc/postfix
sudo vi main.cf

relayhost = smtp.strato.de:587

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous

smtp_use_tls = yes
smtp_enforce_tls = yes
smtp_tls_security_level = may

inet_protocols = ipv4

Erläuterungen:

  • Strato verlangt (für neue Postfächer) den Zugriff auf den SMTP-Server mittels TLS (Port 587)
  • Unseren Benutzernamen für den Zugriff packen wir in die Datei /etc/postfix/sasl/sasl_passwd
  • Wir verwenden und erzwingen TLS („…tls = yes“)
  • Zertifikatsprobleme interessieren uns nicht („smtp_tls_security_level = may“)
  • Den Zugriff beschränken wir auf IPv4 – zumindest mein aktueller Router ist zu blöd für IPv6 und die Zugriffe auf den SMTP-Server scheiterten immer bei IPv6

Nun tragen wir noch unseren Benutzernamen und das Passwort ein, über den wir auf den SMTP-Server zugreifen wollen.

cd /etc/postfix/sasl/
vi sasl_passwd

smtp.strato.de webmaster@example.test:PASSWORT

„smtp.strato.de“ ist klar, „webmaster@example.test“ ist eine gültige E-Mail-Adresse eines der Postfächer bei Strato, „PASSWORT“ das vergebene Passwort für diese Adresse. Wenn man „meine-domain.de“ reserviert hat, als Passwort „123456geheim“ vergeben hat und als E-Mail-Benutzer den „webmaster“ angelegt hat, würde die Zeile entsprechend so lauten:

smtp.strato.de webmaster@meine-domain.de:123456geheim

Die Änderungen an der Datei müssen Postfix nun bekannt gemacht werden. Dies geht mit folgendem Kommando:

sudo postmap /etc/postfix/sasl/sasl_passwd

Postfix selber muss nach der ganzen Konfigurationsorgie auch noch neu gestartet werden. Anschließend werfen wir gleich einen Blick auf das Logfile, um zu schauen, was passiert. Über den WebAccess am besten mal eine E-Mail versenden und schauen, was das Logfile so ausspuckt:

sudo service postfix restart
sudo tail -f /var/log/mail.log

Andere Hoster: Bei anderen Hostern entsprechend den passenden smtp-Server eintragen. Wenn dieser auch TLS einsetzt, müsste es passen, wenn nicht, dann Port 587 („:587“) entfernen und die tls-Zeilen auskommentieren.

Zugriff für Mail-Client mittels POP3/IMAP ermöglichen

E-Mails können nun bereits über den WebAccess verfasst werden und über das Zarafa-Gateway mittels Postfix auch über den SMTP-Relay-Server des Webhosters verschickt werden. Wer statt den Webbrowser lieber einen normalen E-Mail-Client wie Mozilla Thunderbird verwenden möchte, muss den Zugriff über POP3/IMAP auf den Zarafa-Server ermöglichen.

Und das geht ganz einfach: Wir verändern eine Zeile in der Server-Konfiguration und starten Zarafa neu.

cd /etc/zarafa
sudo vi server.cfg

Hier suchen wir nun nach „imap“ und finden folgende Zeilen:

# Disable features for users. Default all features are disabled. This
# list is space separated. Currently valid values: imap
disabled_features = imap pop3

POP3 und IMAP sind als standardmäßig deaktiviert. Wir deaktivieren im folgenden Beispiel nun die Deaktivierung von IMAP, sprich wir aktivieren IMAP (alte Zeile wieder auskommentieren, neue hinzufügen):

# Disable features for users. Default all features are disabled. This
# list is space separated. Currently valid values: imap
# disabled_features = imap pop3
disabled_features = pop3

Wer gleichzeitig IMAP und POP3 ermöglichen möchte, entferne auch „pop3“ hinter dem Gleichheitszeichen. Nun noch die Änderungen speichern und den Zarafa-Server neu starten:

sudo service zarafa-server restart

Nun können die im Zarafa-Server gespeicherten E-Mails auch über IMAP und/oder POP3 abgerufen werden.

Fetchmail

hier fehlt noch etwas…

  1. Joerg
    5. August 2016, 09:57 | #1

    Hallo Dirk
    Danke für das schöne Tutorial.
    Eine Frage hab ich noch. Gibt es bei der Fetchmail-Konfiguration noch etwas zu beachten? Die Zarafa User existieren doch nur in der Datenbank und nicht spiegelbildlich auch auf Linux-Ebene (stimmt das?). Funktioniert unter diesen Bedingungen die gebräuchliche Fetchmail-Konfuguration?
    Gruß Joerg

  2. dh
    5. August 2016, 10:28 | #2

    Zarafa empfängt nicht selber E-Mails, diese holt man mittels Fetchmail ab und ordnet sie Linux-Benutzern zu. Zarafa hat auch keinen eigenen Mail Transfer Agent (MTA), dafür wird z.B. Postfix benötigt, der wiederum über den Zarafa Delivery Agent E-Mail in der Zarafa-Datenbank ablegt.

    Siehe auch https://documentation.zarafa.com/zcp_administrator_manual/introduction.html#components

    Ob es einen direkteren Weg ohne Linux-Benutzer dazwischen gibt, kann ich derzeit nicht sagen.

  3. Joerg
    7. August 2016, 11:02 | #3

    Danke. Es gibt noch die Möglichkeit virtueller Benutzer, die nur in einer Datenbank existieren. Das hat den (Sicherheits)Vorteil, dass diese Nutzer keine echten Linux-User sind. Hat aber nix mit Zarafa zu tun. Ich weiß auch nicht, wie man diese beiden Lösungen kombiniert.
    Aber danke erstmal für Deine Antwort!

    Gruß Joerg