Server Setup · 7 min read · Nov 03, 2025

Der perfekte Server - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)

Dieses Tutorial zeigt, wie man einen Debian 9 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 Webhosting-Kontrollpanel, das es Ihnen ermöglicht, die folgenden Dienste über einen Webbrowser 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 den 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.1.100 und dem Gateway 192.168.1.1. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen. Bevor Sie fortfahren, benötigen Sie eine minimale Installation von Debian 9. Dies könnte ein minimales Debian-Image von Ihrem Hosting-Anbieter sein oder Sie verwenden das Minimal Debian Server Tutorial, um das Basissystem einzurichten.

2 Installieren Sie den SSH-Server

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

apt-get -y install ssh openssh-server

Von nun an können Sie einen SSH-Client wie PuTTY verwenden und sich von Ihrem Arbeitsplatz mit Ihrem Debian 9 Server verbinden und die verbleibenden Schritte dieses Tutorials befolgen.

3 Installieren Sie einen Shell-Texteditor (Optional)

Ich werde in diesem Tutorial den nano Texteditor verwenden. Einige Benutzer bevorzugen den klassischen vi-Editor, daher werde ich hier beide Editoren installieren. Das Standardvi-Programm hat ein seltsames Verhalten auf 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 joe verwenden.)

4 Konfigurieren Sie den Hostnamen

Der Hostname Ihres Servers sollte ein Subdomain wie “server1.example.com” sein. Verwenden Sie keinen Domainnamen ohne Subdomain-Teil wie “example.com” als Hostnamen, da dies später Probleme mit Ihrer Mail-Einrichtung verursachen wird. Zuerst sollten Sie den Hostnamen in /etc/hosts überprüfen und ihn bei Bedarf ändern. Die Zeile sollte sein: “IP-Adresse - Leerzeichen - vollständiger Hostname inkl. Domain - Leerzeichen - Subdomain-Teil”. Bearbeiten Sie /etc/hosts. Lassen Sie es so aussehen:

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

# Die folgenden Zeilen sind wünschenswert für IPv6-fähige Hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Dann bearbeiten Sie die Datei /etc/hostname:

nano /etc/hostname

Sie sollte nur den Subdomain-Teil enthalten, in unserem Fall:

server1

Starten Sie schließlich den Server neu, um die Änderung anzuwenden:

reboot

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

hostname  
hostname -f

Die Ausgabe sollte so aussehen:

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Aktualisieren Sie Ihre Debian-Installation

Stellen Sie zuerst sicher, dass Ihre /etc/apt/sources.list das stretch/updates-Repository 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 hören alte Versionen auf zu funktionieren), und dass die contrib- und non-free-Repositories aktiviert sind.

nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ stretch main contrib non-free  
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free  
  
deb http://security.debian.org/debian-security stretch/updates main contrib non-free  
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

WICHTIG: Fügen Sie das Debian Backports-Repository wie oben gezeigt hinzu.

Führen Sie

apt-get update

aus, um die apt-Paketdatenbank zu aktualisieren und

apt-get upgrade

um die neuesten Updates zu installieren (falls vorhanden).

6 Ändern Sie die Standard-Shell

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

dpkg-reconfigure dash

Verwenden Sie dash als Standardsystem-Shell (/bin/sh)? <– Nein

Wenn Sie dies nicht tun, schlägt die Installation von ISPConfig fehl.

7 Synchronisieren Sie die Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP ( n etwork t ime p rotokoll) Server über das Internet zu synchronisieren. Führen Sie einfach aus

apt-get install ntp

und Ihre Systemzeit wird immer synchronisiert sein.

8 Installieren Sie Postfix, Dovecot, MySQL, rkhunter und binutils

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

Sie werden nach den folgenden Fragen gefragt:

Allgemeiner Typ der Mailkonfiguration: <– Internet Site
System-Mail-Name: <– server1.example.com

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

mysql_secure_installation

Wir müssen das MySQL-Root-Passwort nicht ändern, da wir gerade eines während der Installation festgelegt haben. Beantworten Sie die Fragen wie folgt:

