Der perfekte Server – Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.1)

Dieses Tutorial zeigt, wie man einen Debian-10-Server (mit Nginx, BIND, Dovecot) für die Installation von ISPConfig 3.1 vorbereitet und wie man ISPConfig 3.1 installiert. ISPConfig 3 ist ein Web-Hosting-Control-Panel, das es Ihnen erlaubt, die folgenden Dienste über einen Web-Browser zu konfigurieren: Apache- oder nginx-Webserver, Postfix-Mailserver, Courier- oder Dovecot-IMAP/POP3-Server, MySQL, BIND- oder MyDNS-Nameserver, PureFTPd, SpamAssassin, ClamAV und viele mehr. Diese Einrichtung umfasst Nginx-Webserver, BIND als DNS-Server und Dovecot als IMAP-/POP3-Server.

1 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen können sich für Sie unterscheiden, so dass Sie sie gegebenenfalls ersetzen müssen. Bevor Sie weitermachen, benötigen Sie eine minimale Installation von Debian 10. Dies könnte ein Debian-Minimal-Image von Ihrem Hosting-Provider sein, oder Sie verwenden das Minimal-Debian-Server-Tutorial, um das Basissystem einzurichten.

Alle folgenden Befehle werden als Root-Benutzer ausgeführt. Melden Sie sich entweder direkt als Root-Benutzer an oder melden Sie sich als Ihr normaler Benutzer an und verwenden Sie dann den Befehl

su -

um Root-Benutzer auf Ihrem Server zu werden, bevor Sie fortfahren. WICHTIG: Sie müssen ’su -‚ verwenden und nicht nur ’su‘, sonst wird Ihre PATH-Variable von Debian falsch gesetzt.

2 Installieren Sie den SSH-Server

Wenn Sie den OpenSSH-Server während der Systeminstallation nicht installiert haben, können Sie es jetzt tun:

apt-get -y install ssh openssh-server

Von nun an können Sie einen SSH-Client wie PuTTY verwenden und sich von Ihrer Workstation aus mit Ihrem Debian-10-Server verbinden und die restlichen Schritte aus diesem Tutorial befolgen.

3 Installieren Sie einen Shell-Texteditor (optional)

Ich werde dienano Texteditor in diesem Tutorial. Einige Benutzer bevorzugen den klassischen vi-Editor, daher werde ich hier beide Editoren installieren. Das Standard-Vi-Programm hat ein seltsames Verhalten unter Debian und Ubuntu; um dies zu beheben, installieren wir vim-nox:

apt-get -y install nano vim-nox

(Sie müssen dies nicht tun, wenn Sie einen anderen Texteditor wie z.B. joe verwenden).

4 Konfigurieren Sie den Hostnamen

Der Hostname Ihres Servers sollte eine Subdomain wie „server1.example.com“ sein. Verwenden Sie keinen Domänennamen ohne Subdomänenteil wie „beispiel.com“ als Hostname, da dies später Probleme mit Ihrem Mail-Setup verursachen wird. Zuerst sollten Sie den Hostnamen in /etc/hosts überprüfen und bei Bedarf ändern. Die Zeile sollte lauten: „IP-Adresse – Leerzeichen – vollständiger Hostname inkl. Domain – Leerzeichen – Subdomain-Teil“. Bearbeiten Sie /etc/hosts. Lassen Sie es wie folgt aussehen: „/etc/hosts“:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Bearbeiten Sie dann die Datei /etc/hostname:

nano /etc/hostname

Sie enthält in unserem Fall nur den Subdomänenteil:

server1

Starten Sie schließlich den Server neu, um die Änderung zu übernehmen:

reboot

Melden Sie sich erneut an und überprüfen Sie jetzt mit diesen Befehlen, ob der Hostname korrekt ist:

hostname
hostname -f

Die Ausgabe soll wie folgt aussehen:

[email protected]:/tmp# hostname
server1
[email protected]:/tmp# hostname -f
server1.example.com

5 Aktualisieren Sie Ihre Debian-Installation

