Server Setup · 7 min read · Nov 06, 2025
Der perfekte Server - Debian 9 (Stretch) mit Apache, BIND, Dovecot, PureFTPD und ISPConfig 3.1

Dieses Tutorial zeigt, wie man einen Debian 9 Server (mit Apache2, BIND, Dovecot) für die Installation von ISPConfig 3.1 vorbereitet und wie man ISPConfig installiert. Das Webhosting-Kontrollpanel ISPConfig 3 ermöglicht es Ihnen, 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. Dieses Setup umfasst Apache (anstatt nginx), BIND und Dovecot.
1 Vorbemerkung
In diesem Tutorial werde ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100 und dem Gateway 192.168.1.1 verwenden. 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 (Optional)
Wenn Sie den OpenSSH-Server während der Systeminstallation nicht installiert haben, können Sie dies jetzt tun:
apt-get install ssh openssh-serverVon 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)
Wir werden in diesem Tutorial den nano Texteditor verwenden. Einige Benutzer bevorzugen den klassischen vi-Editor, daher werden wir hier beide Editoren installieren. Das Standardvi-Programm hat auf Debian und Ubuntu ein seltsames Verhalten; um dies zu beheben, installieren wir vim-nox:
apt-get install nano vim-noxWenn vi Ihr bevorzugter Editor ist, ersetzen Sie nano in den folgenden Befehlen durch vi, um Dateien zu bearbeiten.
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 Mailkonfiguration verursachen wird. Zuerst sollten Sie den Hostnamen in /etc/hosts überprüfen und ihn bei Bedarf ändern. Die Zeile sollte lauten: “IP-Adresse - Leerzeichen - vollständiger Hostname inkl. Domain - Leerzeichen - Subdomain-Teil”. Für unseren Hostnamen server1.example.com sollte die Datei wie folgt aussehen:
nano /etc/hosts127.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-allroutersDann bearbeiten Sie die Datei /etc/hostname:
nano /etc/hostnameSie sollte nur den Subdomain-Teil enthalten, in unserem Fall:
server1Schließlich starten Sie den Server neu, um die Änderung anzuwenden:
rebootMelden Sie sich erneut an und überprüfen Sie, ob der Hostname jetzt korrekt ist, mit diesen Befehlen:
hostname
hostname -fDie Ausgabe sollte wie folgt aussehen:
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Aktualisieren Sie Ihre Debian-Installation
Stellen Sie zunächst sicher, dass Ihre /etc/apt/sources.list das stretch/updates-Repository enthält (dies stellt sicher, dass Sie immer die neuesten Sicherheitsupdates erhalten), und dass die contrib- und non-free-Repositories aktiviert sind, da einige benötigte Pakete nicht im Hauptrepository enthalten sind.
nano /etc/apt/sources.listdeb 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-freeFühren Sie aus:
apt-get updateUm die apt-Paketdatenbank zu aktualisieren
apt-get upgradeund um die neuesten Updates zu installieren (sofern vorhanden).
6 Ändern Sie die Standard-Shell
/bin/sh ist ein Symlink zu /bin/dash, wir benötigen jedoch /bin/bash, nicht /bin/dash. Daher tun wir dies:
dpkg-reconfigure dashVerwenden Sie dash als Standard-System-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 ntpund 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 sudoWenn Sie MySQL anstelle von MariaDB bevorzugen, ersetzen Sie die Pakete “mariadb-client mariadb-server” im obigen Befehl durch “mysql-client mysql-server”.
Sie werden die folgenden Fragen gestellt:
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_installationBeantworten 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 Übertragungsports in Postfix:
nano /etc/postfix/master.cfKommentieren Sie die Abschnitte für die Übertragung und smtps wie folgt aus und fügen Sie bei Bedarf Zeilen hinzu, sodass dieser Abschnitt der master.cf-Datei genau wie der unten aussieht.
[...]
submission inet n - - - - 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 - - - - 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 restartWir möchten, dass MySQL 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 rootBearbeiten Sie die Datei /etc/mysql/debian.cnf und setzen Sie das MYSQL / MariaDB Root-Passwort dort zweimal in den Zeilen, die mit password beginnen.
nano /etc/mysql/debian.cnfDas MySQL-Root-Passwort, das hinzugefügt werden muss, wird hier in lesbarer Form 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 = /usrUm 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.confund fügen Sie diese Zeilen am Ende der Datei hinzu.
mysql soft nofile 65535
mysql hard nofile 65535Erstellen 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.confFügen Sie die folgenden Zeilen in diese Datei ein:
[Service]
LimitNOFILE=infinitySpeichern 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 jetzt, ob das Networking aktiviert ist. Führen Sie aus:
netstat -tap | grep mysqlDie Ausgabe sollte wie folgt aussehen:
root@server1:/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld
root@server1:/home/administrator#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 postgreyDie 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 spamassassin9.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 updateund 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 luarocksluarocks install lpcFügen Sie einen Shell-Benutzer für Metronome hinzu.
adduser --no-create-home --disabled-login --gecos 'Metronome' metronomeLaden 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 installMetronome wurde jetzt in /opt/metronome installiert.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.