UPDATE Kopano mit Debian 10
Einleitung:
Die letzten Jahre habe ich Kolab unter Debian Wheezy (7) als Groupware genutzt. Ich hatte mich für Kolab entschieden, da ich eine einfache Lösung wollte welche alle Grundfunktionen einer Groupware vereint. Damals hatte ich diverse Lösungen (SoGo, Tine, ….) getestet . Entweder bestanden die Installationen aus sehr vielen Bestandteilen welche häufig manuell installiert werden mussten und/oder die Konfiguration war sehr umfangreich – neben diversen anderen Nachteilen . Dank der Opensource Vielfalt und vielen fertigen Teillösungen kann man sich auch selbst eine Groupware zusammen konfigurieren, dann lohnt sich auch die investierte Zeit. Eine „Schlüsselfertig“ Groupware sollte daher möglichst einfach installierbar sein, gute Standard-Einstellungen mitbringen und nach Möglichkeit individuell anpassbar sein. Somit fiel die Wahl (damals) auf Kolab, mit etwas Einarbeitung stand auch zügig das System. Über den integrierten LDAP Server als Datenbasis kann man streiten, für mich aber okay. Letztlich muss nun wieder eine Alternative her, für Kolab gibt es nicht wirklich Updates und die Winterfell Version ist meiner Meinung nach mehr eine Beta Version. Das angekündigte Kolab Release war ursprünglich für Q1/2017 angekündigt und wurde mittels Kolab 18 auf Q1/2018 „verschoben“. De facto gibt derzeit kein aktuelles Kolab, lediglich eine ältere Version unter Debian 8. Mal ganz abgesehen von den vielen kleinen Fehlern innerhalb der Installation oder auch danach.
Was ist eine Alternative?
Nach einiger Suche wurde ich auf Kopano aufmerksam.Die Key-Features klingen gut, die Optik passt. Somit stand einer Test-VM nicht mehr im Weg. Leider gibt es derzeit keine fertigen Pakete innerhalb eines Repositories für die Community Variante. Die Pakete sind im Subscription Modell enthalten. Laut einer Ankündigung soll das kommende Debian Buster (10) – Release wohl Sommer 2019 – die Pakete beinhalten. Im Testing-Zweig sind die Pakete zumindest schon mal gelistet. Bis dahin installiere ich es lieber manuell unter einem LTS OS.
Wer wie ich die Komponente(n) manuell installieren möchte, sollte sich den Download Bereich einmal ansehen von Kopano. Hier findet man alle nötigen Pakete innerhalb von Nightly-Build-Archiven.
Die Installation:
Für den Anfang wird eine Debian Grundinstallation vorgenommen. Es gibt auch die Möglichkeit, eine andere Distribution zu nutzen wie bspw. Ubuntu, RHEL, SLES, OpenSuse und Weitere.
1. LAMP & Nützliche Tools
Nach Absenden des folgenden Befehls dem Menü folgen und „Apache2“ im Dialogmenü auswählen. Im Dialog bezüglich des PhpMyAdmin ist die Option „dbconfig-common“ auszuwählen.
root@mail:~#apt-get update && apt-get install -y apache2 mysql-server phpmyadmin postfix
2. Nützliche Tools & Absicherung
root@mail:~# apt-get install -y vim telnet wget w3m apt-transport-https net-tools mlocate vim && updatedb
Absicherung Webserver
Folgende Zeilen innerhalb der /etc/apache2/conf-available/security.conf anpassen.
ServerTokens Prod
ServerSignature Off
Header set X-Content-Type-Options: "nosniff"
Header set X-Frame-Options: "sameorigin"
Dies gibt Angreifern weniger Informationen über den Server und somit erhöht sich der Aufwand für eine erfolgreiche Serverübernahme. Zusätzliche aktiviere ich das Apache Module und starte den Dienst neu, damit die Konfiguration übernommen wird.
root@mail:~# a2enmod headers && systemctl restart apache2
Absicherung MySQL / MariaDB Datenbankserver
Setzen des Datenbank root Kennwortes sowie entfernen unnötiger Einträge. Im darauf folgenden Dialog können jeweils die Default „Y“ (YES) übernommen werden.
root@mail:~# mysql_secure_installation
Zwischenpprüfung
Bis hierin sollten keine Fehlermeldungen auf der Konsole zu finden sein. Wenn alles richtig gemacht wurde dürften die folgenden Prozesse (apache2 & mysqld) existieren
root@mail:~# pstree
systemd─┬─agetty
├─apache2───10*[apache2]
├─cron
├─dbus-daemon
├─mysqld───26*[{mysqld}]
├─rsyslogd─┬─{in:imklog}
│ ├─{in:imuxsock}
│ └─{rs:main Q:Reg}
├─sshd───sshd───bash───pstree
├─systemd───(sd-pam)
├─systemd-journal
├─systemd-logind
├─systemd-timesyn───{sd-resolve}
└─systemd-udevd
Zusätzlich muss unter http://%IP-Adresse%/phpmyadmin die GUI von phpMyAdmin erreichbar sein. Beispiel:
Der Login wird jedoch fehlschlagen, da mit der neuen MariaDB Version auf eine weitere Authentifizierung „unix-socket“ zurückgegriffen wird. Hierbei kann man sich mit einem entsprechendem User direkt ohne Passwort innerhalb der Konsole einloggen. Im Folgenden der Befehl um das gewohnte Verhalten zu erzwingen:
root@mail:~# mysql -u root -p -e "update mysql.user set plugin='' where User='root';"
Installation Kopano
Wie bereits erwähnt findet man die Archive unter https://download.kopano.io/community/, hierbei muss man die folgenden Download-URLs entsprechend des derzeit aktuellen Paketes anpassen. Weiterhin muss man diverse Abhängigkeiten während der Installation „nachziehen“, da sonst die Installation nicht möglich ist. Dank Paketmanager aber eine einfach Aufgabe.
root@mail:~# mkdir kopano_temp
root@mail:~# cd kopano_temp/
root@mail:~/kopano_temp# wget https://download.kopano.io/community/core:/core-8.6.80.1248_0%2B176-Debian_9.0-amd64.tar.gz
root@mail:~/kopano_temp# wget https://download.kopano.io/community/files:/files-2.1.4.286-Debian_9.0-all.tar.gz
root@mail:~/kopano_temp# wget https://download.kopano.io/community/mdm:/mdm-2.1.0.102%2B23-Debian_9.0-all.tar.gz
root@mail:~/kopano_temp# wget https://download.kopano.io/community/webapp:/webapp-3.4.17.1630%2B928-Debian_9.0-all.tar.gz
Installation Core-Paket
root@mail:~/kopano_temp# tar xfz core-*.tar.gz
root@mail:~/kopano_temp# cd core-8.6.80.1248_0+176-Debian_9.0-amd64/
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# dpkg -i *.deb
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# apt-get install -f
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# dpkg -i *.deb
root@mail:~/kopano_temp/core-8.6.80.1248_0+176-Debian_9.0-amd64# cd ..
Nun sollten keine Abhängigkeiten mehr fehlen, abgesehen von „libjansson-doc“. Dies vernachlässige ich jedoch, da es sich hierbei lediglich um eine Dokumentation handelt.
Installation Webapp-Paket
root@mail:~/kopano_temp# tar xfz webapp-*.tar.gz
root@mail:~/kopano_temp# cd webapp-3.4.17.1630+928-Debian_9.0-all
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# apt-get -f install
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/webapp-3.4.17.1630+928-Debian_9.0-all# cd ..
Installation Files-Paket
root@mail:~/kopano_temp# tar xfz files-*.tar.gz
root@mail:~/kopano_temp# cd files-2.1.4.286-Debian_9.0-all/
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# apt-get install -f
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/files-2.1.4.286-Debian_9.0-all# cd ..
Installation MDM-Paket
root@mail:~/kopano_temp# tar xfz mdm-*.tar.gz
root@mail:~/kopano_temp# cd mdm-2.1.0.102+23-Debian_9.0-all/
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# apt-get install -f
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# dpkg -i *.deb
root@mail:~/kopano_temp/mdm-2.1.0.102+23-Debian_9.0-all# cd ..
Installation Z-Push:
Für Kopano ist Z-Push eine Voraussetzung.
root@mail:~/kopano_temp# wget -qO - http://repo.z-hub.io/z-push:/final/Debian_9.0/Release.key | apt-key add -
OK
root@mail:~/kopano_temp# echo "deb http://repo.z-hub.io/z-push:/final/Debian_9.0/ /" | tee /etc/apt/sources.list.d/z-push.list
deb http://repo.z-hub.io/z-push:/final/Debian_9.0/ /
root@mail:~/kopano_temp# apt-get update
root@mail:~/kopano_temp# apt-get install z-push-kopano z-push-config-apache -y
root@mail:~/kopano_temp# z-push-admin -a fixstates
Nun wird noch das SSL Modul aktiviert, der https vHost aktiviert und die php.ini bearbeitet. Hierbei sollte man den Wert von „session.cookie_httponly“ (bei mir Zeile 1386) auf den Bool-Wert „true“ setzen, optional kann man noch „date.timezone = „Europe/Berlin“ hinterlegen. Wie gehabt im Anschluss den Dienst neustarten.
root@mail:~/kopano_temp# a2enmod ssl
root@mail:~/kopano_temp# a2ensite default-ssl.conf
root@mail:~/kopano_temp# vim /etc/php/7.0/apache2/php.ini
root@mail:~/kopano_temp# systemctl restart apache2
Optional: LetsEncrypt Zertifkat
Dank Letsencrypt kann jeder kostenfreie öffentliche Zertifikate nutzen. Innerhalb der Webserver-Konfig wird noch der FQDN gesetzt im Parameter „ServerName, ansonsten erkennt der Certbot den vHost nicht korrekt.
root@mail:~/kopano_temp# echo "deb http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list
root@mail:~/kopano_temp# apt-get update
root@mail:~/kopano_temp# apt-get install python-certbot-apache -t stretch-backports -y
root@mail:~/kopano_temp# vim /etc/apache2/sites-enabled/000-default.conf
root@mail:~/kopano_temp# systemctl restart apache2
root@mail:~/kopano_temp# certbot --apache
Anschließend ist die Webseite bzw. GUI unter https://%IP-Adresse%/webapp erreichbar. Beispiel?
Der Screenshot wurde vor LetsEncrypt erstellt, daher ist auch das Zertifikat nicht vertrauenswürdig.
Eine wirkliche Funktion ist bis hierhin nicht gegeben, da das komplette Backend, die Datenbank fehlt. Hierzu werden wir einen Benutzer „kopano-user“ mit dem zugehörigen Kennwort „GEHEIM“ erstellen samt Datenbank „kopano“.
root@mail:~/kopano_temp# mysql -u root -p -e "CREATE USER 'kopano-user'@'localhost' IDENTIFIED BY 'GEHEIM';GRANT USAGE ON *.* TO 'kopano-user'@'localhost'; CREATE DATABASE kopano;GRANT ALL PRIVILEGES ON kopano.* TO 'kopano-user'@'localhost';flush privileges;"
Im nächsten Schritt werden die soeben erstellten Daten genutzt indem die Konfigurationsdatei angepasst wird
root@mail:~/kopano_temp# gunzip -c /usr/share/doc/kopano/example-config/server.cfg.gz > /etc/kopano/server.cfg
root@mail:~/kopano_temp# vim /etc/kopano/server.cfg
Meine Konfiguration sieht wie folgt aus:
Damit Kopano die Änderung auch erfasst und die Tabellenstruktur erstellt ist ein Neustart des Dienstes notwendig. Anschließend wird noch der erste Benutzer für Kopano selbst erzeugt.
root@mail:~/kopano_temp# systemctl restart kopano-server.service
root@mail:~/kopano_temp# kopano-admin -c thuerter -p 123456 -e noreply@huerter.me -f "Tim Hürter" -a1
User created.
Bug in der aktuellen Version: Der Mail-Store muss manuell erstellt werden, dieser sollte in wenigen Tagen (Stand: 15.07.2018) behoben werden.
Konfiguration Mobile Device Management (MDM)
root@mail:~/kopano_temp# hostname -f
mail.genx-dev.de
root@mail:~/kopano_temp# vim /etc/kopano/webapp/config-mdm.php
Die aufgerufene config-mdm.php sollte wie folgt bearbeitet werden. Hierbei ist der FQDN (hostname -f) entsprechend zu setzen
<?php
define('PLUGIN_MDM_USER_DEFAULT_ENABLE_MDM', false);
define('PLUGIN_MDM_SERVER', 'mail.genx-dev.de');
define('PLUGIN_MDM_SERVER_SSL', false);
?>
Kopano dagent & Postfix:
Kopano hat einen eigenen MTA Agent. Hierbei wird der Agent im MTA (bspw. Postfix) integriert mittels LMTP.
root@mail:~/kopano_temp# gunzip -c /usr/share/doc/kopano/example-config/dagent.cfg.gz > /etc/kopano/dagent.cfg
Hinweis, möglicherweise ist folgende Anpassung notwendig, sofern der Dienst nicht gestartet wird, Zeile ~75 der dagent.cfg. Mit der Default-Konfig wurde der Dienst nicht gestartet und entsprechend war der Port nicht verfügbar. Bug Link
lmtp_listen = [::1]:2003 127.0.0.1:2003
lmtp_port = 2004
root@mail:~# systemctl status kopano-dagent.service
● kopano-dagent.service - Kopano Core Delivery Agent
Loaded: loaded (/lib/systemd/system/kopano-dagent.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2018-07-11 22:33:21 CEST; 3min 4s ago
Docs: man:kopano-dagent(8)
man:kopano-dagent.cfg(5)
Main PID: 1166 (kopano-dagent)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/kopano-dagent.service
└─1166 /usr/sbin/kopano-dagent -l
Jul 11 22:33:21 mail systemd[1]: Started Kopano Core Delivery Agent.
Jul 11 22:33:21 mail kopano-dagent[1166]: Starting kopano-dagent version 8.6.80 (pid 1166) (LMTP mode)
root@mail:~# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 107 12170 860/mysqld
tcp 0 0 127.0.0.1:2003 0.0.0.0:* LISTEN 0 15527 1166/kopano-dagent
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 12015 736/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 12798 963/master
tcp6 0 0 :::80 :::* LISTEN 0 12052 862/apache2
tcp6 0 0 ::1:2003 :::* LISTEN 0 15528 1166/kopano-dagent
tcp6 0 0 :::22 :::* LISTEN 0 12017 736/sshd
tcp6 0 0 :::25 :::* LISTEN 0 12799 963/master
tcp6 0 0 :::443 :::* LISTEN 0 12056 862/apache2
Feinschliff & Abschluss
Sofern alle Dienste laufen, sollte man unbedingt den Autostart aktivieren.Zu guter Letzt wird noch der Installationsordner entfernt.
root@mail:~/kopano_temp# systemctl enable kopano-dagent kopano-gateway kopano-ical kopano-monitor kopano-presence kopano-search kopano-server kopano-spooler
root@mail:~/kopano_temp# cd ..
root@mail:~# rm -rf kopano_temp
Wenn Kolab es mal geschafft hat Version 18 zu veröffentlichen, welches übrigens schon seit Q1/2018 released sein soll, wäre es evtl. einen Blick wert. Vermutlich wird dann aber Kopano Mitte 2019 dank Debian 10 und besseren Updates durch das Repository die bessere Wahl sein.ABER, erstmal in Ruhe alle Kopano Funktionen testen.
Viel Erfolg beim eigenen Setup.