In der folgenden Anleitung werde ich darauf eingehen wie man eine VM mit Debian installiert und darauf Mailcow.
Für die Debian Installation wird zuerst ein aktuelles ISO Image benötigt. Dieses kann hier heruntergeladen werden. Hierfür wird ein System mit mindestens 2GB RAM, 2 Kernen und 10GB Storage empfohlen. Wenn die VM con der CD gebootet wird kommt als erstes ein Auswahlmenü, in diesem die Option Install wählen und danach enter drücken.
Im nächsten Schritt wird die Sprache, die Region und das Tastaturlayout fetgelegt. Im nächsten Schritt
konfiguriert Debian einige Einstellungen wie die Netzwerkkonfiguration. Wenn die automatische Konfiguration
abgeschlossen ist, frag der Installer nach dem Hostname, dieser kann frei gewählt werden. Ich verwende
hierbei gerne Namen, die zu dem System passen, wie zum Beispiel mailcow. Der Domain Name im darauffolgenden
Schritt kann leer gelassen werden. Wenn dieser festgelegt wurde sollte das Passwort für den root Benutzer
festgelegt werden. Hierbei sollte auf einen Passwortgenerator
gesetzt werden. Nachdem das Passwort für den root Benutzer festgelegt wurde fragt Debian noch nach
benötigten Daten für einen nicht root Nutzer. Hierbei muss ein Anzeigenahme, ein Nutzername und ein generiertes Passwort festgelegt werden. Die Partitionierung
wird mit Guieded - use entire disk
bestätigt, danach die Festplatte
ausgewählt. Als Partitionsschema wird
All Files in one partition
gewählt. Wenn alle Optionen gesetzt wurden
wird nochmal eine zusammenfassung
angezeigt. Diese wird dann mit Finish partitioning and write changes to disk
und danach nochmal mit yes
bestätigt.
Nun wird Debian auf die Festplatte installiert. Jenachdem wie schnell das Bootlaufwerk und die Festplatte ist
kann dieser Schritt einige Minuten dauern. Nachdem die ersten Dateien auf die Festplatte kopiert wurden,
fragt Debian ob CDs mit Paketen eingelesen werden sollen. Dieser Schritt sollte mit No
bestätigt werden.
Danach sollte die Region wo der Server steht ausgewählt werden, damit wählt Debian den nächstbesten Server
für die Paketquellen aus. Die in der Region verfügbaren Server werden in der nächsten Seite angezeigt.
Hierbei können im Prinzip alle verwendet werden außer deb.debian.org
, da
diese relativ langsam sind.
Generell empfehle ich hierbei große Hoster oder UNIs. Ein Proxy im nächsten Schritt muss nicht angegeben
werden. Die Analysedaten sollten in jedem Fall abgelehnt werden, außer du willst deine Daten an Debian
weitergeben. Im nächsten Schritt sollte nur der SSH Server aktiviert werden. Die Optionen können deaktiviert
oder aktiviert werden, indem mit den Pfeiltasten auf die entsprechende Option navigiert wird und dann die
Leertaste gedrückt wird.
Nachdem der SSH Server installiert wurde, muss der Bootloader installiert werden, dafür muss bei der Frage ob Grub installiert werden soll "Yes" gedrückt werdeb und in der nächsten Seite die Systemfestplatte ausgewählt werden.
Nachdem das System installiert wurde wird Debian neugestartet. Nun kann sich entweder über die Oberfläche angemeldet werden oder via SSH über die IP Adresse. Nach der Authentifizierung am System mit dem zuvor erstellten Nutzer muss sich als root angemeldet werden und danach das System auf den neuesten Stand gebracht werden.
su root
# nun muss das Passwort den root Benutzers eingegeben werden
apt update
apt upgrade -y
Nachdem das System auf dem neuesten Stand ist kann (auch als root) Docker installiert werden. Docker stellt hierfür ein Script bereit. Zum herunterladen des Scripts muss zuerst Curl installiert werden.
su root #nicht benötigt falls noch als root angemeldet aus dem vorherigen Schritt.
apt install curl -y
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable --now docker
apt install docker-compose git -y
Nachdem nun die erforderlichen Vorbereitungen auf dem System abgeschlossen wurden, kann mit der Installation
vom Mailcow selber begonnen werden. Dazu muss als erstes mit Git sich die Anwendung heruntergeladen werden
und danach die Konfigurationsdatei mit dem mitgelieferten Script generiert werden. Das nachfolgende Script
muss wie auch die beiden vorherigen mit root Rechten ausgeführt werden. Das Script fragt zuerst nach dem
Hostname, welcher später verwendet werden soll um das WebUI von Mailcow zu erreichen und danach nach der
Zeitzone, für welche Europe/Berlin
verwendet werden sollte.
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
Nachdem nun Mailcow zum ersten starten vorbereitet wurde, muss bevor es gestartet werden kann, die Firewall angepasst werden. Dafür müssen die nachfolgenden Ports von außen erreichbar sein:
- 25: SMTP
- 465: SMTP Secure
- 585: SMTP Submission
- 143: IMAP
- 993: IMAP Secure
- 80: HTTP
- 443: HTTPS
autodiscover
und
einer autoconfig
auf den Mail Domain angelegt werden. Der nächste Eintrag ist
ein TXT Eintrag für den subdomain
_dmarc
mit dem Inhalt v=DMARC1; p=none
.
Als letzten Eintrag brauchen wir noch den SPF Eintrag, dieser wird
direkt auf den Domain angelegt und muss vom Typ TXT sein. Der Inhalt des Eintrags lautet v=spf1 a mx ip4:<IP
DES SERVERS> ~all
wobei <IP DES SERVERS>
durch die IP Adresse des Servers ersetzt werden
muss. Danach muss beim Hoster für
die IP Adresse der reverse DNS Eintrag auf den gleichen Domain wie im MX Eintrag geändert werden (also in meinem
Fall auf mail.jonasled-test.xyz
)
Wenn nun alle DNS Einstellungen laufen kann Mailcow das erste mal mit dem nachfolgenden Befehl gestartet werden. Beim ersten mal werden alle Programme heruntergeladen, abhängig von der Internetgeschwindigkeit kann dies einige Minuten dauern. Nach ein paar weiteren Minuten sollte über den festgelegten Domain das Webinterface erreichbar sein.
docker-compose up
Nachdem das oben abgebildete Login Fenster angezeigt wird, ist Mailcow fertig gestartet. Der default
Nutzername ist admin mit dem Passwort moohoo, dieses sollte umgehend nach dem ersten Login abgeändert
werden. Dazu in der Benutzerübersicht beim Admin Benutzer auf edit
(blauer Button im Bild unten) klicken
und ein neues Passwort mit
einem Passwortgenerator erstellen und speichern. Als nächstes
empfehle ich dringend ein Zweifaktor Login festzulegen. Dazu kann entweder wenn ein passender Hardwareschlüssel vorhanden ist WebAuthn oder Yubico
verwendet werden. Wenn kein Hardwareshlüssel vorhanden ist, können time based OTP Keys verwendet werden.
Hierfür kann ich entweder die Integration im kostenpflichtigen Bitwarden Passwortmanager oder die Android
App FreeOTP+
empfehlen. Im nächsten Schritt kann der Domain für die Mails angelegt werden, dafür auf die Domain
Konfiguration unter Configuration
--> Mail Setup
wechseln und einen neuen Domain anlegen. (siehe Screenhots)
In dem Popup muss nur der Domain angegeben werden und danach mit Add domain and restart SOGo
angelegt
werden. Nach einem Moment warten ist der Domain in Mailcow erstellt und unter Mailboxes
können nun
Mailboxen angelegt werden.
In der Mailbox Konfiguration kann nun mit dem Button Add mailbox
eine
neue Mailbox angelegt werden. Hier
muss der Teil der Mail vor dem @
angegeben werden. (Beispielswiese für
die Mail info@jonasled-test.xyz
muss hier info angegeben werden) Danach sollte der volle Name des Nutzers und ein Passwort aus einem
Passwortgenerator festgelegt werden. Wenn nun alle
Einstellungen passen, kann der Domain mit Add
angelegt werden. Nun kann
sich der Nutzer ins SOGo anmelden
um das Webmail zu nutzen oder mit einem Client wie Thunderbird anmelden.
Nachdem wir nun die erste Mailbox erstellt haben, muss noch ein DNS Eintrag erstellt werden, damit andere
Server validieren können, dass der sendende Server wirklich authorisiert dazu ist. Dazu im Mailcow Admin
Interface auf Configuration
--> Configuration & Details
gehen und dann abschließend auf der Seite unter
Configuration auf ARC/DKIM Keys gehen. Danach den beim Domain angegebenen Key kopieren und in der DNS
Verwaltung als TXT Record mit der Bezeichnung dkim._domainkey
eintragen.
Nun ist unser Mail Server vollständig konfiguriert und kann auch eingesetzt haben. Um die Funktion zu testen sollte zuerst mit einem anderen Anbieter eine Mail an eine Adresse auf dem neuen Server gesendet werden. Danach muss noch die ausgehende Funktion getestet werden. Dafür gibt es die Seite mail-tester.com. Auf dieser bekommt man eine Mail Adresse, an welche man eine Mail senden kann und danach alle fehler angezeigt bekommt.