Mein eigener Mailserver – endlich unabhängig

Ich bin jetzt schon seit 5+ Jahren bei all-inkl und habe bisher immer nur meine Mails zu gmail weitergeleitet. Ich wollte mich nicht zu sehr an den Provider binden, falls ich irgendwann doch einmal wechseln möchte. Nun habe ich seit ein paar Wochen einen Root-Server bei Webtropia und wollte nun endlich meinen eigenen Mailserver aufsetzen. Als Domain (ist natürlich Spielerei) habe ich mir dafür emailu.de gesichert – diese habe ich bei expireddomains gefunden und sofort registriert.

Mein DNS habe ich wie folgt konfiguriert:

Man muss dazu sagen, dass ich das alles auch zum ersten Mal gemacht habe – hoffentlich ist alles richtig soweit.

Als erstes habe ich dann das Tutorial von Thomas Leiser gefunden. Aber nach zwei Stunden habe ich gemerkt, dass ich das alles gar nicht machen möchte. Ich hatte damit begonnen, alles in einen Docker-Container zu packen bis ich gedacht habe, dass es doch bestimmt schon jemanden gibt, welcher das gleiche Problem hatte. Gefunden habe ich dann relativ fix dieses GitHub-Repo.

Die Zertifikate etc. wollte ich mit Lets Encrypt erstellen – dafür gibt es ein cooles Tool names acme.sh, welches sehr viel „leichter“ ist als das Standard-Framework von Letsencrypt. Damit habe ich mir also erstmal die entsprechenden Zertifikate gebaut:

Diese werden dann erstmal für den Apache installiert (bräuchte man nur, wenn man auch eine Webseite betreiben möchte). Ich habe diese dort hingepackt, da ich dort gerne Rainloop installieren möchte um auch einen Webclient nutzen zu können. Der Apache selbst hat bisher nur das Modul für Macros und SSL aktiviert bekommen. PHP selbst möchte nur per FPM (ebenfalls in Containern) ausführen, damit man von der einen Website später nicht in die andere kommt. Sollte also wirklich mal eine Seite gehackt werden, kommt der Hacker nicht besonders weit.

Danach habe ich den Mailserver geklont und Tag 2.3 ausgecheckt (das ist heute die aktuellste Version).

Und wie folgt geändert.

Ob es jetzt besonders schön ist, dass ich direkt die SSL-Zertifikate aus meinem Webroot nehme? Darüber kann man sicher streiten. Ich habe es erstmal so gemacht und hoffe, dass es keine Probleme damit gibt. Bisher sieht alles gut aus und mein Mailclient liefert zumindest auch keine Fehlermeldungen.

Dadurch dass „maildata“ und „mailstate“ als local-Driver angegeben sind, liegen die Maildaten unter „/var/lib/docker/volumes/mailserver_maildata/_data“. Nicht, dass sich jemand wundert wo die sensiblen Daten dann landen. Finde ich eigentlich eine gute Lösung, da man sich so keine Gedanken machen muss wo alles hinkommt und Docker den Zugriff entsprechend beschränkt.

Die DKIM-Config kann man im Container dann wie folgt erstellen lassen:

Alle Mailaccounts liegen unter config/postfix-accounts.cf und neue Einträge können einfach wie folgt erstellt werden:

Dann den Server gestartet, eingeloggt im Mailclient und alles funktioniert wunderbar. Ab jetzt geht es ans Testen und Feintuning – wenn alles geht, werden sämtliche Mailkonten mitgriert.

Wirklich cool wie schnell alles geht!

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.

Kommentar verfassen