Mithilfe dieser Anleitung schafft Ihr es, Euren eigenen Mail-Server aufzusetzen - ganz einfach! Dennoch empfehle ich die Durchführung nur von etwas fortgeschrittenen Leuten.
1. Zuerst muss der Server auf den neusten Stand gebracht werden
sudo apt update && apt upgrade -y
2. Überprüft, ob einer dieser Ports bereits verwendet wird. Wenn Port 80 & 443 von einem anderen Webserver verwendet wird nutzen wir einen reverse proxy für mailcow.
apt install net-tools
sudo netstat -tulpn | grep -E -w '25|80|110|143|443|465|587|993|995'
3. Der Server muss den richtigen FQDN & Hostname haben. Dabei müsst Ihr an erster Stelle Eure Server IP, den MX Record und dahinter anschließend den Hostname 'mail' eingeben.
nano /etc/hosts
nano /etc/hostname
5. Voraussetzung für Mailcow ist docker & docker-compose welche wir mit folgenden Befehlen installieren. Die Quellen der Docker Entwickler sind in den meisten Fällen aktueller als die in der Standard repository.
Installieren von Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh
systemctl enable docker.service
systemctl start docker.service
Installieren von docker-compose
curl -L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
docker-compose version
whereis docker-compose
6. Als Nächstes laden wir mailcow herunter und navigieren in das Verzeichnis:
umask
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
7. Danach müssen wir die Konfigurationsdatei erstellen. Nutzt Eure FQDN, wenn danach gefragt wird.
./generate_config.sh
8. Falls in Schritt zwei Eure Ports durch beispielsweise Apache belegt waren, könnt Ihr nun in der Datei den reverse proxy einsatzbereit machen.
nano mailcow.conf
Ich habe den Standard Port von 80 zu 8080 und den SSL Port von 443 zu 8443 geändert.
Ändert auch den folgenden Parameter für den reverse proxy. Es ist nicht notwendig, aber empfehlenswert.
9. Startet nun den Docker.
cd /opt/mailcow-dockerized
sudo docker-compose pull
Output
sudo docker-compose up -d
ERROR: for mailcowdockerized_nginx-mailcow_1 Cannot start service nginx-mailcow: driver failed programming external connectivity on endpoint mailcowdockerized_nginx-mailcow_1 (1ce8415046d369a04a8c554f4b8e381821126cf2684ed9baebbd3c35432f4641): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
ERROR: for nginx-mailcow Cannot start service nginx-mailcow: driver failed programming external connectivity on endpoint mailcowdockerized_nginx-mailcow_1 (1ce8415046d369a04a8c554f4b8e381821126cf2684ed9baebbd3c35432f4641): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
Stoppt den nginx service, startet den docker erneut und startet auch den nginx Server wieder. Der Fehler muss nicht zwingend auftreten.
sudo nginx -s stop
sudo docker-compose up -d
sudo nginx -s start
Bei folgendem Output solltet ihr nun euren Mailserver erreichen können.
10. Falls noch nicht, müsst Ihr Eure DNS-Einstellungen noch ändern.
- mail / A / 1.23.456.789
- autodiscover / CNAME / mail
- autoconfig / CNAME / mail
- @ / MX 10 / mail
- @ / TXT / v=spf1 mx ~all
- _dmarc / TXT / v=DMARC1;p=none;sp=none
11. Abschließend müsst Ihr noch einen DKIM Key erstellen. Navigiert zu domain.tld:8443 und loggt euch mit dem Benutzer 'admin' und dem Passwort 'moohoo' ein.
11.1 Navigiert zu dem Tab "Konfiguration"
11.2 Verwendet eure Domain, gibt einen beliebigen Selektor an und wählt als Schlüssellänge 2048.
11.3 Kopiert den Inhalt und legt einen neuen Record in der DNS Verwaltung an 2020._domainkey / TXT / v=DKIM1 ; k=rsa... und speichert es ab.