Stellen Sie zuerst sicher, dass Ihre /etc/apt/sources.list das Repository buster/updates enthält (dies stellt sicher, dass Sie immer die neuesten Updates für den ClamAV-Virenscanner erhalten – dieses Projekt veröffentlicht sehr oft Releases, und manchmal funktionieren alte Versionen nicht mehr), und dass die Contrib- und Non-Free-Repositorys aktiviert sind.

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Führen Sie aus.

apt-get update

um die Datenbank des apt-Pakets zu aktualisieren und

apt-get upgrade

um die neuesten Updates zu installieren (falls es welche gibt).

6 Ändern der Standard-Shell

/bin/sh ist ein Symlink zu /bin/dash, wir benötigen jedoch /bin/bash, nicht /bin/dash. Deshalb machen wir dies:

dpkg-reconfigure dash

Dash als Standard-System-Shell verwenden (/bin/sh)? <– Nein

Wenn Sie dies nicht tun, wird die Installation von ISPConfig fehlschlagen.

7 Synchronisieren der Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP-Server (Network Time Protocol) über das Internet zu synchronisieren. Führen Sie einfach

apt-get install ntp

und Ihre Systemzeit wird immer synchron sein.

8 Postfix, Dovecot, MySQL, rkhunter und binutils installieren

Wir können Postfix, Dovecot, MySQL, rkhunter und Binutils mit einem einzigen Befehl installieren:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

Es werden Ihnen die folgenden Fragen gestellt:

Allgemeine Art der Mail-Konfiguration: <– Internetseite
Name der System-Mail: <– server1.beispiel.com

Um die Installation von MariaDB / MySQL zu sichern und die Testdatenbank zu deaktivieren, führen Sie diesen Befehl aus:

mysql_secure_installation

Wir müssen das MariaDB-Root-Passwort nicht ändern, da wir während der Installation einfach ein neues Passwort gesetzt haben. Beantworten Sie die Fragen wie folgt:

Change the root password? [Y/n] <-- y
New password: <-- Enter a new database root password
Re-enter new password: <-- Repeat the database root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Als nächstes öffnen Sie die TLS/SSL- und Submission-Ports in Postfix:

nano /etc/postfix/master.cf

Kommentieren Sie dieAnmeldung und smtps Abschnitte wie folgt und fügen Sie ggf. Zeilen hinzu, so dass dieser Abschnitt der Datei master.cf genau wie der folgende Abschnitt aussieht. WICHTIG: Entfernen Sie das # vor den Zeilen, die mit smtps und submission beginnen, auch und nicht nur von den -o Zeilen nach diesen Zeilen!

[...]
submission inet n - y - - smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - smtpd
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]

Starten Sie Postfix anschließend neu:

service postfix restart

Wir wollen, dass MariaDB auf allen Schnittstellen lauscht, nicht nur auf localhost, deshalb editieren wir /etc/mysql/mariadb.conf.d/50-server.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

[…]

Sichern Sie die Datei. Dann setzen Sie die Passwort-Authentifizierungsmethode in MariaDB auf nativ, so dass wir später PHPMyAdmin verwenden können, um uns als Root-Benutzer zu verbinden:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Bearbeiten Sie die Datei /etc/mysql/debian.cnf und setzen Sie das MYSQL / MariaDB Root-Passwort dort zweimal in den Zeilen, die mit dem Wort password beginnen.

nano /etc/mysql/debian.cnf

Das MySQL-Root-Passwort, das hinzugefügt werden muss, wird in rot angezeigt. In diesem Beispiel lautet das Passwort „howtoforge“.

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Um den Fehler ‚Fehler bei accept: Zu viele offene Dateien‚ werden wir jetzt höhere Grenzwerte für offene Dateien für MariaDB festlegen.

Öffnen Sie die Datei /etc/security/limits.conf mit einem Editor:

nano /etc/security/limits.conf

und fügen Sie diese Zeilen am Ende der Datei hinzu.

mysql soft nofile 65535
mysql hard nofile 65535

Als nächstes erstellen Sie ein neues Verzeichnis /etc/systemd/system/mysql.service.d/ mit dem Befehl mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

und fügen Sie darin eine neue Datei hinzu:

nano /etc/systemd/system/mysql.service.d/limits.conf

fügen Sie die folgenden Zeilen in diese Datei ein:

