Archiv der Kategorie: Linux Howto

THINK UNBLOG GNU/Linux Tutorials Howto Workaround DevOps Code.

Kopano Installation auf Debian 10 mit Apache2

Kopano und Z-Push Installation aus Debian Repo mit Apache und Postfix

Kopano ist eine quelloffene Lösung für Mailserver und Groupware, die eine größtmögliche Kontrolle der Daten erlaubt. Die ursprünglich aus Zarafa hervorgegangene Open Source Software steht unter der AGPLv3. Das modulare Design erfüllt die Anforderungen einer modernen Groupware für die Unternehmenskommunikation, als Alternative zu Anbieter externer Dienste, welche die eigene Kontrolle nicht ermöglichen.

Dieses Tutorial zeigt die Bereitstellung der Community Version von Kopano auf Debian 10 (buster), mit Einbindung von Z-Push (AGPLv3), eine Implementierung des Microsoft Exchange ActiveSync-Protokolls, hierdurch E-Mails, persönliche Kontakte, Termine und andere Elemente über das Back-End mobiler Geräte synchronisiert werden. Für die von Kopano unterstützen Front-End Anwendungen wie Microsoft Outlook, Windows Mail und Apple Mail über IMAP, ActiceSync für Android und iOS, sowie die WebApp für die aktuellen Browser.

Kopano WebApp Browser Front-End. Kopano und Z-Push Installation aus Debian.

Kopano und Z-Push Installation aus Debian

Die Voraussetzung ist ein betriebsbereiter Server auf Debian 10. Des weiteren eine im DNS registrierte Domain, um E-Mails versenden zu können, hierzu im Rahmen dieses Tutorials nicht weiter eingegangen wird. Es sollte noch keine PHP-Version installiert sein, alle Pakete die in Abhängigkeit mit Kopano stehen, werden automatisch bereitgestellt.

Nachdem wir über SSH mit dem Server verbunden sind, kann die Installation nach („su –„) als root erfolgen.

$ apt-get update & apt-get dist-upgrade
$ apt install -y kopano-core kopano-webapp-apache2

Ein Kopano Account („kadmin„) erstellen der mit Parameter „-a1“ zu Admin berechtigt wird, dazu ein Store eröffnen mit anschlissender aktivierung durch neustart der Apache und Kopano-Dienste.

$ kopano-admin -c kadmin -p passw0rd! -e support@example.tld -f "Kopano Admin" -a1
$ kopano-cli --create-store
$ kopano-cli --create-store -u kadmin
$ systemctl restart "kopano-*"
$ systemctl restart apache2

Durch die Installation wird man aufgefordert ein Passwort für den MySQL Server einzugeben, dieses in /etc/kopano/debian-db.cfg geschrieben wird.

Gratulation! Kopano ist jetzt installiert und bereit, die WebApp kann nun in einem Webbrowser geöffnet werden.

https://kopano.example.org/webapp

  Kopano Dokumentierung unter /usr/share/doc/kopano-server

Postfix MTA Installation für Kopano

Kopano ist nicht in der Lage E-Mails als SMTP Agent versenden zu können, mit seinem modularen Aufbau kann es jedoch mit Postfix interagieren, hierzu wird Postfix mit MySQL Anbindung eingesetzt, dieses für den MTA wie folgt installiert wird.

$ apt install -y postfix postfix-mysql

Durch die Installation wird man aufgefordert ein Hostname für die Postfix Konfiguration einzugeben, zB. kopano.example.tld.

Die Postfix Hauptkonfiguration ergänzen in /etc/postfix/main.cf.

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.tld

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

Für den lookup der E-Mail-Adressen wird ein MySQL User („kopano“) angelegt, das Passwort wird auch im nächsten Schritt gebraucht.

$ mysql -u root
GRANT ALL PRIVILEGES ON kopanoserver.* TO 'kopano'@'localhost' IDENTIFIED BY 'ChangeMe' WITH GRANT OPTION;
flush privileges;
quit

Dazu eine Datei erstellen /etc/postfix/mysql-users.cf.

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

Die Zugriffsrechte reduzieren und die Berkeley-DBs erzeugen.

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

Falls gewünscht, können weitere optionale Plugins hinzugefügt werden.

$ apt install -y kopano-webapp-contactfax kopano-webapp-gmaps kopano-webapp-pimfolder kopano-webapp-quickitems

Z-Push ActiveSync Installation

Z-Push Installation für die Kompatibilität zum ActiveSync Protokoll.

