Menü Schließen

ISPConfig Server-Panel – Update von Roundcube

roundcube - Logo

Das Thema ist nicht direkt dem Server-Control-Panel ISPConfig zugehörig, jedoch nutze ich Roundcube nur dort. Der Webmail bietet eine gute und kostenlose Möglichkeit seine Mails im Browser zu bearbeiten. Nachfolgend die Beschreibung wie ich Roundcube welches per „https://www.meine-domain/webmail“ aufrufbar ist, aktualisiert habe. Ich nutze den Skin Larry, beschreibe aber in einem Nachfolgeartikel die Umstellung auf das neue und responsive Theme Elastic.

Status Quo

Artikel wird stetig durch die neuste Version von Roundcube aktualisiert.

Roundcube 1.4.0 ist seit 9.11.2019 als Stable erschienen und bietet diverse Neuerungen, darunter:

  • Email Resent (Bounce) feature
  • Improved Mailvelope integration
  • Support for Redis and Memcached cache
  • Support for SMTPUTF8 and GSSAPI

Quelle: https://roundcube.net/news/2019/11/09/roundcube-1.4.0-released

benötigtes Paket

# apt install rsync

Backup Roundcube

Zuerst wird das alte Verzeichnis gesichert, dann noch die Datenbank. Die eigentlichen Dateien für die Konfiguration liegen unter /etc/roundcube/, die Programmdaten unter /var/lib/roundcube und /usr/share/roundcube. Achtung der Pfad /var/lib/roundcube wird in Teilen über symbolische Links verarbeitet, was bei einer Rücksicherung wichtig ist aber in der Sicherung mit tar und dem Parameter h berücksichtigt wird – siehe man tar:

# ls -hals /var/lib/roundcube/
insgesamt 308K
4,0K drwxr-xr-x  8 root root 4,0K Aug 23 00:21 .
4,0K drwxr-xr-x 71 root root 4,0K Jun  4 18:19 ..
4,0K drwxr-xr-x  2 root root 4,0K Aug 23 00:20 bin
184K -rw-r--r--  1 root root 181K Aug 10 21:04 CHANGELOG
4,0K -rw-r--r--  1 root root  940 Aug 10 21:04 composer.json-dist
   0 lrwxrwxrwx  1 root root   14 Jun 14 03:36 config -> /etc/roundcube
   0 lrwxrwxrwx  1 root root   23 Jun 14 03:36 .htaccess -> /etc/roundcube/htaccess
4,0K -rw-r--r--  1 root root 2,6K Aug 23 00:21 .htaccess.new
4,0K -rw-r--r--  1 root root 2,6K Mär  6  2020 .htaccess_old
 16K -rw-r--r--  1 root root  13K Aug 10 21:04 index.php
 16K -rw-r--r--  1 root root  13K Aug 10 21:04 INSTALL
 36K -rw-r--r--  1 root root  35K Aug 10 21:04 LICENSE
   0 lrwxrwxrwx  1 root root   19 Jun 14 03:36 logs -> ../../log/roundcube
4,0K drwxr-xr-x 35 root root 4,0K Aug 23 00:20 plugins
   0 lrwxrwxrwx  1 root root   28 Jun 14 03:36 program -> /usr/share/roundcube/program
4,0K -rw-r--r--  1 root root 3,8K Aug 10 21:04 README.md
4,0K drwxr-xr-x  5 root root 4,0K Aug 23 00:20 skins
4,0K drwxr-xr-x  7 root root 4,0K Aug 10 21:04 SQL
4,0K drwxr-x---  2 root root 4,0K Nov 20  2019 temp
8,0K -rw-r--r--  1 root root 4,1K Aug 10 21:04 UPGRADING
4,0K drwxr-xr-x  9 root root 4,0K Aug 23 00:20 vendor

Das Backup sieht dann wie folgt aus – Parameter „h“ sichert auch symbolische Links und die Dateien. „h“ muss beim Restore mit angegeben werden:

# cd /usr/local/src/
# tar czfh roundcube-files.tar.gz /var/lib/roundcube/
# tar czf roundcube-config.tar.gz /etc/roundcube/
mysqldump -u <Roundcube-Admin_User>-p "Roundcube-Datenbank-Name"> roundcubedb.sql

Installation Roundcube 1.4.10

Achtung – Wer evtl. eine ältere „/etc/roundcube/config.inc.php“ verwendet und bei der Installation diese aktualisieren lässt, der muss sie neu konfigurieren, kann aber auch die alte verwenden, ein Backup wird automatisch im selben Verzeichnis erstellt.