[Service]
LimitNOFILE=infinity

Speichern Sie die Datei und schließen Sie den Nano-Editor.

Dann laden wir systemd neu und starten MariaDB neu:

systemctl daemon-reload
systemctl restart mariadb

Ignorieren Sie die Warnung: „Warnung: Die Unit-Datei, Quell-Konfigurationsdatei oder Drop-Ins von mariadb.service wurden auf der Platte geändert. Führen Sie ’systemctl daemon-reload‘ aus, um Units neu zu laden. „.

Installieren Sie das dbconfig-common-System:

apt-get install dbconfig-common dbconfig-mysql

Es gibt zur Zeit ein Problem mit dem Debian dbconfig-common-System, das die spÃ?tere Installation von RoundCube verhindert, beheben Sie es, indem Sie diesen Befehl ausfÃ?hren:

sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql

Überprüfen Sie nun, ob die Vernetzung aktiviert ist. Führen Sie aus.

netstat -tap | grep mysql

Die Ausgabe sollte wie folgt aussehen:

[email protected]:~# netstat -tap | grep mysql
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      4027/mysqld
[email protected]:~#

9 Installieren Sie Amavisd-neu, SpamAssassin und ClamAV

Um amavisd-new, SpamAssassin und ClamAV zu installieren, führen wir aus:

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

Das ISPConfig 3-Setup verwendet amavisd, das die SpamAssassin-Filterbibliothek intern lädt, so dass wir SpamAssassin stoppen können, um etwas RAM freizugeben:

systemctl stop spamassassin
systemctl disable spamassassin

10 Nginx, PHP (PHP-FPM) und Fcgiwrap installieren

Nginx ist als Paket für Debian verfügbar, das wir wie folgt installieren können:

apt-get install nginx

Falls Apache2 bereits auf dem System installiert ist, stoppen Sie es jetzt…

systemctl stop apache2

Die Meldung „Failed to stop apache2.service: Einheit apache2.service nicht geladen. “ ist in Ordnung und zeigt keinen Fehler an.

… und entfernen Sie die Systemstart-Links von Apache:

systemctl disable apache2

Beginnen Sie danach mit nginx:

systemctl start nginx

(Wenn sowohl Apache2 als auch nginx installiert sind, fragt Sie das ISPConfig 3-Installationsprogramm, welches Sie verwenden möchten – antworten Sie in diesem Fall nginx. Wenn nur eines von beiden installiert ist, wird ISPConfig die notwendige Konfiguration automatisch vornehmen).

Wir können PHP 7.3 in nginx durch PHP-FPM zum Laufen bringen (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Sites jeder Größe nützlich sind, insbesondere für stark frequentierte Sites), die wir wie folgt installieren

apt-get install php7.3-fpm

PHP-FPM ist ein Daemon-Prozess, der einen FastCGI-Server auf dem Sockel /var/run/php/php7.3-fpm.sock ausführt.

Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php7.3-mysql installieren. Es ist eine gute Idee, auch einige andere PHP-Module zu installieren, da Sie diese für Ihre Anwendungen benötigen könnten. So können Sie nach verfügbaren PHP-Modulen suchen:

apt-cache search php7

Wählen Sie die Dienste aus, die Sie benötigen, und installieren Sie sie wie folgt:

apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu

Als nächstes öffne ich /etc/php/7.3/fpm/php.ini

nano /etc/php/7.3/fpm/php.ini

… und setzen Sie cgi.fix_pathinfo=0 und Ihre Zeitzone:

[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...]

(Sie finden alle verfügbaren Zeitzonen in den Verzeichnissen /usr/share/zoneinfo und seinen Unterverzeichnissen).

Laden Sie jetzt PHP-FPM neu:

systemctl restart php7.3-fpm

Um CGI-Unterstützung in nginx zu erhalten, installieren wir Fcgiwrap.

Fcgiwrap ist ein CGI-Wrapper, der auch für komplexe CGI-Skripte funktionieren sollte und für Shared Hosting-Umgebungen verwendet werden kann, da er jedem vhost erlaubt, sein eigenes cgi-bin-Verzeichnis zu verwenden.

