ISPConfig Perfect Multiserver Einrichtung unter Ubuntu 20.04 und Debian 10

4 Installieren des ersten Mailservers

Melden Sie sich als root an oder führen Sie

su -

aus, 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.

4.1 Konfigurieren Sie den Hostnamen

Der Hostname Ihres Servers sollte eine Subdomain wie „mx1.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 mx1.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 mx1.example.com mx1
# 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:

mx1

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@mx1:~$ hostname
mx1
root@mx1:~$ hostname -f
mx1.example.com

4.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 mx1 angezeigt. Notieren Sie sich dieses (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  [mx1.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 mx1.example.com
Using certificate path /etc/letsencrypt/live/mx1.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!

4.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-mx1
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:mx2.example.com
}

Ersetzen Sie das doveadm_password durch Ihr eigenes Passwort – machen Sie es aus Sicherheitsgründen zu einer langen und zufälligen Zeichenfolge.

Ersetzen Sie

mail_replica = tcps:mx2.example.com

durch Ihren eigenen Hostnamen von mx2.

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

4.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 „mx1.example.com“ hinzu. Achten Sie darauf, dass Sie diese auf dem richtigen Server anlegen (mx1.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://mx2.example.com

Ersetzen Sie mx2.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

4.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/

4.6 Einrichten der Firewall

Als letztes müssen wir unsere Firewall einrichten.

Melden Sie sich in der ISPConfig-Benutzeroberfläche an und gehen Sie zu System -> Firewall. Klicken Sie dann auf „Add new firewall record“.

Stellen Sie sicher, 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

Das könnte dich auch interessieren …