$ apt install -y z-push-backend-kopano z-push-common

Die Datei /etc/z-push/autodiscover.conf.php editieren um den hostname und die Zeitzone einzutragen, mehr zu Zeitzone einstellen hier.

define('ZPUSH_HOST', 'kopano.example.tld');
define('TIMEZONE', 'Europe/Zurich');

Bei der Nutzung von email@domain.com zur Authentifizierung (loginname_format = %u@%c), das in /etc/kopano/server.cfg definiert ist.

define('USE_FULLEMAIL_FOR_LOGIN', true);

Die Datei /etc/z-push/z-push.conf.php editieren ( email@domain.com).

define('USE_FULLEMAIL_FOR_LOGIN', true);

Die ActiveSync bereitschaft kann im Webbrowser überprüft werden.

https://kopano.example.tld/Microsoft-Server-ActiveSync

Ein aus dem Internet erreichbarer Server sollte durch eine Firewall geschützt sein. Dazu die ufw (Uncomplicated Firewall) installieren und die erforderlichen Ports eingehend für Kopano und SMTP erlauben.

$ apt install -y ufw
$ ufw allow ssh
$ ufw allow http
$ ufw allow https
$ ufw allow smtp
$ ufw allow smtps
$ ufw allow submission
$ ufw enable
$ ufw status

  Wird Outlook als Mail Client verwendet, zeigt die Anleitung hier das Setup für eine Outlook-Kopano Kontoeinrichtung.

Kopano Konfiguration und Optimierung

Mit Kopano ist es möglich (und empfehlenswert), alle Anhänge außerhalb der MySQL-Datenbank zu speichern. Die geteilte Architektur der Anhänge dient einem effizienteren MySQL-Caching-System, und um kleinere Datenbanken besser verwaltenden zu können, die aktivierung in /etc/kopano/server.cfg.

attachment_storage = files
attachment_path = /var/lib/kopano/attachments
attachment_files_fsync = yes

Für anpassung des Apache VirtualHost die Konfiguration editieren.

$ nano /etc/apache2/conf-available/kopano-webapp-apache2.conf

Um die Kopano Dienste zu diagnostizieren kann netstat helfen.

$ netstat -tulpn | grep kopano
tcp      0      0 0.0.0.0:236      0.0.0.0:*      LISTEN      10289/kopano-server
tcp6     0      0 :::110           :::*           LISTEN      18562/kopano-gatewa
tcp6     0      0 :::143           :::*           LISTEN      18562/kopano-gatewa
tcp6     0      0 :::8080          :::*           LISTEN      18565/kopano-ical
tcp6     0      0 :::2003          :::*           LISTEN      10473/kopano-dagent

Die Kopano-Dienste auf deren Status überprüfen.

$ systemctl status "kopano-*"

Das logging wird in den .cfg-Dateien definiert, wie für den Kopano Spooler in /etc/kopano/spooler.cfg, die Logs findet man unter /var/log/kopano und für Z-Push in /var/log/z-push.

log_method = file
log_level = 6
log_file = /var/log/kopano/spooler.log

Das logging des betreffenden Dienstes in beispielsweise der Datei server.cfg oder dagent.cfg aktivieren.

Kommt ein externer MTA als Smarthost zur Anwemdung, wird ein relayhost in /etc/postfix/main.cf editiert.

relayhost = 203.0.113.4

Nach dem Eintrag mit postfix reload die änderung übernehmen.

UPDATE: Fehler in kopano-spooler entdeckt in /var/log/mail.log

kopano-spooler HrLogon server „default:“ user „SYSTEM“: network error

Lösung:

$ cat <<EOF >> /etc/kopano/spooler.cfg
server_socket = file:///var/run/kopano/server.sock
EOF
$ systemctl restart kopano-spooler

Unknown MAPI Error: MAPI_E_NOT_FOUND

Erscheint bei der Anmeldung mit einem neu erstellten Kopano Konto der Fehler: Unknown MAPI Error: MAPI_E_NOT_FOUND, liegt dies hauptsächlich daran, dass der Benutzer noch kein Store hat.

$ kopano-cli --create-store -u john@example.tld

  Die erstellung eines Kopano Benutzer Store kann auch durch das Command kopano-admin --create-store erfolgen.

PHP Upgrade Installation mit Apache auf Debian 11

PHP 8.2 Upgrade und Installation unter Debian mit Apache