Installieren Sie das Paket fcgiwrap:

apt-get install fcgiwrap

Nach der Installation sollte der fcgiwrap-Daemon bereits gestartet sein; sein Socket ist /var/run/fcgiwrap.socket. Wenn er nicht läuft, können Sie das fservice fcgiwrap-Skript verwenden, um ihn zu starten.

Das war’s schon! Wenn Sie nun einen nginx vhost erstellen, kümmert sich ISPConfig um die korrekte vhost-Konfiguration.

10.1 phpMyAdmin installieren

Seit Debian 10 ist PHPMyAdmin nicht mehr als .deb-Paket verfügbar. Daher werden wir es aus den Quellen installieren.

Erstellen Sie Ordner für PHPMyAdmin:

mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup

Gehen Sie in das Verzeichnis /tmp und laden Sie die PHPMyAdmin-Quellen herunter:

cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Entpacken Sie die heruntergeladene Archivdatei und verschieben Sie die Dateien in den Ordner /usr/share/phpmyadmin und bereinigen Sie das Verzeichnis /tmp.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languages

Erstellen Sie eine neue Konfigurationsdatei für PHPMyaAdmin basierend auf der mitgelieferten Beispieldatei:

cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Öffnen Sie die Konfigurationsdatei mit dem Nano-Editor:

nano /usr/share/phpmyadmin/config.inc.php

Legen Sie ein sicheres Passwort (Blowfish-Geheimnis) fest, das 32 Zeichen lang sein muss:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Verwenden Sie nicht mein Beispiel blowfish secret, sondern setzen Sie Ihr eigenes!

Fügen Sie dann eine Zeile hinzu, um das Verzeichnis festzulegen, das PHPMyAdmin zum Speichern temporärer Dateien verwenden soll:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Im nächsten Schritt werden wir den phpMyadmin-Konfigurationsspeicher (Datenbank) konfigurieren.

Melden Sie sich bei MariaDB als Root-Benutzer an:

mysql -u root -p

Erstellen Sie in der MariaDB-Shell eine neue Datenbank für PHPMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Erstellen Sie dann einen neuen Benutzer:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Ersetzen Sie in den Befehlen oben und unten das Wort mypassword durch ein sicheres Passwort Ihrer Wahl, verwenden Sie beide Male dasselbe Passwort. Gewähren Sie dann dem Benutzer Zugang zu dieser Datenbank und laden Sie die Datenbankberechtigungen neu.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT

Laden Sie schließlich die SQL-Tabellen in die Datenbank:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Geben Sie das MariaDB-Root-Passwort auf Anfrage ein.

Jetzt müssen wir nur noch die phpmyadmin-Benutzerdaten in der Konfigurationsdatei festlegen. Öffnen Sie die Datei erneut im nano editor:

nano /usr/share/phpmyadmin/config.inc.php

Scrollen Sie nach unten, bis Sie die untenstehenden Zeilen sehen, und bearbeiten Sie diese:

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';

/* Storage database and tables */
$cfg[‚Servers‘][$i][‚pmadb‘] = ‚phpmyadmin‘;
$cfg[‚Servers‘][$i][‚bookmarktable‘] = ‚pma__bookmark‘;
$cfg[‚Servers‘][$i][‚relation‘] = ‚pma__relation‘;
$cfg[‚Servers‘][$i][‚table_info‘] = ‚pma__table_info‘;
$cfg[‚Servers‘][$i][‚table_coords‘] = ‚pma__table_coords‘;
$cfg[‚Servers‘][$i][‚pdf_pages‘] = ‚pma__pdf_pages‘;
$cfg[‚Servers‘][$i][‚column_info‘] = ‚pma__column_info‘;
$cfg[‚Servers‘][$i][‚history‘] = ‚pma__history‘;
$cfg[‚Servers‘][$i][‚table_uiprefs‘] = ‚pma__table_uiprefs‘;
$cfg[‚Servers‘][$i][‚tracking‘] = ‚pma__tracking‘;
$cfg[‚Servers‘][$i][‚userconfig‘] = ‚pma__userconfig‘;
$cfg[‚Servers‘][$i][‚recent‘] = ‚pma__recent‘;
$cfg[‚Servers‘][$i][‚favorite‘] = ‚pma__favorite‘;
$cfg[‚Servers‘][$i][‚users‘] = ‚pma__users‘;
$cfg[‚Servers‘][$i][‚usergroups‘] = ‚pma__usergroups‘;
$cfg[‚Servers‘][$i][’navigationhiding‘] = ‚pma__navigationhiding‘;
$cfg[‚Servers‘][$i][’savedsearches‘] = ‚pma__savedsearches‘;
$cfg[‚Servers‘][$i][‚central_columns‘] = ‚pma__central_columns‘;
$cfg[‚Servers‘][$i][‚designer_settings‘] = ‚pma__designer_settings‘;
$cfg[‚Servers‘][$i][‚export_templates‘] = ‚pma__export_templates‘;

