ISPConfig Perfect Multiserver Einrichtung unter Ubuntu 20.04 und Debian 10
5 Installieren des zweiten Mailservers
Melden Sie sich als root an oder führen Sie
su -
um root-Benutzer auf Ihrem Server zu werden, bevor Sie fortfahren. WICHTIG: Sie müssen ’su -‚ und nicht nur ’su‘ verwenden, sonst wird Ihre PATH-Variable von Debian falsch gesetzt.
5.1 Konfigurieren Sie den Hostnamen
Der Hostname Ihres Servers sollte eine Subdomain wie „mx2.example.com“ sein. Verwenden Sie keinen Domain-Namen ohne Subdomain-Teil wie „example.com“ als Hostname, da dies später zu Problemen bei der Mail-Einrichtung führen wird. Zunächst sollten Sie den Hostnamen in /etc/hosts überprüfen und gegebenenfalls ändern. Die Zeile sollte lauten: „IP-Adresse – Leerzeichen – vollständiger Hostname inkl. Domain – Leerzeichen – Subdomainteil“. Für unseren Hostnamen mx2.example.com soll die Datei wie folgt aussehen:
nano /etc/hosts
127.0.0.1 localhost.localdomain localhost # This line should be changed on every node to the correct servername: 127.0.1.1 mx2.example.com mx2 # These lines are the same on every node: 10.0.64.12 panel.example.com panel 10.0.64.13 web01.example.com web01 10.0.64.14 mx1.example.com mx1 10.0.64.15 mx2.example.com mx2 10.0.64.16 ns1.example.com ns1 10.0.64.17 ns2.example.com ns2 10.0.64.18 webmail.example.com webmail # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Wie Sie sehen können, haben wir auch die Hostnamen unserer anderen Server hinzugefügt, damit diese später über das interne Netzwerk kommunizieren können.
Bearbeiten Sie anschließend die Datei /etc/hostname:
nano /etc/hostname
Sie soll in unserem Fall nur den Teil mit der Subdomain enthalten:
mx2
Starten Sie schließlich den Server neu, um die Änderung zu übernehmen:
systemctl reboot
Melden Sie sich erneut an und überprüfen Sie mit diesen Befehlen, ob der Hostname nun korrekt ist:
hostname hostname -f
Die Ausgabe sollte wie folgt aussehen:
root@mx2:~$ hostname mx2 root@mx2:~$ hostname -f mx2.example.com
5.2 ISPConfig installieren
Jetzt können wir den Auto-Installer für alle Pakete und ISPConfig ausführen:
wget -O - https://get.ispconfig.org | sh -s -- --no-dns --no-roundcube --no-mailman --use-php=system --use-unbound --interactive
Nach einiger Zeit werden Sie sehen:
WARNING! This script will reconfigure your complete server! It should be run on a freshly installed server and all current configuration that you have done will most likely be lost! Type 'yes' if you really want to continue:
Antworten Sie mit „Ja“ und drücken Sie Enter. Der Installer wird nun gestartet.
Wenn die Installation und Konfiguration der Pakete abgeschlossen ist, wird das Root-Passwort für MySQL auf mx2 angezeigt. Schreiben Sie es auf (zusammen mit dem Servernamen, um spätere Verwechslungen zu vermeiden).
Nun werden wir einige Fragen beantworten müssen, da wir den interaktiven Modus verwenden. Dies ist notwendig, da dieser Server zu Ihrem Multiserver-Setup hinzugefügt wird.
[INFO] Installing ISPConfig3. [INFO] Your MySQL root password is: kl3994aMsfkkeE
——————————————————————————–
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `–.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `–. \ __/ | | / _ \| ‚_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
——————————————————————————–
>> 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]: <– expert
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [mx2.example.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 the MySQL password the script just gave you
MySQL database to create [dbispconfig]: <– Hit Enter
MySQL charset [utf8]: <– Hit Enter
The next two questions are about the internal ISPConfig database user and password.
It is recommended to accept the defaults which are ‚ispconfig‘ as username and a random password.
If you use a different password, use only numbers and chars for the password.
ISPConfig mysql database username [ispconfig]: <– Hit Enter
ISPConfig mysql database password [aakl203920459853sak20284204]: <– Hit Enter
Shall this server join an existing ISPConfig multiserver setup (y,n) [n]: <– y
MySQL master server hostname []: <– panel.example.com
MySQL master server port []: <– Hit Enter
MySQL master server root username [root]: <– Hit Enter
MySQL master server root password []: <– the password you gave the external root user on the master server.
MySQL master server database name [dbispconfig]: <– Hit Enter
Adding ISPConfig server record to database.
Configure Mail (y,n) [y]: <– Hit enter
Configuring Postgrey
Configuring Postfix
Generating a 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]: <– Hit enter
State or Province Name (full name) [Some-State]: <– Hit enter
Locality Name (eg, city) []: <– Hit enter
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <– Hit enter
Organizational Unit Name (eg, section) []: <– Hit enter
Common Name (e.g. server FQDN or YOUR name) []: <– Hit enter
Email Address []: <– Hit enter
[WARN] autodetect for Mailman failed
Force configure Mailman (y,n) [n]: <– Hit enter
Skipping Mailman
Configuring Dovecot
Creating new DHParams file, this takes several minutes. Do not interrupt the script.
Configuring Spamassassin
[WARN] autodetect for Amavisd failed
Force configure Amavisd (y,n) [n]: <– Hit enter
Skipping Amavisd
Configuring Rspamd
Configuring Getmail
Configuring Jailkit
Configuring Pureftpd
Configure DNS Server (y,n) [y]: <– n
The Web Server option has to be enabled when you want run a web server or when this node shall host the ISPConfig interface.
Configure Web Server (y,n) [y]: <– Hit enter
Configuring Apache
Configuring vlogger
[WARN] autodetect for OpenVZ failed
Force configure OpenVZ (y,n) [n]: <– Hit Enter
Skipping OpenVZ
Configure Firewall Server (y,n) [y]: <– Hit Enter
Configuring Ubuntu Firewall
[WARN] autodetect for Metronome XMPP Server failed
Force configure Metronome XMPP Server (y,n) [n]: <– Hit Enter
Skipping Metronome XMPP Server
Configuring Fail2ban
Install ISPConfig Web Interface (y,n) [n]: <– Hit Enter
Do you want to create SSL certs for your server? (y,n) [y]: <– Hit Enter
Checking / creating certificate for mx2.example.com
Using certificate path /etc/letsencrypt/live/mx2.example.com
Using apache for certificate validation
Symlink ISPConfig SSL certs to Postfix? (y,n) [y]: <– Hit Enter
Symlink ISPConfig SSL certs to Pure-FTPd? Creating dhparam file may take some time. (y,n) [y]: <– Hit Enter
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
………………….+…………………………………….+……………
Configuring Apps vhost
Configuring DBServer
Installing ISPConfig crontab
no crontab for getmail
Detect IP addresses
Restarting services …
Installation completed.
[INFO] Adding php versions to ISPConfig.
[INFO] Checking all services are running.
[INFO] mysql: OK
[INFO] clamav-daemon: OK
[INFO] postfix: OK
[INFO] bind9: OK
[INFO] pureftpd: OK
[INFO] apache2: OK
[INFO] rspamd: OK
[INFO] redis-server: OK
[INFO] dovecot: OK
[INFO] Installation ready.
[INFO] Your MySQL root password is: kl3994aMsfkkeE
[INFO] Warning: Please delete the log files in /tmp/ispconfig-ai/var/log/setup-* once you don’t need them anymore because they contain your passwords!
5.3 Einrichten der Replikation für Dovecot
Wir werden dsync verwenden, um die E-Mails zwischen mx1 und mx2 zu synchronisieren, zur Redundanz.
Die benutzerdefinierten Einstellungen für Dovecot müssen in /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master gespeichert werden, damit sie beim Update von ISPConfig nicht verloren gehen.
nano /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master
Fügen Sie dort das Folgende ein:
protocol imap { mail_plugins = $mail_plugins quota imap_quota notify replication } protocol pop3 { mail_plugins = $mail_plugins quota notify replication } protocol lda { mail_plugins = $mail_plugins sieve quota notify replication } protocol lmtp { mail_plugins = $mail_plugins sieve quota notify replication } doveadm_password = /(:&p-J:4e%?\@Q-;VSE#3Dmfm[fVK&r-mx2 doveadm_port = 12345 replication_max_conns = 50
ssl_client_ca_dir = /etc/ssl/certs
# Replicator process should be started at startup, so it can start replicating users immediately:
service replicator {
process_min_avail = 1
}
# The mail processes need to have access to the replication-notify fifo and socket.
service aggregator {
fifo_listener replication-notify-fifo {
user = vmail
mode = 0666
}
unix_listener replication-notify {
user = vmail
mode = 0666
}
}
# Enable doveadm replicator commands
service replicator {
unix_listener replicator-doveadm {
mode = 0666
}
}
# Create a listener for doveadm-server
service doveadm {
user = vmail
inet_listener {
port = 12345
ssl = yes
}
}
service config {
unix_listener config {
user = vmail
}
}
plugin {
mail_replica = tcps:mx1.example.com
}
Ersetzen Sie das doveadm_password durch Ihr eigenes Passwort – machen Sie es aus Sicherheitsgründen zu einer langen und zufälligen Zeichenfolge. Es muss auf beiden Servern das gleiche sein.
Ersetzen Sie
mail_replica = tcps:mx1.example.com
durch Ihren eigenen Hostnamen von mx1.
Um diese Änderungen anzuwenden, kopieren Sie die Datei in den dovecot-Ordner und starten Sie dovecot neu:
cp /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master /etc/dovecot/conf.d/99-ispconfig-custom-config.conf systemctl restart dovecot
5.4 Einrichten der Synchronisierung für Rspamd
Rspamd hat eine schöne Web-Oberfläche. Wir werden unsere Server als Nachbarn einrichten, damit Sie die Einstellungen, Statistiken und andere Daten in einem Panel sehen können.
nano /etc/rspamd/local.d/options.inc
Fügen Sie diese Zeilen hinzu:
neighbours { mx1 { host = "https://mx1.example.com:443"; path = "/rspamd/"; } mx2 { host = "https://mx2.example.com:443"; path = "/rspamd/"; } }
Ersetzen Sie die Hostnamen durch die richtigen Hostnamen für Ihren Haupt- und Sekundär-Nameserver.
Nun fügen wir in ISPConfig eine Website für diesen Server hinzu. Gehen Sie zu Sites -> Add new website und fügen Sie die Website „mx2.example.com“ hinzu. Achten Sie darauf, dass Sie diese auf dem richtigen Server anlegen (mx2.example.com). Deaktivieren Sie Auto-Subdomain, und aktivieren Sie SSL + Let’s Encrypt. Gehen Sie dann zu Optionen und fügen Sie dies in den Abschnitt Apache-Direktiven ein:
RewriteEngine On
RewriteRule ^/rspamd$ /rspamd/ [R,L]
RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P]
Header set Access-Control-Allow-Origin https://mx1.example.com
Ersetzen Sie mx1.example.com durch den Hostnamen des sekundären Nameservers.
Zum Schluss müssen wir noch einige Apache-Module aktivieren und unsere Dienste neu starten:
a2enmod proxy_balancer proxy_http systemctl restart rspamd systemctl restart apache2
Jetzt setzen wir ein Passwort für die Rspamd-Benutzeroberfläche auf MX1, die wir als Web-UI für unseren Rspamd-Cluster verwenden werden.
Melden Sie sich in ISPConfig als Admin an und gehen Sie zu System -> Server Config -> mx1.example.com -> Mail -> Rspamd Password.
Geben Sie ein neues Passwort ein und klicken Sie auf Speichern. Gehen Sie dann zu System -> Server Config -> mx2.example.com -> Mail -> Rspamd Password und geben Sie dort das gleiche Passwort ein. Warten Sie, bis die Änderungen propagiert werden. Wenn das geschehen ist, können Sie sich mit Ihrem Passwort unter https://mx1.example.com/rspamd/ in Ihrem Browser bei Rspamd anmelden.
5.5 Absicherung des Mailservers mit einem gültigen SSL-Zertifikat
Für ein funktionierendes DSYNC- und Roundcube-Setup muss ein gültiges SSL-Zertifikat für die verwendeten Hostnamen vorhanden sein. Dieses Zertifikat kann nicht selbst signiert sein. Wenn Sie zusätzliche Hostnamen für diesen Server verwenden, wie z. B. imap.example.com und smtp.example.com, oder wenn das Installationsprogramm bei der Installation kein gültiges Zertifikat erstellen konnte, folgen Sie dieser Anleitung, um ein gültiges Zertifikat für Ihren Mailserver einzurichten: https://www.howtoforge.com/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-certificate/
5.6 Einrichten der Firewall
Melden Sie sich in der ISPConfig-Benutzeroberfläche an und gehen Sie zu System -> Firewall. Klicken Sie dann auf „Neuen Firewall-Eintrag hinzufügen“.
Achten Sie darauf, dass Sie den richtigen Server auswählen. Für unseren Mailserver müssen wir die folgenden Ports öffnen:
TCP:
22,25,80,110,143,443,465,587,993,995
Es müssen keine UDP-Ports über die Benutzeroberfläche geöffnet werden.
Wir werden auch Port 3306 öffnen, der für MySQL verwendet wird, und Port 12345, der für dsync verwendet wird, aber aus Sicherheitsgründen nur von unserem lokalen Netzwerk aus. Führen Sie dazu den folgenden Befehl von der CLI aus, nachdem die Änderung aus dem ISPConfig-Panel propagiert wurde (wenn der rote Punkt verschwunden ist):
ufw allow from 10.0.64.0/24 to any port 3306 proto tcp ufw allow from 10.0.64.0/24 to any port 12345 proto tcp
5.7 MX2 von MX1 in ISPConfig spiegeln
Um die Einrichtung abzuschließen, müssen Sie die Spiegelung zwischen mx1 und mx2 aktivieren. Loggen Sie sich dazu in ISPConfig ein, gehen Sie zu System -> mx2.example.com -> „Is mirror of Server“. Wählen Sie mx1.example.com und klicken Sie auf speichern.
Unser sekundärer Mailserver ist nun installiert. Im nächsten Schritt werden wir den Haupt-DNS-Server installieren.