From 7484aed75c87e1d2d0a87c2b903f22a3732dbc3a Mon Sep 17 00:00:00 2001 From: Jonas Leder <jonas@jonasled.de> Date: Fri, 28 Jan 2022 21:40:39 +0100 Subject: [PATCH] add mailcow and debian setup --- public/API/mainMenu.json | 5 + public/anleitungen/mailcow.html | 166 ++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+) create mode 100644 public/anleitungen/mailcow.html diff --git a/public/API/mainMenu.json b/public/API/mainMenu.json index 0824172..51538ca 100644 --- a/public/API/mainMenu.json +++ b/public/API/mainMenu.json @@ -92,6 +92,11 @@ "name": "Nextcloud auf Proxmox", "url": "/anleitungen/nextcloud.html", "type": "link" + }, + { + "name": "Mailcow E-Mail Server", + "url": "/anleitungen/mailcow.html", + "type": "link" } ] }, diff --git a/public/anleitungen/mailcow.html b/public/anleitungen/mailcow.html new file mode 100644 index 0000000..db97559 --- /dev/null +++ b/public/anleitungen/mailcow.html @@ -0,0 +1,166 @@ +<!DOCTYPE html> +<html lang="de"> + +<head> + <meta charset="UTF-8"> + <meta content="width=device-width, initial-scale=1.0" name="viewport"> + <title></title> + <link href="/css/style.css" rel="stylesheet"> +</head> + +<body> + <jl-header data-title="Mailcow auf Debian installieren"></jl-header> + <div id="content"> + <p>In der folgenden Anleitung werde ich darauf eingehen wie man eine VM mit Debian installiert und darauf + Mailcow.</p> + <p> + Für die Debian Installation wird zuerst ein aktuelles ISO Image benötigt. Dieses kann <a + href="https://www.debian.org/download">hier</a> 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.</p> + <img src="/API/getFile.php?filename=img/debian_grub.jpg"> + <p>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 <a href="https://passwordsgenerator.net/">Passwortgenerator</a> + 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 <a + href="https://passwordsgenerator.net/">generiertes Passwort</a> 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.</p> + <img src="/API/getFile.php?filename=img/debian_partition_method.jpg"> + <img src="/API/getFile.php?filename=img/debian_partition_finish.jpg"> + <p>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.</p> + <img src="/API/getFile.php?filename=img/debian_scan_media.jpg"> + <img src="/API/getFile.php?filename=img/debian_survey.jpg"> + <img src="/API/getFile.php?filename=img/debian_software.jpg"> + <p>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.</p> + <img src="/API/getFile.php?filename=img/debian_grub_install.jpg"> + <p>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.</p> + <pre> +<code class="language-bash">su root +# nun muss das Passwort den root Benutzers eingegeben werden +apt update +apt upgrade -y</code> +</pre> + <p>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.</p> + <pre> +<code class="language-bash">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</code> +</pre> + <p>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. </p> + <pre> +<code class="language-bash">cd /opt +git clone https://github.com/mailcow/mailcow-dockerized +cd mailcow-dockerized +./generate_config.sh</code> +</pre> + <p> + 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: + <ul> + <li>25: SMTP</li> + <li>465: SMTP Secure</li> + <li>585: SMTP Submission</li> + <li>143: IMAP</li> + <li>993: IMAP Secure</li> + <li>80: HTTP</li> + <li>443: HTTPS</li> + </ul> + Falls Mailcow nicht außerhalb des lokalen Netztes erreichbar sein soll (z.B. weil Mails nur über VPN abrufbar + sein sollen) reicht es Port 25 nach außen zu öffnen. Dieser wird aber zwingend benötigt, da über den SMTP Port + eingehende Mails ankommen. Nachdem die Ports freigegeben wurden, müssen noch einige DNS Einträge angelegt + werden. Der + erste ist ein A Record für den im Config Script angegebenen Hostname auf die öffentliche IP Adresse des Servers + gesetzt werden. Als zweiter Eintrag muss ein MX Eintrag auf den Domain selber gesetzt werden. Als MX Server muss + der bei Mailcow angegebene Hostname angegeben werden. Die Priorität ist bei nur einem Server uninteressant, + daher kann hier jede Zahl eingegeben werden. Bei mehreren Servern versucht der sendende Server von der kleinsten + Priorität an alle durch bis er einen erreichen kann. Als nächstes muss ein CNAME Eintrag für autodiscover und + einer autoconfig auf den Mail Domain angelegt werden. + </p> + <img src="/API/getFile.php?filename=img/mailcow_dns.jpg"> + <p> + Wenn nun die beiden DNS Einträge 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. + </p> + <pre> +<code class="language-bash">docker-compose up</code> +</pre> + <img src="/API/getFile.php?filename=img/mailcow_login.jpg"> + <p> + 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 <a href="https://passwordsgenerator.net">Passwortgenerator</a> erstellen und speichern. Als nächstes + empfehle ich dringend ein Zweifaktor Login festzulegen. Dazu kann entweder wenn ein passender <a + href="https://www.amazon.de/dp/B07HBD71HL/">Hardwareschlüssel</a> 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 <a href="https://play.google.com/store/apps/details?id=org.liberty.android.freeotpplus">FreeOTP+</a> + empfehlen. Im nächsten Schritt kann der Domain für die Mails angelegt werden, dafür auf die Domin + 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. + </p> + <img src="/API/getFile.php?filename=img/mailcow_setup_mail.jpg"> + <img src="/API/getFile.php?filename=img/mailcow_domain_setup.jpg"><br> + <img src="/API/getFile.php?filename=img/mailcow_domain_new_1.jpg"> + <img src="/API/getFile.php?filename=img/mailcow_domain_new_2.jpg"> + <p> + 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 + <a href="https://passwordsgenerator.net/">Passwortgenerator</a> 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. + </p> + <img src="/API/getFile.php?filename=img/mailcow_mailbox_new.jpg"> + <p> + 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. + </p> + <img src="/API/getFile.php?filename=img/mailcow_dkim_webui.jpg"> + <img src="/API/getFile.php?filename=img/mailcow_dkim_dns.jpg"> + </div> + <jl-footer></jl-footer> + <script src="/js/script.js"></script> + <script> + document.title = "Mailcow installieren - Jonas Leder"; + </script> +</body> + +</html> \ No newline at end of file -- GitLab