Server Setup · 10 min read · Sep 30, 2025
Installation eines Web-, E-Mail- und MySQL-Datenbankclusters auf Debian 6.0 mit ISPConfig 3 - Seite 2
Die nächsten Schritte müssen auf Server 1 und Server 2 ausgeführt werden.
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-perlDie ISPConfig 3-Installation verwendet amavisd, das die SpamAssassin-Filterbibliothek intern lädt, sodass wir SpamAssassin stoppen können, um etwas RAM freizugeben:
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Dann können Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear und mcrypt wie folgt installiert werden:
apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wgetSie werden die folgende Frage sehen:
Webserver automatisch neu konfigurieren: <– apache2
Datenbank für phpmyadmin mit dbconfig-common konfigurieren? <– Nein
Führen Sie dann den folgenden Befehl aus, um die Apache-Module suexec, rewrite, ssl, actions und include zu aktivieren:
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digestPureFTPd und Quota können mit dem folgenden Befehl installiert werden:
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatoolBearbeiten Sie die Datei /etc/default/pure-ftpd-common…
vi /etc/default/pure-ftpd-common… und stellen Sie sicher, dass der Startmodus auf standalone gesetzt ist und VIRTUALCHROOT=true gesetzt ist:
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]Bearbeiten Sie die Datei /etc/inetd.conf, um zu verhindern, dass inetd versucht, ftp zu starten:
vi /etc/inetd.confWenn es eine Zeile gibt, die mit ftp stream tcp beginnt, kommentieren Sie sie aus (wenn es diese Datei nicht gibt, ist das in Ordnung, und Sie müssen /etc/inetd.conf nicht ändern):
[...]
#:STANDARD: Dies sind Standarddienste.
#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]Wenn Sie /etc/inetd.conf ändern mussten, starten Sie inetd jetzt neu:
/etc/init.d/openbsd-inetd restartJetzt 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 zulassen möchten, führen Sie aus:
echo 1 > /etc/pure-ftpd/conf/TLSUm TLS zu verwenden, müssen wir ein SSL-Zertifikat erstellen. Ich erstelle es in /etc/ssl/private/, daher erstelle ich zuerst dieses Verzeichnis:
mkdir -p /etc/ssl/private/Anschließend 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.pemLändercode (2 Buchstaben) [AU]: <– Geben Sie Ihren Ländercode ein (z.B. “DE”).
Bundesland oder Provinzname (vollständiger Name) [Some-State]: <– Geben Sie den Namen Ihres Bundeslandes oder Ihrer Provinz ein.
Ortsname (z.B. Stadt) []: <– Geben Sie Ihre Stadt ein.
Organisationsname (z.B. Firma) [Internet Widgits Pty Ltd]: <– Geben Sie den Namen Ihrer Organisation ein (z.B. den Namen Ihres Unternehmens).
Name der organisatorischen Einheit (z.B. Abteilung) []: <– Geben Sie den Namen Ihrer organisatorischen Einheit ein (z.B. “IT-Abteilung”).
Allgemeiner Name (z.B. IHR Name) []: <– Geben Sie den vollqualifizierten Domainnamen 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.pemStarten Sie dann PureFTPd neu:
/etc/init.d/pure-ftpd-mysql restartBearbeiten Sie /etc/fstab. Meine sieht so aus (ich habe usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 zur Partition mit dem Einhängepunkt / hinzugefügt):
vi /etc/fstab# /etc/fstab: statische Dateisysteminformationen.
#
# Verwenden Sie 'blkid', um die universell eindeutige Kennung für ein
# Gerät zu drucken; dies kann mit UUID= als eine robustere Methode verwendet werden, um Geräte zu benennen,
# die auch funktioniert, wenn Festplatten hinzugefügt und entfernt werden. Siehe fstab(5).
#
#
proc /proc proc defaults 0 0
# / war auf /dev/sda1 während der Installation
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
# Swap war auf /dev/sda5 während der Installation
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 Um Quota zu aktivieren, führen Sie diese Befehle aus:
mount -o remount /quotacheck -avugm
quotaon -avug
Installieren Sie den BIND DNS-Server:
apt-get -y install bind9 dnsutilsInstallieren Sie vlogger, webalizer und awstats:
apt-get -y install vlogger webalizer awstats geoip-databaseÖffnen Sie anschließend /etc/cron.d/awstats…
vi /etc/cron.d/awstats… und kommentieren Sie beide Cron-Jobs in dieser Datei aus:
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generieren Sie statische Berichte:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh Installieren Sie Jailkit: Jailkit wird nur benötigt, wenn Sie SSH-Benutzer chrooten möchten. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor ISPConfig installiert werden - es kann danach nicht installiert werden!):
apt-get -y install build-essential autoconf automake1.9 libtool flex bisoncd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*
Installieren Sie fail2ban: Dies ist optional, aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:
apt-get install fail2banUm fail2ban zu veranlassen, PureFTPd und Dovecot zu überwachen, erstellen Sie die Datei /etc/fail2ban/jail.local:
vi /etc/fail2ban/jail.local[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5
Erstellen Sie dann die folgenden beiden Filterdateien:
vi /etc/fail2ban/filter.d/pureftpd.conf[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex = vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex = Starten Sie fail2ban anschließend neu:
/etc/init.d/fail2ban restartUm den SquirrelMail-Webmail-Client zu installieren, führen Sie aus:
apt-get install squirrelmailErstellen Sie dann den folgenden Symlink…
ln -s /usr/share/squirrelmail/ /var/www/webmail… und konfigurieren Sie SquirrelMail:
squirrelmail-configureWir müssen SquirrelMail mitteilen, dass wir Dovecot-IMAP/-POP3 verwenden:
SquirrelMail Konfiguration : Lesen: config.php (1.4.0)
Hauptmenü –
1. Organisationspräferenzen
2. Servereinstellungen
3. Ordnerstandards
4. Allgemeine Optionen
5. Themen
6. Adressbücher
7. Nachricht des Tages (MOTD)
8. Plugins
9. Datenbank
10. Sprachen
D. Vordefinierte Einstellungen für bestimmte IMAP-Server festlegen
C Farbe einschalten
S Daten speichern
Q Beenden
Befehl >> <– D
SquirrelMail Konfiguration : Lesen: config.php
Während wir SquirrelMail gebaut haben, haben wir einige
Präferenzen entdeckt, die besser mit einigen
Servern funktionieren, die nicht so
gut mit anderen funktionieren. Wenn Sie Ihren
IMAP-Server auswählen, wird diese Option einige
vordefinierte Einstellungen für diesen Server festlegen.
Bitte beachten Sie, dass Sie trotzdem alles überprüfen müssen
und sicherstellen, dass alles korrekt ist. Dies ändert
nicht alles. Es gibt nur einige wenige Einstellungen, die dies ändern wird.
Bitte wählen Sie Ihren IMAP-Server:
bincimap = Binc IMAP-Server
courier = Courier IMAP-Server
cyrus = Cyrus IMAP-Server
dovecot = Dovecot Sicherer IMAP-Server
exchange = Microsoft Exchange IMAP-Server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = IMAP-Server der Universität von Washington
gmail = IMAP-Zugriff auf Google-Mail (Gmail)-Konten
quit = Nichts ändern
Befehl >> <– dovecot
SquirrelMail Konfiguration : Lesen: config.php
Während wir SquirrelMail gebaut haben, haben wir einige
Präferenzen entdeckt, die besser mit einigen
Servern funktionieren, die nicht so
gut mit anderen funktionieren. Wenn Sie Ihren
IMAP-Server auswählen, wird diese Option einige
vordefinierte Einstellungen für diesen Server festlegen.
Bitte beachten Sie, dass Sie trotzdem alles überprüfen müssen
und sicherstellen, dass alles korrekt ist. Dies ändert
nicht alles. Es gibt nur einige wenige Einstellungen, die dies ändern wird.
Bitte wählen Sie Ihren IMAP-Server:
bincimap = Binc IMAP-Server
courier = Courier IMAP-Server
cyrus = Cyrus IMAP-Server
dovecot = Dovecot Sicherer IMAP-Server
exchange = Microsoft Exchange IMAP-Server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = IMAP-Server der Universität von Washington
gmail = IMAP-Zugriff auf Google-Mail (Gmail)-Konten
quit = Nichts ändern
Befehl >> dovecot
imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false
Drücken Sie Enter, um fortzufahren… <– drücken Sie ENTER
SquirrelMail Konfiguration : Lesen: config.php (1.4.0)
Hauptmenü –
1. Organisationspräferenzen
2. Servereinstellungen
3. Ordnerstandards
4. Allgemeine Optionen
5. Themen
6. Adressbücher
7. Nachricht des Tages (MOTD)
8. Plugins
9. Datenbank
10. Sprachen
D. Vordefinierte Einstellungen für bestimmte IMAP-Server festlegen
C Farbe einschalten
S Daten speichern
Q Beenden
Befehl >> <– S
SquirrelMail Konfiguration : Lesen: config.php (1.4.0)
Hauptmenü –
1. Organisationspräferenzen
2. Servereinstellungen
3. Ordnerstandards
4. Allgemeine Optionen
5. Themen
6. Adressbücher
7. Nachricht des Tages (MOTD)
8. Plugins
9. Datenbank
10. Sprachen
D. Vordefinierte Einstellungen für bestimmte IMAP-Server festlegen
C Farbe einschalten
S Daten speichern
Q Beenden
Befehl >> <– Q
Als Nächstes aktivieren wir einen globalen Alias /webmail für Squirrelmail:
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
Jetzt öffnen Sie /etc/apache2/conf.d/squirrelmail.conf…
vi /etc/apache2/conf.d/squirrelmail.conf… und fügen Sie die folgenden Zeilen zum
[...]
Alias /webmail /usr/share/squirrelmail
Options FollowSymLinks
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
php_flag register_globals off
DirectoryIndex index.php
# Der Zugriff auf configtest ist standardmäßig eingeschränkt, um Informationslecks zu verhindern
order deny,allow
deny from all
allow from 127.0.0.1
[...]Erstellen Sie das Verzeichnis /var/lib/squirrelmail/tmp…
mkdir /var/lib/squirrelmail/tmp… und machen Sie es dem Benutzer www-data zugeordnet:
chown www-data /var/lib/squirrelmail/tmpLaden Sie Apache erneut:
/etc/init.d/apache2 reloadDas war’s schon - /etc/apache2/conf.d/squirrelmail.conf definiert einen Alias namens /squirrelmail, der auf das Installationsverzeichnis von SquirrelMail /usr/share/squirrelmail verweist.
Sie können jetzt SquirrelMail von Ihrer Website aus wie folgt aufrufen:
http://www.example.com/squirrelmailSie können auch von der ISPConfig-Steuerungspanel vhost wie folgt darauf zugreifen (dies erfordert keine Konfiguration in ISPConfig):
http://server1.example.com:8080/squirrelmailAls Nächstes installieren wir Unison. Unison wird verwendet, um die Verzeichnisse /var/www und /var/vmail zwischen Master und Slave zu synchronisieren.
apt-get install unisonJetzt installieren wir eine Unison-Konfigurationsdatei auf dem ersten Server.
Auf Server 1:
Erstellen Sie eine neue Datei /root/.unison/default.prf auf server1…
mkdir /root/.unison
vi /root/.unison/default.prf
… und fügen Sie den folgenden Inhalt hinzu:
# Wurzeln der Synchronisation
root = /var
root = ssh://192.168.0.106//var/
# Pfade zur Synchronisation
path = www
path = vmail
# Einige Regex, die Namen und Pfade ignorieren
#ignore = Path stats ## ignoriert /var/www/stats
#ignore = Path stats/* ## ignoriert /var/www/stats/*
#ignore = Path */stats ## ignoriert /var/www/somedir/stats, aber nicht /var/www/a/b/c/stats
#ignore = Name *stats ## ignoriert alle Dateien/Verzeichnisse, die mit "stats" enden
#ignore = Name stats* ## ignoriert alle Dateien/Verzeichnisse, die mit "stats" beginnen
#ignore = Name *.tmp ## ignoriert alle Dateien mit der Endung .tmp
# Wenn auf true gesetzt, überspringt dieses Flag die Benutzeroberfläche
# die Bestätigungen bei nicht konfliktären Änderungen zu fragen. (Genauer
# gesagt, wenn die Benutzeroberfläche mit der Festlegung der
# Ausbreitungsrichtung für einen Eintrag fertig ist und zum nächsten übergeht,
# überspringt sie alle nicht konfliktären Einträge und geht direkt zum nächsten Konflikt.)
auto=true
# Wenn dies auf true gesetzt ist, wird die Benutzeroberfläche keine Fragen stellen.
# Nicht konfliktäre Änderungen werden propagiert;
# Konflikte werden übersprungen.
batch=true
# !Wenn dies auf true gesetzt ist, fordert Unison eine zusätzliche
# Bestätigung an, wenn es scheint, dass die gesamte Kopie gelöscht wurde,
# bevor die Änderung propagiert wird. Wenn das Batch-Flag
# ebenfalls gesetzt ist, wird die Synchronisation abgebrochen. Wenn die Pfad
# Präferenz verwendet wird, wird die gleiche Bestätigung für
# oberste Pfade angefordert. (Momentan betrifft dieses Flag nur die
# textuelle Benutzeroberfläche.) Siehe auch die Mountpoint-Präferenz.
confirmbigdel=true
# Wenn diese Präferenz auf true gesetzt ist, verwendet Unison die
# Änderungszeit und Länge einer Datei als `Pseudo-Inode
# Nummer', wenn es Replikate auf Updates scannt, anstatt den
# vollständigen Inhalt jeder Datei zu lesen. Unter Windows kann dies dazu führen,
# dass Unison ein Update übersieht, wenn die Änderungszeit
# und Länge der Datei durch das Update unverändert bleiben.
# Unison wird jedoch niemals ein solches Update mit einer
# Änderung aus dem anderen Replikat überschreiben, da es immer eine
# sichere Überprüfung auf Updates direkt vor der Propagierung einer
# Änderung durchführt. Daher ist es sinnvoll, diesen Schalter unter Windows
# die meiste Zeit zu verwenden und gelegentlich Unison einmal mit fastcheck
# auf false auszuführen, wenn Sie besorgt sind, dass Unison ein Update
# übersehen haben könnte.
# Der Standardwert der Präferenz ist auto, was dazu führt,
# dass Unison schnelles Prüfen auf Unix-Replikaten verwendet (wo es sicher ist)
# und langsames Prüfen auf Windows-Replikaten. Zur Rückwärtskompatibilität
# können ja, nein und standard anstelle von true, false und auto verwendet werden.
# Siehe den Abschnitt "Schnelles Prüfen" für weitere Informationen.
fastcheck=true
# Wenn dieses Flag auf true gesetzt ist, werden die Gruppenattribute der
# Dateien synchronisiert. Ob die Gruppennamen oder die Gruppen
# Identifikatoren synchronisiert werden, hängt von der Präferenz numerids ab.
group=true
# Wenn dieses Flag auf true gesetzt ist, werden die Eigentümerattribute der
# Dateien synchronisiert. Ob die Eigentümernamen oder die Eigentümer
# Identifikatoren synchronisiert werden, hängt von der Präferenz
# extttnumerids ab.
owner=true
# Die Einbeziehung der Präferenz -prefer root bewirkt, dass Unison immer
# Konflikte zugunsten von root löst, anstatt den Benutzer um
# Anleitung zu bitten. (Die Syntax von root ist die gleiche wie für
# die root-Präferenz, plus die speziellen Werte neuer und älter.)
# Diese Präferenz wird von der preferpartial-Präferenz überschrieben.
# Diese Präferenz sollte nur verwendet werden, wenn Sie sicher sind, dass Sie
# wissen, was Sie tun!
prefer=newer
# Wenn diese Präferenz auf true gesetzt ist, wird die textuelle Benutzeroberfläche
# nichts drucken, außer im Falle von Fehlern.
# Das Setzen von silent auf true setzt automatisch die Batch-Präferenz
# auf true.
silent=true
# Wenn dieses Flag auf true gesetzt ist, werden die Änderungszeiten von Dateien
# (aber nicht die Änderungszeiten von Verzeichnissen) propagiert.
times=trueWir möchten die Synchronisation automatisieren, deshalb erstellen wir einen Cron-Job dafür auf server1.example.tld:
crontab -e*/5 * * * * /usr/bin/unison &> /dev/nullErhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.