add mailcow and debian setup
This commit is contained in:
parent
ac9be3cff5
commit
7484aed75c
2 changed files with 171 additions and 0 deletions
|
@ -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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
166
public/anleitungen/mailcow.html
Normal file
166
public/anleitungen/mailcow.html
Normal file
|
@ -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>
|
Loading…
Reference in a new issue