Server Installation · 12 min read · Nov 01, 2025

Der perfekte Server CentOS 7.2 mit Apache, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.1 - Seite 2

7 Dovecot installieren

Dovecot kann wie folgt installiert werden:

yum -y install dovecot dovecot-mysql dovecot-pigeonhole

Erstellen Sie eine leere dovecot-sql.conf-Datei und einen Symlink:

touch /etc/dovecot/dovecot-sql.conf  
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf

Jetzt erstellen Sie die Systemstartlinks und starten Dovecot:

systemctl enable dovecot  
systemctl start dovecot

8 Postfix installieren

Postfix kann wie folgt installiert werden:

yum -y install postfix

Dann schalten Sie Sendmail aus und starten Postfix und MariaDB (MySQL):

systemctl enable mariadb.service  
systemctl start mariadb.service
systemctl stop sendmail.service  
systemctl disable sendmail.service  
systemctl enable postfix.service  
systemctl restart postfix.service

Wir deaktivieren Sendmail, um sicherzustellen, dass es nicht gestartet wird, falls es auf Ihrem Server installiert ist. Daher kann die Fehlermeldung “Failed to issue method call: Unit sendmail.service not loaded.” ignoriert werden.

9 Getmail installieren

Getmail kann wie folgt installiert werden:

yum -y install getmail

10 MySQL-Passwörter festlegen und phpMyAdmin konfigurieren

Setzen Sie Passwörter für das MySQL-Root-Konto:

mysql_secure_installation
[root@server1 tmp]# mysql_secure_installation  
  
  
HINWEIS: DAS AUSFÜHREN ALLER TEILE DIESES SCRIPTS WIRD FÜR ALLE MariaDB  
SERVER IM PRODUKTIONSEINSATZ EMPFOHLEN! BITTE JEDEN SCHRITT SORGFÄLTIG LESEN!
Um sich bei MariaDB anzumelden, um es abzusichern, benötigen wir das aktuelle  
Passwort für den Root-Benutzer. Wenn Sie gerade MariaDB installiert haben und  
Sie das Root-Passwort noch nicht festgelegt haben, wird das Passwort leer sein,  
also sollten Sie hier einfach die Eingabetaste drücken.
Geben Sie das aktuelle Passwort für root ein (Eingabetaste für keines):  
OK, Passwort erfolgreich verwendet, weiter...
Das Festlegen des Root-Passworts stellt sicher, dass niemand ohne die richtige  
Autorisierung auf den MariaDB-Root-Benutzer zugreifen kann.  
  
Root-Passwort festlegen? [Y/n] <-- EINGABETASTE  
Neues Passwort: <-- IhrRootSQLPasswort  
Neues Passwort erneut eingeben: <-- IhrRootSQLPasswort  
Passwort erfolgreich aktualisiert!  
Aktualisieren der Berechtigungstabellen..  
 ... Erfolg!  
  
  
Standardmäßig hat eine MariaDB-Installation einen anonymen Benutzer, der es jedem  
ermöglicht, sich bei MariaDB anzumelden, ohne dass ein Benutzerkonto für  
ihn erstellt werden muss. Dies ist nur für Testzwecke gedacht und soll die  
Installation etwas reibungsloser gestalten. Sie sollten sie entfernen, bevor Sie  
in eine Produktionsumgebung wechseln.  
  
Anonyme Benutzer entfernen? [Y/n] <-- EINGABETASTE  
 ... Erfolg!  
  
Normalerweise sollte root nur von 'localhost' aus verbunden werden dürfen.  
Dies stellt sicher, dass niemand das Root-Passwort über das Netzwerk erraten kann.  
  
Root-Login aus der Ferne verbieten? [Y/n] <-- EINGABETASTE  
 ... Erfolg!  
  
Standardmäßig kommt MariaDB mit einer Datenbank namens 'test', auf die jeder  
Zugriff hat. Dies ist ebenfalls nur für Testzwecke gedacht und sollte entfernt  
werden, bevor Sie in eine Produktionsumgebung wechseln.  
  
Testdatenbank und Zugriff darauf entfernen? [Y/n] <-- EINGABETASTE  
 - Testdatenbank wird gelöscht...  
 ... Erfolg!  
 - Berechtigungen auf Testdatenbank entfernen...  
 ... Erfolg!  
  
Das Aktualisieren der Berechtigungstabellen stellt sicher, dass alle bisher  
getätigten Änderungen sofort wirksam werden.  
  
Berechtigungstabellen jetzt aktualisieren? [Y/n] <-- EINGABETASTE  
 ... Erfolg!  
  
Aufräumen...  
  
  
Alles erledigt! Wenn Sie alle oben genannten Schritte abgeschlossen haben, sollte Ihre MariaDB-Installation jetzt sicher sein.  
  
Danke, dass Sie MariaDB verwenden!  
  
[root@server1 tmp]#

Jetzt konfigurieren wir phpMyAdmin. Wir ändern die Apache-Konfiguration, damit phpMyAdmin Verbindungen nicht nur von localhost zulässt (indem wir die beiden “Require ip”-Zeilen auskommentieren und die neue Zeile “Require all granted” im -Block hinzufügen):

nano /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Webbasierter MySQL-Browser, der in php geschrieben ist
#
# Erlaubt standardmäßig nur localhost
#
# Aber phpMyAdmin für jeden anderen als localhost zuzulassen, sollte als  
# gefährlich angesehen werden, es sei denn, es ist ordnungsgemäß durch SSL  
# gesichert

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin


   
     # Apache 2.4
     
     #  Require ip 127.0.0.1
     #  Require ip ::1  
        Require all granted
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   

            

Als nächstes ändern wir die Authentifizierung in phpMyAdmin von Cookie auf HTTP:

nano /etc/phpMyAdmin/config.inc.php
[...]
/* Authentifizierungstyp */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

Dann erstellen wir die Systemstartlinks für Apache und starten ihn:

systemctl enable  httpd.service  
systemctl restart  httpd.service

Jetzt können Sie Ihren Browser auf http://server1.example.com/phpmyadmin/ oder http://192.168.1.100/phpmyadmin/ lenken und sich mit dem Benutzernamen root und Ihrem neuen Root-MySQL-Passwort anmelden.

11 Amavisd-new, SpamAssassin und ClamAV installieren

Um amavisd-new, SpamAssassin und clamav zu installieren, führen Sie den folgenden Befehl aus:

yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysql

Bearbeiten Sie die freshclam-Konfigurationsdatei /etc/freshclam.conf

nano /etc/freshclam.conf

und kommentieren Sie die Zeile “Beispiel” aus

[....]  
# Beispiel  
[....]

Dann starten wir freshclam, amavisd und clamd.amavisd:

sa-update  
freshclam  
systemctl enable amavisd.service  
systemctl start amavisd.service  
systemctl start [email protected]

12 Apache mit mod_php, mod_fcgi/PHP5, PHP-FPM installieren

ISPConfig 3 ermöglicht es Ihnen, mod_php, mod_fcgi/PHP5, cgi/PHP5 und suPHP pro Website zu verwenden.

Wir können Apache2 mit mod_php5, mod_fcgid und PHP5 wie folgt installieren:

yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm wget

Als nächstes öffnen wir /etc/php.ini…

nano /etc/php.ini

… und ändern die Fehlerberichterstattung (damit keine Hinweise mehr angezeigt werden), setzen die Zeitzone und kommentieren cgi.fix_pathinfo=1 aus:

[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[...]
; cgi.fix_pathinfo bietet *echte* PATH_INFO/PATH_TRANSLATED-Unterstützung für CGI. PHP's
; vorheriges Verhalten war es, PATH_TRANSLATED auf SCRIPT_FILENAME zu setzen und nicht zu verstehen,
; was PATH_INFO ist. Für weitere Informationen zu PATH_INFO siehe die CGI-Spezifikationen. Das Setzen
; dieses Wertes auf 1 bewirkt, dass PHP CGI seine Pfade gemäß der Spezifikation korrigiert. Ein Wert
; von null bewirkt, dass PHP sich wie zuvor verhält. Standard ist 1. Sie sollten Ihre Skripte
; so anpassen, dass sie SCRIPT_FILENAME anstelle von PATH_TRANSLATED verwenden.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1  
[...]  
date.timezone = 'Europe/Berlin'
[...]

Aktivieren Sie httpd und PHP-FPM, damit sie beim Booten gestartet werden, und starten Sie den PHP-FPM-Dienst.

systemctl start php-fpm.service  
systemctl enable php-fpm.service  
systemctl enable httpd.service

Schließlich starten wir Apache neu:

systemctl restart httpd.service

Jetzt fügen wir Unterstützung für Let’s Encrypt hinzu.

mkdir /opt/certbot  
cd /opt/certbot  
wget https://dl.eff.org/certbot-auto  
chmod a+x ./certbot-auto

Führen Sie jetzt den Befehl certbot-auto aus, der die Software und ihre Abhängigkeiten herunterlädt und installiert.

./certbot-auto

Der Befehl wird Ihnen dann mitteilen, dass “keine Namen in Ihren Konfigurationsdateien gefunden wurden” und fragt, ob er fortfahren soll. Bitte wählen Sie hier “nein”, da die Zertifikate von ISPConfig erstellt werden.

13 Installation von mod_python

Das Apache-Modul mod_python ist nicht als RPM-Paket verfügbar, daher werden wir es aus dem Quellcode kompilieren. Der erste Schritt besteht darin, die Python-Entwicklungsdateien zu installieren und die aktuelle mod_python-Version als tar.gz-Datei herunterzuladen.

yum -y install python-devel
cd /usr/local/src/  
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz  
tar xfz mod_python-3.5.0.tgz  
cd mod_python-3.5.0

und dann das Modul konfigurieren und kompilieren:

./configure  
make  
make install

und das Modul in Apache aktivieren:

echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf  
systemctl restart httpd.service

14 PureFTPd installieren

PureFTPd kann mit dem folgenden Befehl installiert werden:

yum -y install pure-ftpd

Dann erstellen Sie die Systemstartlinks und starten PureFTPd:

systemctl enable pure-ftpd.service  
systemctl start pure-ftpd.service

Jetzt 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.

OpenSSL wird von TLS benötigt; um OpenSSL zu installieren, führen wir einfach aus:

yum install openssl

Öffnen Sie /etc/pure-ftpd/pure-ftpd.conf…

nano /etc/pure-ftpd/pure-ftpd.conf

Wenn Sie FTP- und TLS-Sitzungen zulassen möchten, setzen Sie TLS auf 1:

[...]
# Diese Option kann drei Werte annehmen:
# 0 : SSL/TLS-Verschlüsselungsschicht deaktivieren (Standard).
# 1 : sowohl traditionelle als auch verschlüsselte Sitzungen akzeptieren.
# 2 : Verbindungen ablehnen, die keine SSL/TLS-Sicherheitsmechanismen verwenden,
#     einschließlich anonymer Sitzungen.
# Kommentieren Sie dies nicht blind aus. Stellen Sie sicher, dass:
# 1) Ihr Server mit SSL/TLS-Unterstützung kompiliert wurde (--with-tls),
# 2) Ein gültiges Zertifikat vorhanden ist,
# 3) Nur kompatible Clients sich anmelden können.

TLS                      1
[...]

Um 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.pem

Ländercode (2 Buchstaben) [XX]: <– Geben Sie Ihren Ländercode ein (z.B. “DE”).
Bundesland oder Provinzname (vollständiger Name) []: <– Geben Sie den Namen Ihres Bundeslandes oder Ihrer Provinz ein.
Ortsname (z.B. Stadt) [Default City]: <– Geben Sie Ihre Stadt ein.
Name der Organisation (z.B. Firma) [Default Company 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 oder der Hostname Ihres Servers) []: <– Geben Sie den vollständig qualifizierten 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

Schließlich starten Sie PureFTPd neu:

systemctl restart pure-ftpd.service

Das war’s. Sie können jetzt versuchen, sich mit Ihrem FTP-Client zu verbinden; Sie sollten jedoch Ihren FTP-Client so konfigurieren, dass er TLS verwendet.

15 BIND installieren

Wir können BIND wie folgt installieren:

yum -y install bind bind-utils haveged

Machen Sie eine Sicherung der vorhandenen /etc/named.conf-Datei und erstellen Sie eine neue wie folgt:

cp /etc/named.conf /etc/named.conf_bak  
cat /dev/null > /etc/named.conf  
nano /etc/named.conf
// named.conf
//
// Bereitgestellt vom Red Hat bind-Paket zur Konfiguration des ISC BIND named(8) DNS
// Servers als nur Caching-Nameserver (nur als localhost-DNS-Resolver).
//
// Siehe /usr/share/doc/bind*/sample/ für Beispiel-named-Konfigurationsdateien.
//
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
                allow-recursion {"none";};
        recursion no;
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.conf.local";

Erstellen Sie die Datei /etc/named.conf.local, die am Ende von /etc/named.conf enthalten ist ( /etc/named.conf.local wird später von ISPConfig gefüllt, wenn Sie DNS-Zonen in ISPConfig erstellen):

touch /etc/named.conf.local

Dann erstellen wir die Startlinks und starten BIND:

systemctl enable named.service  
systemctl start named.service

16 Webalizer und AWStats installieren

AWStats kann wie folgt installiert werden:

yum -y install awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

Webalizer muss aus dem Quellcode kompiliert werden.

yum install -y libpng-devel gd-devel  
cd /tmp  
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz  
tar xvfz webalizer-2.23-08-src.tgz  
cd webalizer-2.23-08  
./configure  
make  
make install

17 Jailkit installieren

Jailkit wird verwendet, um SSH-Benutzer und Cronjobs zu chrooten. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor ISPConfig installiert werden - es kann danach nicht installiert werden!):

cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz  
tar xvfz jailkit-2.19.tar.gz  
cd jailkit-2.19  
./configure  
make  
make install  
cd ..  
rm -rf jailkit-2.19*

18 fail2ban installieren

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

yum -y install iptables-services fail2ban fail2ban-systemd  
systemctl stop firewalld.service  
systemctl mask firewalld.service  
systemctl disable firewalld.service  
systemctl stop firewalld.service

Als nächstes erstellen wir die /etc/fail2ban/jail.local-Datei und aktivieren die Überwachung für SSH, E-Mail und FTP-Dienste.

nano /etc/fail2ban/jail.local

Fügen Sie den folgenden Inhalt in die jail.local-Datei ein:

[sshd]  
enabled = true  
action = iptables[name=sshd, port=ssh, protocol=tcp]  
  
[pure-ftpd]  
enabled = true  
action = iptables[name=FTP, port=ftp, protocol=tcp]  
maxretry = 3  
  
[dovecot]  
enabled = true  
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp]  
maxretry = 3

Dann erstellen Sie die Systemstartlinks für fail2ban und starten Sie es:

systemctl enable fail2ban.service  
systemctl start fail2ban.service

19 rkhunter installieren

rkhunter kann wie folgt installiert werden:

yum -y install rkhunter

20 Mailman installieren

Wenn Sie Mailinglisten mit Mailman auf Ihrem Server verwalten möchten, installieren Sie jetzt Mailman. Mailman wird von ISPConfig unterstützt, sodass Sie später neue Mailinglisten über ISPConfig erstellen können.

yum -y install mailman

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

touch /var/lib/mailman/data/aliases  
postmap /var/lib/mailman/data/aliases  
/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Geben Sie die E-Mail-Adresse der Person ein, die die Liste verwaltet: <– E-Mail-Adresse des Administrators, z.B. [email protected]
Anfängliches Mailman-Passwort: <– Administrationspasswort für die Mailingliste
Um Ihre Mailingliste zu erstellen, müssen Sie Ihre /etc/aliases (oder
entsprechende) Datei bearbeiten, indem Sie die folgenden Zeilen hinzufügen und möglicherweise
das Programm newaliases ausführen:

Mailingliste Mailman

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Drücken Sie die Eingabetaste, um den Mailman-Besitzer zu benachrichtigen… <– EINGABETASTE

[root@server1 tmp]#

Öffnen Sie danach /etc/aliases…

nano /etc/aliases

… und fügen Sie die folgenden Zeilen hinzu:

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

Führen Sie danach aus:

newaliases

und starten Sie Postfix neu:

systemctl restart postfix.service

Öffnen Sie jetzt die Mailman-Apache-Konfigurationsdatei /etc/httpd/conf.d/mailman.conf…

nano /etc/httpd/conf.d/mailman.conf

… und fügen Sie die Zeile ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/ hinzu. Kommentieren Sie Alias /pipermail/ /var/lib/mailman/archives/public/ aus und fügen Sie die Zeile Alias /pipermail /var/lib/mailman/archives/public/ hinzu:

#
#  httpd-Konfigurationseinstellungen für die Verwendung mit Mailman.
#

ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/

    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all



#Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /pipermail /var/lib/mailman/archives/public/

    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    AddDefaultCharset Off


# Kommentieren Sie die folgende Zeile aus, um Abfragen an /mailman auf die
# listinfo-Seite umzuleiten (empfohlen).

# RedirectMatch ^/mailman[/]*$ /mailman/listinfo

Starten Sie Apache neu:

systemctl restart httpd.service

Erstellen Sie die Systemstartlinks für Mailman und starten Sie es:

systemctl enable mailman.service  
systemctl start mailman.service

Nachdem Sie ISPConfig 3 installiert haben, können Sie Mailman wie folgt aufrufen: Sie können das Alias /cgi-bin/mailman für alle Apache-VHosts verwenden (bitte beachten Sie, dass suExec und CGI für alle VHosts deaktiviert sein müssen, von denen Sie auf Mailman zugreifen möchten!), was bedeutet, dass Sie auf die Mailman-Administrationsoberfläche für eine Liste unter http:///cgi-bin/mailman/admin/ zugreifen können, und die Webseite für Benutzer einer Mailingliste finden Sie unter http:///cgi-bin/mailman/listinfo/.

Unter http:///pipermail/ finden Sie die Archive der Mailingliste.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.