Ändern Sie das Root-Passwort? [Y/n] <-- y  
Neues Passwort: <-- Geben Sie ein neues MySQL-Root-Passwort ein  
Neues Passwort erneut eingeben: <-- Wiederholen Sie das MySQL-Root-Passwort  
Anonyme Benutzer entfernen? [Y/n] <-- y  
Root-Login aus der Ferne verbieten? [Y/n] <-- y  
Testdatenbank und Zugriff darauf entfernen? [Y/n] <-- y  
Privilegientabellen jetzt neu laden? [Y/n] <-- y

Öffnen Sie als Nächstes die TLS/SSL- und Übermittlungsports in Postfix:

nano /etc/postfix/master.cf

Kommentieren Sie die Abschnitte submission und smtps wie folgt aus (lassen Sie -o milter_macro_daemon_name=ORIGINATING, da wir es nicht benötigen):

[...]  
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 möchten, dass MariaDB auf allen Schnittstellen hört, nicht nur auf localhost, daher bearbeiten wir /etc/mysql/mariadb.conf.d/50-server.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus und fügen die Zeile sql-mode=”NO_ENGINE_SUBSTITUTION” hinzu:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]  
# Anstelle von skip-networking ist die Standardeinstellung jetzt, nur auf  
# localhost zu hören, was kompatibler ist und nicht weniger sicher.  
#bind-address           = 127.0.0.1  
  
sql-mode="NO_ENGINE_SUBSTITUTION"  
[...]  

Setzen Sie die Passwortauthentifizierungsmethode in MariaDB auf native, damit 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 dort das MYSQL / MariaDB Root-Passwort zweimal in den Zeilen, die mit password beginnen.

nano /etc/mysql/debian.cnf

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

# Automatisch für Debian-Skripte generiert. NICHT ANFASSEN!  
[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 ‘ Error in accept: Too many open files ‘ zu verhindern, setzen wir jetzt höhere offene Dateigrenzen für MariaDB.

Ö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

Erstellen Sie als Nächstes ein neues Verzeichnis /etc/systemd/system/mysql.service.d/ mit dem mkdir-Befehl.

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

und fügen Sie eine neue Datei darin 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  
service mysql restart

Überprüfen Sie nun, ob das Networking aktiviert ist. Führen Sie aus

netstat -tap | grep mysql

Die Ausgabe sollte so aussehen:

root@server1:~# netstat -tap | grep mysql  
tcp6       0      0 [::]:mysql              [::]:*                     LISTEN      4027/mysqld  
root@server1:~#

9 Installieren Sie Amavisd-new, SpamAssassin und ClamAV

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

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract 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

Die ISPConfig 3 Einrichtung verwendet amavisd, das die SpamAssassin-Filterbibliothek intern lädt, sodass wir SpamAssassin stoppen können, um etwas RAM freizugeben:

service spamassassin stop  
systemctl disable spamassassin

9.1 Installieren Sie den Metronome XMPP-Server (optional)

Dieser Schritt installiert den Metronome XMPP-Server, der einen Chat-Server bereitstellt, der mit dem XMPP-Protokoll kompatibel ist. Dieser Schritt ist optional; wenn Sie keinen Chat-Server benötigen, können Sie diesen Schritt überspringen. Keine anderen ISPConfig-Funktionen hängen von dieser Software ab.

Fügen Sie das Prosody-Paket-Repository in Debian hinzu.

echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list  
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

Aktualisieren Sie die Paketliste:

apt-get update

Installieren Sie die Programme, die für den Build-Prozess erforderlich sind

apt-get install build-essential

und installieren Sie die Pakete mit apt.

apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc

Fügen Sie einen Shell-Benutzer für Metronome hinzu.

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Laden Sie Metronome in das Verzeichnis /opt herunter und kompilieren Sie es.

cd /opt; git clone https://github.com/maranda/metronome.git metronome  
cd ./metronome; ./configure --ostype=debian --prefix=/usr  
make  
make install

Metronome wurde jetzt in /opt/metronome installiert.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.