# cd /usr/local/src/
# wget https://github.com/roundcube/roundcubemail/releases/download/1.4.10/roundcubemail-1.4.10-complete.tar.gz
# tar xfvz roundcubemail-1.4.10.tar.gz
# cd roundcubemail-1.4.10/
# ./bin/installto.sh /var/lib/roundcube/
Upgrading from 1.4.8. Do you want to continue? (y/N)
Copying files to target location....htaccess.new
.htaccess.new
done.

NOTICE: New .htaccess file saved as .htaccess.new.
NOTICE: JavaScript dependencies installation skipped...

Running update script at target...
Executing database schema update.
Updating database schema (2016081200)... [OK]
Updating database schema (2016100900)... [OK]
Updating database schema (2016112200)... [OK]
Updating database schema (2018021600)... [OK]
Updating database schema (2018122300)... [OK]
Updating database schema (2019092900)... [OK]
This instance of Roundcube is up-to-date.
Have fun!
All done.

Da bei einem Test die Weboberfläche nicht korrekt geladen wurde und ich feststellte, dass die Verzeichnisrechte nicht korrekt waren, habe ich diese neu gesetzt:

chown -R root:root /var/lib/roundcube/*
chown -R root:root /usr/share/roundcube/*
chown -R root:root /etc/roundcube/*
chown www-data:www-data /etc/roundcube/config.inc.php
chown www-data:www-data /etc/roundcube/debian-db.php
chown www-data:www-data /etc/roundcube/defaults.inc.php

Nun noch die alte .htaccess überprüfen und ggf. durch die neue überschreiben:

# cp /var/lib/roundcube/.htaccess.new /etc/roundcube/htaccess

Danach habe ich noch diese Regeln in der .htaccess aktiviert:

nano /var/lib/roundcube/.htaccess
# HSTS - HTTP Strict Transport Security
Header always set Strict-Transport-Security "max-age=31536000; preload" env=HTTPS

# X-Xss-Protection
# This header is used to configure the built in reflective XSS protection found in Internet Explorer, Chrome and Safari (Webkit). 
Header set X-XSS-Protection "1; mode=block"

# X-Content-Type-Options
# It prevents Google Chrome and Internet Explorer from trying to mime-sniff the content-type of a response away from the one being declared by the server.
Header set X-Content-Type-Options: "nosniff"

# CSP - Content Security Policy
# for better privacy/security ask browsers to not set the Referer
# more flags for script, stylesheets and images available, read RFC for more information
# Note: "Referrer-Policy: same-origin" is already set by php code.
Header set Content-Security-Policy "referrer no-referrer"

Roundcube ist wieder aktuell

Das war es schon und ist recht einfach. Final ist dann folgendes installiert Roundcube 1.4.0 mit den Plugins

  • archive 3.4
  • filesystem_attachments 1.0
  • jqueryui 1.12.0
  • zipdownload 3.4
roundcube 1 4 0 plugins

Nacharbeiten

  • Download löschen:
# rm -R /usr/local/src/roundcubemail-1.4.10/
# rm roundcubemail-1.4.10-complete.tar.gz

Installation Skin Elastic

Die Installation beschreibe ich hier: https://www.taste-of-it.de/roundcube-skin-elastic-installieren/

Have Fun …

Fehler – Datenbankfehler

Nach der Installation wird im Browser der Fehler „Datenbankfehler! Unable to connect to database!“ angezeigt.

Roundcube Datenbankfehler
Roundcube Datenbankfehler

Das Updatescript zeigte folgenden Fehler:

Running update script at target...
Executing database schema update.
ERROR: SQLSTATE[HY000] [1045] Access denied for user 'roundcube'@'localhost' (using password: NO)
ERROR: Failed to connect to database
All done.

Die Ursache ist die Datei /etc/roundcube/config.inc.php. Hier ist folgendes aktiv:

$config['db_dsnw'] = 'mysql://roundcube:@localhost/roundcubemail';

Die Datenbankkonfiguration ist jedoch bereits in der Datei „/etc/roundcube/debian-db-roundcube.php“ eingetragen. Somit muss die config.inc.php angepasst werden und wie folgt abgeändert werden.

<?php
include_once("/etc/roundcube/debian-db-roundcube.php");
...
//$config['db_dsnw'] = 'mysql://roundcube:@localhost/roundcubemail';
...

6 Kommentare

  1. Steffen

    Hallo JARVIS,

    danke für die Anleitung. Damit habe ich mich endlich an das Update von Roundcube gewagt und bin kläglich gescheitert. Stundenlanges rumprobieren und Verzweiflung das Produktivsystem zerschossen zu haben waren die Folge. Gottseidank gab es eine Datensicherung. Allerdings gibt es auch hier etwas zu beachten: Das Packen von /var/lib/roundcube/ löscht die ursprüngliche Struktur der Daten in diesem Ordner. Viele Inhalte daraus sind „nur“ symbolische Links zu anderen Dateien und Ordnern. Das Packen sichert alles zwar richtig, holt sich aber die Ziele der symbolischen Links. Damit wird zwar alles korrekt gesichert, beim Rückspielen sind aber die symbolischen Links nicht mehr da und das schafft einiges Kopfzerbrechen. Erklärung folgt!

    Nicht alle die deine Anleitung finden, werden ISPConfig wie du installiert haben. Ich denke der ein oder andere hat die Anleitung „The Perfect Server“ von howtoforge.com verwendet und damit vielleicht auch auf die Version mit nginx statt apache gesetzt. Ganz konkret habe ich z.B. die Version mit nginx auf Ubuntu 18.04 laufen. Das sorgt sowohl für die Probleme, die auch meine Vorredner aus dem letzten Jahr hatten und die Sorgen, die ich beim Rückspielen der Sicherung hatte.
    Ich fange mal bei der Rücksicherung an. Wenn man nicht bemerkt hat, dass der ursprüngliche Inhalt des Installationsordners /var/lib/roundcube/ über symbolische Links arbeitet, weil man z.B. nur über „dir“ den Inhalt gesehen hat, merkt man beim Rückspielen nicht, dass der wichtige Ordner „program“ eigentlich in /usr/share/roundcube/ liegt und durch das Update dort auch aktualisiert wurde. Das Rückspielen der Sicherung bringt zwar den alten Ordner zurück in /var/lib/roundcube/, aber eben nicht in /usr/share/roundcube/.
    Deshalb als Tipp an alle die vor den gleichen Problemen stehen wie ich. Zu sichernde Ordner, in dem speziellen Fall /var/lib/roundcube/, /etc/roundcube/, /usr/share/roundcube/ und /var/log/roundcube/ mit „ls -als“ im Terminal anschauen, am besten nacheinander und dann einen Screenshot davon machen. Das hilft später wahnsinnig weiter auch bei weiteren Problemen. Ich hatte Gottseidank noch ein paar Testinstallationen verfügbar zum nachschauen.
    Damit komme ich auch schon zum Hauptproblem meiner Installation und vielleicht auch deiner Leser vom letzten Jahr. In der Anleitung von howtoforge.com mit nginx und Ubuntu 18.04 gibt es einen Fehler, bzw. ein Problem, was den von meinen zwei Vorrednern beschriebenen Fehler verursacht und für meine Probleme beim Rückspielen der Sicherung gesorgt hat. In der Anleitung wurde, um roundcube zu erreichen, als root in die nginx Direktiven /usr/share/ eingetragen. Komischerweise funktioniert dies mit der in Ubuntu 18.04 enthaltenen Version 1.3.6 von roundcube auch problemlos. Mit der gerade aktuellen 1.4.8 funktioniert es aber nicht. Das ist gleich 2x problematisch.
    Zum einen weil Roundcube mit der neuen Installation die Log-Dateien im Installationsordner erwartet und auf Schreibbarkeit prüft, diese aber in /usr/share/roundcube/ nicht finden kann. Deshalb kommt es beim Aufruf zum Fehler 500.
    Zum anderen ist das problematisch beim Rücksichern des Ordners /var/lib/roundcube/. Hier kommt zwar der alte „program“-Ordner wieder zurück, aber nicht an die Stelle, wo er laut der ursprünglichen Konfiguration eigentlich gebraucht und gelesen wird, da er eigentlich in /usr/share/roundcube/ liegt und dort durch den symbolischen Link auch geupdatet wird.
    Deine Anleitung funktioniert grundsätzlich, aber nicht für alle möglichen Konfigurationen. Einen Fehler kann ich damit aufzeigen und beseitigen. Wenn nginx und ISPConfig zum Einsatz kommt, muss in den Direktiven der root Ordner an allen 3 Stellen von /usr/share/ auf /var/lib/ geändert werden. Dann funktioniert auch das Update problemlos und im Handumdrehen.

    Als kleiner Tipp zum Ende. Bei mir hat jetzt ein Update von 1.3.6 auf 1.4.8 stattgefunden, damit musste ich folgende Benutzer/Gruppen-Rechte neu setzen:

    chown -R root:root /var/lib/roundcube/*
    chown -R www-data:www-data /var/lib/roundcube/temp
    chown -R root:root /usr/share/roundcube/program/
    chown root:root /etc/roundcube/defaults.inc.php

    Alles andere inklusive aller Zugriffsrechte war noch richtig! In /var/lib/roundcube/ war auch noch einiges richtig. Schneller geht es aber mit den ersten zwei Befehlen.

    Grundsätzlich lässt sich bei den Verzeichnisrechten sagen , dass in der Originalinstallation alles root:root war, außer:

    /var/lib/roundcube/temp/ www-data:www-data
    /var/log/rondcube/ www-data:adm
    /etc/roundcube/config.inc.php root:www-data
    /etc/roundcube/debian-db.php root:www-data

    Und genauso funktioniert es nach dem Update auch wieder. Das im Ordner /usr/share/roundcube/ auch die Ordner bin, plugins, skins und SQL als 1:1-Kopie aus dem Ordner /var/lib/roundcube/ liegen und dort noch die alten Versionen sind, da sie nicht geupdatet wurden, stört nicht. Das ist der ursprünglichen Installation geschuldet und zumindest nach dem Update nicht mehr relevant. Wen die alten Daten stören, der kann die Ordner dort in /usr/share/roundcube/ löschen, durch die aktuellen aus /var/lib/roundcube/ ersetzen oder ignorieren.

  2. cosirax

    Hallo Jarvis, vielen Dank für das Tutorial!

    Leider gibt es bei mir die gleichen Probleme wie bei Netzien. Ich habe allso so gemacht wie Du es beschrieben hast… leider bleibt dieser Fehler bestehen. Hast Du dafür eine Lösung?

    2020/04/12 18:03:45 [error] 11046#11046: *11 FastCGI sent in stderr: „PHP message: PHP Warning: file_put_contents(/usr/share/errors.log): failed to open stream: Permission denied in /usr/share/roundcube/program/lib/Roundcube/rcube.php on line 1308PHP message: PHP Warning: Configuration error. Unsupported database driver: in /usr/share/roundcube/program/lib/Roundcube/rcube.php on line 1419“ while reading response header from upstream, client: 95.223.116.31, server: myhost.tld, request: „GET /roundcube/ HTTP/1.1“, upstream: „fastcgi://unix:/var/run/php/php7.4-fpm.sock:“, host: „myhost.tld“

    • JARVIS

      Hi cosirax,
      ich habe die Rechte bei meiner aktuellen Installation mal überprüft und diese hier im Artikel aktualisiert. Root unter /etc/roundcube ist nicht für alle Dateien korrekt. Prüfe das bitte mal.
      Viel Erfolg.

  3. Netizen

    Hello,

    I’ve followed the same steps as you’ve mentioned above but I’m faced with 500 error. I’ve similar multiple lines in my logs.

    2019/11/16 10:55:39 [error] 18625#18625: *723 FastCGI sent in stderr: „PHP message: PHP Warning: file_put_contents(/usr/share/errors.log): failed to open stream: Permission denied in /usr/share/roundcube/program/lib/Roundcube/rcube.php on line 1295PHP message: PHP Warning: Configuration error. Unsupported database driver: in /usr/share/roundcube/program/lib/Roundcube/rcube.php on line 1406“ while reading response header from upstream, client: 60.243.186.41, server: _, request: „GET /squirrelmail/ HTTP/1.1“, upstream: „fastcgi://unix:/var/lib/php7.3-fpm/apps.sock:“, host: „cber.test.de:8081“

    Any ideas how I should proceed?

    • JARVIS

      Hi,
      the error messages says „Permission denied in /usr/share7roundcube/program/lib/Roundcube/rcube.php“. I would suggest you first check the Directory Permissions. But i am confused about next error message „Unsupported database driver“, perhaps its an configuration error, but than it shouldnt worked before.

    • JARVIS

      Hi Netizen,
      my first HowTo was partly wrong. I know correct all and now its working well. Please look also to the Howto to change the Skin to Elastic. I think this should solve your problem.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert