Archiv der Kategorie: Linux Howto

THINK UNBLOG GNU/Linux Tutorials Howto Workaround DevOps Code.

Kopano 8.7 Installation auf Debian 12

Kopano Tutorial zur Installation auf Debian 12. Die Groupware Anwendungssuite für Mailserver erlaubt größtmögliche Kontrolle über die Daten. Die Dienste decken den Großteil der Kommunikationsbedürfnisse in einem Unternehmen ab. Ein Kopano Server ist eine Alternative zu den Angeboten, die als Cloud-Dienste unter der Kontrolle der Anbieter laufen.

Kopano Core Installation
WebApp Installation
Z-Push Installation
Kopano und Postfix

Tutorial zur Installation von Kopano Groupware

Kopano Core Installation

Die Installation von Kopano Core auf Debian erfolgt durch Provisionierung aus dem Kopano Repository, zusammen mit der WebApp und Z-Push für Apache2, mit Fertigstellung in weniger als 10 Minuten, abhängig der Rechner Performance und Download Speed. Zu Beginn wird das KC-Repository hinzugefügt, hierzu ein Kopano Subscription Key (serial) benötigt wird.

Die im Beitrag gezeigten Kommandos werden als root („su -“) in der Konsole ausgeführt, viele verwenden auch sudo, die Befehle können mit sudo abgearbeitet werden, oder unter Ubuntu ebenfalls mit („sudo su -“) root werden, hier einfach die gewünschte Methode wählen.

Als Vorbereitung werden folgende Pakete aus dem Debian Standard Repository bereitgestellt.

$ apt update
$ apt install -y gnupg2 wget apt-transport-https

Debian 12 verwendet „apt_auth.conf“ für die Einbettung von Anmeldeinformationen, die für die Verbindung und zum Herunterladen von Pakete aus einem Repository benötigt werden.

Die APT Anmeldeinformationen zum Kopano Repository hinzufügen in/etc/apt/auth.conf.d/kopano.conf

$ echo "machine download.kopano.io/supported/core:/final/Debian_11/ login serial password XXXXXXXXXXXXXXXXXXXXXXXXX" | tee /etc/apt/auth.conf.d/kopano.conf

Anstelle des Platzhalters („XXX“) den 25-stelligen Serial Key einfügen.

Hinzufügen des Repository zum Final Release von Kopano Core.

$ echo "deb https://download.kopano.io/supported/core:/final/Debian_11/ ./" | tee /etc/apt/sources.list.d/kopano.list

Die Datei befindet sich unter/etc/apt/sources.list.d/kopano.list

Die Repository PGP-Signatur zu Trusted Keys hinzufügen (Debian 12).

$ wget -O- https://serial:XXXXXXXXXXXXXXXXXXXXXXXXX@download.kopano.io/supported/core:/final/Debian_11/Release.key | tee /etc/apt/trusted.gpg.d/KopanoRelease.key > /dev/null 2>&1

  Anstelle des Platzhalters („XXX“) den 25-stelligen Serial Key einfügen.

Den Public Key zu trusted.gpg.d keyring hinzufügen.

$ apt-key add /etc/apt/trusted.gpg.d/KopanoRelease.key
$ gpg2 --import /etc/apt/trusted.gpg.d/KopanoRelease.key

Das neu hinzugefügte Repository aktivieren.

$ apt update

MariaDB Installation

Der Server ist nun vorbereitet und die Bereitstellung wird fortgeführt mit der Installation von MariaDB und dem Kopano Server.

$ apt install -y mariadb-server kopano-*

Ein SQL-Datenbank Benutzer für den Kopano Store erstellen. Die Kopano Datenbank selbst wurde durch das Installationsskript erstellt.

$ mysql
CREATE USER 'kopano'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON kopano.* TO 'kopano'@'localhost';
quit

  Anstelle von password ein sicheres Passwort verwenden.

Die Konfiguration für den Kopano Server anpassen.

Falls unter/etc/kopanokeine Dateien vorliegen, dann die .cfg-Dateien in/usr/share/doc/kopano/example-configkopieren.

$ gzip -d -f --keep /usr/share/doc/kopano/example-config/*.cfg.gz & \cp /usr/share/doc/kopano/example-config/*.cfg /etc/kopano

Die Beispiel Konfigurationsdateien (.cfg) entpacken und kopieren.
Hinweis: um den Alias ‚cp -i‘ zu umgehen verwende ich den nicht aliasierten cp, indem ich den Prefix \ voranstelle, wenn das nicht funktioniert! führe zuerst den Befehl unalias cp aus, anstelle von \cp.

Die Kopano Server Konfiguration editieren/etc/kopano/server.cfg

Vorerst wird nur der Benutzer für Kopano Admin, die Ausführung und den Datenbankzugriff geändert.

local_admin_users = root kopano
run_as_user = kopano
run_as_group = kopano
mysql_user = kopano
mysql_password = password

  Das Passwort dieses für den Datenbank Benutzer eingegeben wurde.

Der Kopano Server kann jetzt gestartet werden.

$ systemctl start kopano-server

Nun vergewissern wir uns über den Status der Kopano Dienste.

$ systemctl status kopano-*

Wann bis hierher alles klappte, erscheint die folgende Ausgabe.

systemctl status kopano-server

Die Konfiguration des Kopano Servers in diesem Tutorial basiert auf dem Datenbank-Backend, dabei muss nichts geändert werden, da das Datenbank user_plugin bereits der Standardwert ist. Daneben gibt es zur besseren Verwaltung das LDAP Plugin („user_plugin=ldap“) für die Integration von OpenLDAP, Active Directory und Samba, dazu hier nicht weiter eingegangen wird.

Für die Verwaltung der Kopano Groupware ein Admin Account erstellen.

$ kopano-cli --create -u kadmin --fullname "Kopano Admin" --password P@ssw0rd! --email admin@example.org

Kopano WebApp Installation

Die WebApp ist das Front-end der Kopano Groupware, welche wie die meisten CMS auf dem LAMP-Stack (Apache, MySQL, PHP) basiert. Für Debian 11 wird der Apache2 Webserver und standardmässig PHP 7.4 („libapache2-mod-php“) aus dem Debian Standard Repository installiert.

$ apt install -y apache2 php php-common

Wird mit Debian oder Ubuntu eine Neuinstallation des Servers gewählt, was die empfohlene Bereitstellungsmethode für eine KC-Installation ist, kann mit taskel einfach der gesamte LAMP-Stack (Apache, MySQL, PHP) installiert werden. Dadurch alle Pakete bereitgestellt werden, die für den erfolgreichen Abschluss des Kopano-Installationsskripts erforderlich sind.

Nun muss ein weiteres Kopano WebApp Repository hinzugefügt werden in/etc/apt/sources.list.d/kopano.list

$ echo "deb https://download.kopano.io/supported/webapp:/final/Debian_11/ ./" | tee -a /etc/apt/sources.list.d/kopano.list

Die Anmeldeinformationen für APT hinzufügen (anhängen) in/etc/apt/auth.conf.d/kopano.conf

$ echo "machine download.kopano.io/supported/webapp:/final/Debian_11/ login serial password XXXXXXXXXXXXXXXXXXXXXXXXX" | tee -a /etc/apt/auth.conf.d/kopano.conf

Die dazugehörende PGP-Signatur zu den Trusted Keys hinzufügen.

$ wget -O- https://serial:XXXXXXXXXXXXXXXXXXXXXXXXX@download.kopano.io/supported/webapp:/final/Debian_11/Release.key | tee /etc/apt/trusted.gpg.d/WebAppRelease.key > /dev/null 2>&1

Das neu hinzugefügte Repository aktivieren.

$ apt update

Jetzt wird die Kopano WebApp aus dem Repository installiert.

$ apt install -y kopano-webapp

Die Kopano WebApp-Site aktivieren und Apache2 neu laden.

$ a2ensite kopano-webapp
$ systemctl reload apache2

Da sichere Cookies ab WebApp 3.4.0 standardmäßig aktiviert sind, bedeutet dies, dass man ohne SSL-Zertifikate nicht auf die WebApp zugreifen kann. Dies kann deaktiviert werden, indem unsichere Cookies aktiviert werden in/etc/kopano/webapp/config.php

define("SECURE_COOKIES", false);

Die änderung von true auf false ungefähr bei Zeile 44 editieren.

Sicherstellen dass der Webserver beim Systemstart aktiviert ist.

$ phpenmod kopano
$ systemctl enable apache2
$ systemctl reload apache2

Öffne in einem Broweser die URL zur WebApp-Anmeldeseite, zum Beispiel http://kopano.example.org/webapp/

Kopano WebApp Anmeldeseite

Z-Push Installation

Bei Z-Push handelt sich um eine Implementierung des ActiveSync-Protokolls von Microsoft, das drahtlos für ActiveSync-fähige Geräte mit mehreren Plattformen verwendet, darunter Apple iPhone und iPad und Android Geräte. Mit Open Source Z-Push kann jedes PHP-basierte Groupware-Paket vollständig mit jedem ActiveSync-kompatiblen Gerät synchronisiert werden.

Die Provisionierung von Z-Push erfolgt wieder aus dem Repository.

$ echo "deb https://download.kopano.io/zhub/z-push:/final/Debian_11/ ./" | tee /etc/apt/sources.list.d/z-push.list

Die dazugehörende PGP-Signatur zu den Trusted Keys hinzufügen.

$ wget -O- https://download.kopano.io/zhub/z-push:/final/Debian_11/Release.key > /etc/apt/trusted.gpg.d/z-push.key

Das neu hinzugefügte Repository aktivieren.

$ apt update

Z-Push kann nun auf dem Server bereitgestellt werden.

$ apt install -y z-push-kopano z-push-config-apache

Um Z-Push zu aktivieren muss der Webserver neu geladen werden.

$ systemctl reload apache2

Z-Push ist jetzt installiert und ist unter/usr/share/z-pushzu finden. Die Konfigurationsdatei liegt in/etc/z-push/z-push.conf.phphier keine änderungen gemacht werden müssen.

Überprüfen lässt sich Z-Push mit öffnen der URL in einem Browser.

http://kopano.example.org/Microsoft-Server-ActiveSync

Wenn alles klappte wird man zur Anmeldung aufgefordert, hier mit dem zuvor erstellten Benutzer („kadmin“) anmelden, es erscheint die Z-Push ActiveSync Seite.

Z-Push ActiveSync Seite

Kopano und Postfix Mail Transport Agent

Kopano Core enthält keinen eigenen MTA, kann aber mit allen etablierten MTAs integriert werden, die in modernen Linux-Distributionen zu finden sind. Obwohl KC die meisten Linux-MTAs unterstützt, wird die Verwendung von Postfix empfohlen.

Um eine E-Mail an das Postfach eines Benutzers zuzustellen, wird der kopano-dagent ausgeführt. Nachrichten werden über das LMTP-Protokoll an kopano-dagent übergeben. Die Verwendung von LMTP ist die empfohlene Bereitstellungsmethode, da dies den Single Instance Attachment Storage ermöglicht.

Die Bereitstellung von Postfix mit Integration zu Kopano Core wie folgt.

$ apt install -y postfix postfix-mysql

Bei der Installation wird man aufgefordert einen Hostnamen für die Postfix-Konfiguration einzugeben, zum Beispiel: kopano.example.org.

Die Postfix-Hauptkonfiguration hinzufügen in/etc/postfix/main.cf

myhostname = kopano.example.org
mydestination = localhost
# relayhost if relaying via a smarthost
relayhost = 172.31.245.70
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 172.31.245.70

virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_maps = mysql:/etc/postfix/mysql-users.cf
virtual_transport = lmtp:127.0.0.1:2003
virtual_mailbox_domains = example.org

smtpd_recipient_restrictions = permit_mynetworks,
        reject_non_fqdn_recipient,
        reject_non_fqdn_hostname,
        reject_non_fqdn_sender,
        reject_unknown_client,
        reject_unknown_hostname,
        reject_invalid_hostname,
        reject_unauth_pipelining,
        reject_unauth_destination,
        reject_unverified_recipient,
        permit

Um die Abfrage der Email Adresse bei eingehenden Emails zu ermöglichen wird im nächsten Schritt erneut das Passwort benötigt.

Erstelle zusätzlich eine Datei/etc/postfix/mysql-users.cf

$ echo "user = kopano
password = password
hosts = 127.0.0.1
dbname = kopano
query = SELECT value FROM objectproperty where propname = 'emailaddress' and value = '%s';" > /etc/postfix/mysql-users.cf

  Gemäß einem Kopano-Server in einer Multi-Tenancy-Umgebung wird hier das Anmeldenamenformat „%u@%c“ (%u Benutzername, %c Mandantenname) verwendet, für die Anmeldung mit E-Mail-Adressen als Benutzernamen.

Zuletzt noch die Zugriffsrechte einschränken und aus virtual die Berkeley-DB erzeugen.

$ chmod 600 /etc/postfix/mysql-users.cf
$ touch /etc/postfix/virtual
$ postmap /etc/postfix/virtual
$ systemctl restart postfix

Bei eingehenden E-Mails prüft nun Postfix virtual_mailbox_maps per SQL-Abfrage, ob der Empfänger (Benutzer) im Store existiert. Darüber hinaus ist es auch möglich über LDAP mit Postfix zu interagieren, was in diesem Tutorial jedoch nicht behandelt wird.

Fazit

Der Kopano-Server ist jetzt Funktionsbereit, für die Verwendung von Desktop- und mobile Endgeräte die genutzt werden können. Eine weitere Vielzahl von Anwendungen und Plugins können weiter bereitgestellt werden. Die Infrastrukturintegration für Active Directory oder Samba und OpenLDAP können weitere Schritte sein.

Linux Runlevel überprüfen und festlegen

Runlevel heute auf systemd implementiert, waren zuvor noch die meisten Linux-Distributionen mit dem Init-System, dem Sys-V Stil ausgestattet. Mit Sys-V wurden sieben verschiedene Runlevels verwendet, um zu bestimmen, welche Prozesse auf dem System gestartet werden. Der Runlevel 3 war zum Beispiel reserviert, um normalerweise die Befehlszeile und die zugehörigen Programme zu starten, während Runlevel 5 eine GUI und alle dafür erforderlichen Prozesse startete. Die Ergebnisse können je nach Distribution variieren.

Heutzutage hat die überwiegende Mehrheit der Linux-Distributionen systemd als Init-System übernommen. Einige Distributionen verwenden noch immer Sys-V, wo die Implementierung von Runlevels wie oben beschrieben noch existiert. Bei systemd-Systemen ist das Konzept der Runlevel noch am Leben, es wurden in systemd-„Ziele“ umgewandelt.

Auf einigen Systemen existieren noch Reste von Sys-V, auf denen Befehle wie runlevel noch zu finden sind. Einige moderne systemd-Distributionen haben diese Unterstützung vollständig ausgerottet. In diesem Tutorial zeigen wir, wie man den aktuellen Runlevel unter Linux überprüft.

Linux Runlevel

Linux Runlevel überprüfen

Nachfolgend zwei Befehle um den aktuellen Runlevel zu ermitteln.

$ runlevel
N 5
$ who -r
  run-level 5  2022-11-07 14:52

Wie zu sehen ist hier der Runlevel 5 gestartet. Alternativ kann der Befehl who -r ausgeführt werden. Den Befehl runlevel gibt es nur auf einigen systemd-Distributionen, sollte aber auf jedem Sys-V-System gehen.

Die verschiedenen Runlevels wurden entsprechenden systemd-Zielen zugeordnet. Mit folgendem Befehl überprüft man die Ziele.

$ ls -l /lib/systemd/system/runlevel*

Nachfolgend die Ausgabe der Runlevels bei einem Linux Mint, was auf Ubuntu/Debian basiert.

$ lrwxrwxrwx 1 root root   15 Aug 31 17:27 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root   13 Aug 31 17:27 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root   16 Aug 31 17:27 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root   13 Aug 31 17:27 /lib/systemd/system/runlevel6.target -> reboot.target

/lib/systemd/system/runlevel1.target.wants:
total 0

/lib/systemd/system/runlevel2.target.wants:
total 0

/lib/systemd/system/runlevel3.target.wants:
total 0

/lib/systemd/system/runlevel4.target.wants:
total 0

/lib/systemd/system/runlevel5.target.wants:
total 0

Welche Linux Runlevels gibt es?

0Halt System herunterfahren
1Single-user mode (Rettung und Sonderverwaltung)
2Multi-user ohne Netzwerkschnittstellen und Daemons starten
3Multi-user mode normaler start mit Netzwerk
4Not Used
5Multi-user wie runlevel 3 + Display manager X11 GUI
6Reboot startet das System neu

Linux systemd runlevel anzeigen

Wie bei Linux Runlevels gibt es standardmäßig 7 systemd-Ziele. Die beiden Hauptziele sind multi-user.target und graphical.target. Die standardmäßigen systemd-Ziele kann man mit dem folgenden Befehl anzeigen.

$ systemctl get-default
graphical.target

Bei diesem Beispiel ist graphical.target gestartet, was sinnvoll ist, da wir eine grafische Desktop-Umgebung benötigen. Bei einem Server wo oft kein GUI ausgeführt wird, ist meist multi-user.target gestartet.

$ systemctl get-default
multi-user.target

Verwende den folgenden Befehl um zu sehen, welche Dienste diesem Ziel zugeordnet sind.

$ systemctl list-dependencies graphic.target
graphic.target

Versuche mit folgenden Befehl zu sehen, welches systemd-Ziel (oder welchen Runlevel) ein Dienst ausführen muss. In diesem Beispiel überprüfen wir den SSH-Dienst.

$ systemctl show -p WantedBy sshd.service
WantedBy=multi-user.target

Runlevel neu festlegen

Der Runlevel festlegen lässt sich mit diesem Befehl mit sudo Privileg.

$ sudo systemctl set-default multi-user.target

Der Befehl wird beim nächsten Systemstart den Mehrbenutzermodus (multi-user.target) starten.