Ich habe die Zeilen, die ich bearbeitet habe, rot markiert. Ersetzen Sie mypassword durch das Passwort, das Sie für den Benutzer phpmyadmin gewählt haben. Beachten Sie, dass das // vor den Zeilen ebenfalls entfernt wurde!

Nachdem Sie ISPConfig 3.1 installiert haben, können Sie wie folgt auf phpMyAdmin zugreifen:

Die ISPConfig-Anwendung vhost auf Port 8081 für nginx kommt mit einer phpMyAdmin-Konfiguration, so dass Sie http://server1.example.com:8081/phpmyadmin oder http://server1.example.com:8081/phpMyAdmin verwenden können, um auf phpMyAdmin zuzugreifen.

Wenn Sie einen /phpmyadmin- oder /phpMyAdmin-Alias verwenden wollen, den Sie von Ihren Websites aus verwenden können, ist dies etwas komplizierter als bei Apache, da nginx keine globalen Aliase hat (d.h. Aliase, die für alle vhosts definiert werden können). Daher müssen Sie diese Aliase für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen möchten.

Dazu fügen Sie Folgendes später in ISPConfig auf der Registerkarte Optionen der Website in das Feld nginx-Direktiven ein:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Wenn Sie https anstelle von http für Ihren vhost verwenden, sollten Sie die Zeile fastcgi_param HTTPS on; zu Ihrer phpMyAdmin-Konfiguration wie folgt hinzufügen:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS on; # <-- add this line
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Wenn Sie für Ihren vhost sowohl http als auch https verwenden, können Sie die Variable $https verwenden. Gehen Sie wieder zum Feld nginx Directives, und statt fastcgi_param HTTPS on fügen Sie die Zeile fastcgi_param HTTPS $https hinzu, so dass Sie phpMyAdmin sowohl für http- als auch für https-Anfragen verwenden können:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS $https; # <-- add this line
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

11 Installieren Lassen Sie uns verschlüsseln

ISPConfig 3.1 hat Unterstützung für die kostenlose SSL-Zertifizierungsstelle Let’s encrypt. Mit der Funktion „Let’s Encrypt“ können Sie aus ISPConfig heraus kostenlose SSL-Zertifikate für Ihre Website erstellen.

cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

12 Mailman installieren

Mit ISPConfig können Sie Mailman-Mailinglisten verwalten (erstellen/ändern/löschen). Wenn Sie von dieser Funktion Gebrauch machen wollen, installieren Sie Mailman wie folgt:

apt-get install mailman

Wählen Sie mindestens eine Sprache, z.B:

Zu unterstützende Sprachen: <– en (Englisch)
Fehlende Site-Liste <– Ok

Bevor wir mit dem Mailman beginnen können, muss eine erste Mailingliste namens mailman erstellt werden:

newlist mailman