In diesem Tutorial wird beschrieben, wie man ein PHP 8.2 Upgrade schnell und einfach installiert. Für den Apache Webserver unter Debian 9, Debian 10 und Debian 11. PHP ist die weit verbreitete Server-Skriptsprache, für dynamische und interaktive Webseiten und Content Managegemt Systeme.

In nur 5 Schritte wird PHP 8.2 für Apache2 auf Debian installiert.

1. Debian als root aktualisieren

$ su -
$ apt update
$ apt upgrade -y && reboot

2. SURY PHP PPA Repository hinzufügen

SURY ist ein Drittanbieter-Repository, das aktuelle PHP Versionen für Debian GNU/Linux anbietet, dieses als root hinzugefügt wird.

$ apt -y install lsb-release apt-transport-https ca-certificates wget
$ wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

3. PHP 8.2 auf Debian installieren

$ apt update
$ apt -y install php8.2
$ update-alternatives --set php /usr/bin/php8.2

  Es kann mehr als eine PHP Version auf dem System installiert sein, update-alternatives --set php [version] aktiviert die Version.

4. Wichtige PHP 8.2 Module auf Debian installieren

$ apt -y install php8.2-cli php8.2-curl php8.2-gd php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-readline php8.2-xml php8.2-xsl php8.2-zip php8.2-bz2

 5. PHP 8.2 Modul für Apache verfürgbar machen

$ apt -y install libapache2-mod-php8.2
$ systemctl reload apache2

Fertig! die Installation ist nun gemacht. Möchte man wissen, welche installierte PHP-Version und welche Module tatsächlich verfügbar sind, zeigt der nächste Abschnitt.

Die Installierte PHP Version überprüfen

$ php -v
PPHP 8.2.3 (cli) (built: Feb 14 2023 16:53:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.3, Copyright (c), by Zend Technologies

Die PHP Konfiguration anzeigen und ändern

Zur überprüfung wird die aktuelle PHP-Version und die Einstellungen angezeigt, in dem man eine .php-Datei mit folgendem Inhalt erstellt. Diese die Detail Einstellungen in Tabellenform im Webbrowser ausgibt.

<?php
phpinfo();
?>

Die Datei als phpinfo.php im Verzeichnis „/html“ speichern. Die neu erstellte .php-Datei anschliessend in einem Webbrowser öffnen.

http://meine-domain/phpinfo.php
phpinfo in PHP Upgrade Installation mit Apache auf Debian
Abbildung: http://meine-domain/phpinfo.php

Die systemweiten PHP Einstellungen findet man unter dem Pfad /etc/php, für änderungen mit Apache 2 editiert man die Datei php.ini.

$ vi /etc/php/8.2/apache2/php.ini

Wird die installierte PHP-Version nicht angezeigt, muss das Modul mit dem Apache helper, mit a2dismod aktiviert werden. Hier ist es php7.4 das deaktiviert wird, die entsprechende Versionsnummer ggf. ersetzen.

PHP Upgrade mit Apache auf Debian Überpüfen

$ a2dismod php7.4
$ a2enmod php8.2
$ systemctl restart apache2

Nach dem Wechsel der Apache 2 PHP-Module die phpinfo.php Seite erneut im Webbrowser öffnen.

Die für Apache 2 verfügbaren PHP-Module sind im Apache Webserver Pfad unter /etc/apache2/mods-available abrufbar.

$ ll /etc/apache2/mods-available/php*
-rw-r--r-- 1 root root 855 Jul  5  2020 /etc/apache2/mods-available/php7.3.conf
-rw-r--r-- 1 root root 102 Jul  5  2020 /etc/apache2/mods-available/php7.3.load
-rw-r--r-- 1 root root 855 Dec 20 22:32 /etc/apache2/mods-available/php7.4.conf
-rw-r--r-- 1 root root 102 Dec 20 22:32 /etc/apache2/mods-available/php7.4.load
-rw-r--r-- 1 root root 855 Dec 20 22:32 /etc/apache2/mods-available/php8.2.conf
-rw-r--r-- 1 root root 101 Dec 20 22:32 /etc/apache2/mods-available/php8.2.load

Die Apache 2 Module mit a2dismod deaktivieren, mit a2enmod wird ein Apache Modul aktiviert.

Aufschluss über die Modul Informationen gibt der Befehl apt info.

$ apt info libapache2-mod-php8.2

Die php Version einer Website kann auch in der Apache .htaccess Datei festgelegt werden.

Action php /cgi-php82/php
AddHandler php82 .php