[email protected]:~# newlist mailman Geben Sie die
E-Mail-Adresse der Person ein, die die Liste betreibt: <– Admin-E-Mail-Adresse, z.B. [email protected]
com
Ursprüngliches Briefträger-Passwort:<– Admin-Passwort für die Mailman-Liste Um die Erstellung Ihrer Mailingliste abzuschließen,
müssen SieIhre Datei /etc/aliases (oder gleichwertig
), indem Sie die folgenden Zeilen hinzufügen und möglicherweise das Programm `newaliases‘ ausführen:

## mailman mailing list mailman: “
|/var/lib/mailman/mail/mail/mailman post mailman“ mailman-admin:“|/var/lib/mailman/mail/mailman admin mailman“ mailman-bounces: „|/var/lib/mailman/mailman/mail/mailman admin mailman“ mailman-bounces:“|/var/lib/mailman/mail/mail/mailman bounces mailman“ mailman-confirm: „|/var/lib/mailman/mail/mail/mailman
confirm mailman“ mailman-join:“|/var/lib/mailman/mail/mailman join mailman“ mailman-leeave:“|/var/lib/mailman/mail/mail/mailman leave mailman“ Briefträger-Betreiber:“|/var/lib/mailman/mail/mailman/mailman owner mailman“ Briefträger-Antrag: „|/var/lib/mailman/mailman/mail/mailman owner mailman“|/var/lib/mailman/mail/mail/mailman request mailman“ mailman-subscribe: „|/var/lib/mailman/mail/mail/mailman
subscribe mailman“ mailman-abbestellen:“|/var/lib/mailman/mail/mailman unsubscribe mailman“ Drücken Sie Enter, um den Eigentümer des Postboten zu benachrichtigen

…. <– ENTER [email protected]:~#

Öffnen Sie danach /etc/aliases

nano /etc/aliases

… und fügen Sie die folgenden Zeilen hinzu:

[...]
## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Führen Sie aus.

newaliases

danach und starten Sie Postfix neu:

systemctl restart postfix

Starten Sie dann den Mailman-Dämon:

systemctl restart mailman

Nachdem Sie ISPConfig 3 installiert haben, können Sie Mailman wie folgt aufrufen: (Sie müssen dies nicht tun, wenn Sie einen anderen Texteditor wie joe verwenden:

Die ISPConfig-Anwendung vhost auf Port 8081 für nginx wird mit einer Mailman-Konfiguration ausgeliefert, so dass Sie über http://server1.example.com:8081/cgi-bin/mailman/admin/<listname> oder http://server1.example.com:8081/cgi-bin/mailman/listinfo/<listname> auf Mailman zugreifen können.

Wenn Sie Mailman von Ihren Webseiten aus verwenden wollen, ist dies etwas komplizierter als beim Apache, da nginx keine globalen Aliase hat (d.h. Aliase, die für alle vhosts definiert werden können). Daher müssen Sie diese Aliase für jeden vhost definieren, von dem aus Sie auf Mailman zugreifen möchten.

Dazu fügen Sie Folgendes in das Feld nginx-Direktiven auf der Registerkarte Optionen der Website in ISPConfig ein:

        location /cgi-bin/mailman {
               root /usr/lib/;
               fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/share/images/mailman;
        }

        location /pipermail {
               alias /var/lib/mailman/archives/public;
               autoindex on;
        }

Dies definiert den Alias /cgi-bin/mailman/ für Ihren vhost, was bedeutet, dass Sie auf die Mailman-Administrationsschnittstelle für eine Liste unter http://<vhost>/cgi-bin/mailman/admin/<listname> zugreifen können. Die Webseite für Benutzer einer Mailingliste finden Sie unter http://<vhost>/cgi-bin/mailman/listinfo/<listname>.

Unter http://<vhost>/pipermail finden Sie das Archiv der Mailingliste.

13 PureFTPd und Quota installieren

PureFTPd und Quota können mit dem folgenden Befehl installiert werden:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Bearbeiten Sie die Datei /etc/default/pure-ftpd-common

nano /etc/default/pure-ftpd-common

… und stellen Sie sicher, dass der Startmodus auf Standalone gesetzt ist und setzen Sie VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Nun konfigurieren wir PureFTPd, um FTP- und TLS-Sitzungen zuzulassen. FTP ist ein sehr unsicheres Protokoll, da alle Passwörter und alle Daten im Klartext übertragen werden. Durch die Verwendung von TLS kann die gesamte Kommunikation verschlüsselt werden, wodurch FTP viel sicherer wird.

Wenn Sie FTP- und TLS-Sitzungen erlauben möchten, führen Sie

echo 1 > /etc/pure-ftpd/conf/TLS

Um TLS verwenden zu können, müssen wir ein SSL-Zertifikat erstellen. Ich erstelle es in /etc/ssl/private/, daher lege ich dieses Verzeichnis zuerst an:

mkdir -p /etc/ssl/private/

Danach können wir das SSL-Zertifikat wie folgt generieren:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Name des Landes (2-Buchstaben-Code) [AU]: <– Geben Sie Ihren Ländernamen ein (z.B. „DE“).
Name des Staates oder der Provinz (vollständiger Name) [Some-State]:
<– Geben Sie den Namen Ihres Bundesstaates oder Ihrer Provinz ein.
Name der Ortschaft (z.B. Stadt) []:
<– Geben Sie Ihre Stadt ein.
Name der Organisation (z.B. Firma) [Internet Widgits Pty Ltd]:
<– Geben Sie den Namen Ihrer Organisation ein (z.B. den Namen Ihrer Firma).
Name der Organisationseinheit (z.B. Abschnitt) []:
<– Geben Sie den Namen Ihrer Organisationseinheit ein (z.B. „IT-Abteilung“).
Allgemeiner Name (z.B. IHR Name) []:
<– Geben Sie den vollqualifizierten Domänennamen des Systems ein (z.B. „server1.example.com“).
E-Mail-Adresse []:
<– Geben Sie Ihre E-Mail-Adresse ein.

Ändern Sie die Berechtigungen des SSL-Zertifikats:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Starten Sie dann PureFTPd erneut:

systemctl restart pure-ftpd-mysql

Bearbeiten Sie /etc/fstab. Meine sieht wie folgt aus (ich habe ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Mount-Punkt / hinzugefügt):

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Um die Quote zu aktivieren, führen Sie diese Befehle aus:

mount -o remount /
quotacheck -avugm
quotaon -avug

14 BIND DNS-Server installieren

BIND kann wie folgt installiert werden:

apt-get install bind9 dnsutils

Wenn Ihr Server eine virtuelle Maschine ist, dann wird dringend empfohlen, den haveged Daemon zu installieren, um eine höhere Entropie für die DNSSEC-Signierung zu erhalten. Sie können haveged auch auf nicht-virtuellen Servern installieren, es sollte nicht schaden.

apt-get -y install haveged
systemctl enable haveged
systemctl start haveged

Eine Erklärung zu diesem Thema finden Sie hier.

15 Webalizer und AWStats installieren

Webalizer und AWStats können wie folgt installiert werden:

apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

Öffnen Sie anschließend /etc/cron.d/awstats

nano /etc/cron.d/awstats

… und kommentieren Sie alles in dieser Datei aus:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

16 Jailkit installieren

Jailkit wird nur benötigt, wenn Sie SSH-Benutzer in das Chroot-System aufnehmen möchten. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor ISPConfig installiert werden – es kann nicht nachträglich installiert werden! ):

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binary

Sie können nun das Jailkit .deb-Paket wie folgt installieren:

cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*

17 Fail2ban und UFW-Firewall installieren

Dies ist optional, wird aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:

apt-get install fail2ban

Damit der fail2ban-Monitor PureFTPd und Dovecot überwacht, erstellen Sie die Datei /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled = true
port = smtp
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3

Starten Sie danach fail2ban erneut:

systemctl restart fail2ban

Um die UFW-Firewall zu installieren, führen Sie diesen apt-Befehl aus:

apt-get install ufw

18 RoundCube installieren

Installieren Sie RoundCube mit diesem Befehl:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Das Installationsprogramm wird Ihnen die folgenden Fragen stellen:

Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter
Password of the databases administrative user: <-- enter the MySQL root password here.

Bearbeiten Sie dann die Datei RoundCube /etc/roundcube/config.inc.php und passen Sie einige Einstellungen an:

nano /etc/roundcube/config.inc.php

Setzen Sie default_host und smtp_server auf localhost.

$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';

ISPConfig hat einige Konfigurationen in der nginx apps vhost für squirrelmail, die auch für roundcube funktionieren. Wir aktivieren sie mit:

ln -s /usr/share/roundcube /usr/share/squirrelmail

http://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail
(nachdem Sie ISPConfig installiert haben, siehe das nächste Kapitel)

Rundwürfel auf Nginx

19 ISPConfig 3 installieren

Bevor Sie mit der ISPConfig-Installation beginnen, stellen Sie sicher, dass Apache gestoppt ist (falls er installiert ist – es ist möglich, dass einige Ihrer installierten Pakete Apache als Abhängigkeit installiert haben, ohne dass Sie es wissen). Falls Apache2 bereits auf dem System installiert ist, stoppen Sie ihn jetzt…

systemctl stop apache2

… und entfernen Sie die Systemstart-Verknüpfungen des Apache:

update-rc.d -f apache2 remove

Stellen Sie sicher, dass nginx läuft:

systemctl start nginx

(Wenn Sie sowohl Apache als auch nginx installiert haben, fragt Sie das Installationsprogramm, welches Sie verwenden möchten: Apache und nginx wurden erkannt: (Wenn Sie sowohl Apache als auch nginx installiert haben, fragt Sie das Installationsprogramm, welchen Sie verwenden möchten. Wählen Sie den Server aus, den Sie für ISPConfig verwenden wollen: (Wenn Sie sowohl Apache als auch nginx installiert haben, fragt Sie das Installationsprogramm, welchen Sie verwenden wollen: Apache und nginx erkannt: (Apache,nginx) [Apache]:

Geben Sie nginx ein. Wenn nur Apache oder nginx installiert sind, wird dies vom Installationsprogramm automatisch erkannt, und es wird keine Frage gestellt): [apache]: [apache]: [nginx]: [apache]: [nginx]: [nginx].

Um ISPConfig 3.1 von der letzten veröffentlichten Version aus zu installieren, tun Sie dies:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Der nächste Schritt ist die Ausführung von

php -q install.php

Dadurch wird das ISPConfig 3-Installationsprogramm gestartet. Das Installationsprogramm wird alle Dienste wie Postfix, Nginx, Dovecot, etc. für Sie konfigurieren.

# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Initial configuration
Operating System: Debian 10.0 (Buster) or compatible
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.
Select language (en,de) [en]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter your MySQL root password
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx
Configuring Postgrey

Configuring Postfix
Generating a 4096 bit RSA private key
……………………………………………………………..++
……………………………………………………………………………………………………………………….++
writing new private key to ’smtpd.key‘
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‚.‘, the field will be left blank.
—–
Country Name (2 letter code) [AU]: <– Enter 2 letter country code
State or Province Name (full name) [Some-State]: <– Enter the name of the  state
Locality Name (eg, city) []: <– Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <– Enter company name or press enter
Organizational Unit Name (eg, section) []: <– Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <– Enter the server hostname, in my case: server1.example.com
Email Address []: <– Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Nginx
Configuring vlogger
[INFO] service Metronome XMPP Server not detected

Configuring UFW Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]: <-- Enter desired ISPConfig admin user password here
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
Generating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

Der Installer konfiguriert automatisch alle zugrundeliegenden Dienste, so dass keine manuelle Konfiguration erforderlich ist.

Danach können Sie auf ISPConfig 3 unter http(s)://server1.example.com:8080/ oder http(s)://192.168.1.100:8080/ zugreifen (http oder https hängt davon ab, was Sie während der Installation gewählt haben). Melden Sie sich mit dem Benutzernamen admin und dem Passwort admin an (Sie sollten das Standardpasswort nach der ersten Anmeldung ändern):

ISPConfig Login-Seite

ISPConfig-Dashboard auf Debian 10

Zum Schluss korrigieren wir noch einige Berechtigungen der RoundCube-Installation.

chown root:ispapps /etc/roundcube/debian-db.php
chmod 640 /etc/roundcube/debian-db.php
chown root:ispapps /etc/roundcube/config.inc.php
chmod 640 /etc/roundcube/config.inc.php
chown -R ispapps:adm /var/log/roundcube
chmod -R 750 /var/log/roundcube
chown -R ispapps:ispapps /var/lib/roundcube/temp
chmod -R 750 /var/lib/roundcube/temp

Das System ist nun einsatzbereit.

20 Links

Das könnte dich auch interessieren …