aus Gründen habe ich Mailadressen für die SchülerInnen gebraucht und das im Hinblick auf die Version 7 auf einen eigenen Mailserver ausgelagert, und zwar mit dem später dafür vorgesehenen Paket linuxmuster-mail aus der LMN 7. Damit das mit dem OpenLDAP der Version 6.2 funktioniert, muss man allerdings ein paar Sachen anders machen/anpassen.
Wer das auch mal ausprobieren will, vielleicht auch als „produktive Vorübung für die Migration“ kann das dort anschauen und ausprobieren (ich habe ein Paket für die 6.2 gebaut):
…und in diesem Thread Fragen stellen.
Die Installation ist nicht schwer, da ich jedoch nicht soviel über den verwendeten Linuxmuster-Server weiss wie Thomas in seinem Paket gibt es potentiell mehr Möglichkeiten.
Absichtlich abgewichen vom ursprünglichen Paket bin ich beim SSL Zertifikat, das hole ich auf den Docker Server mit letsencrypt (dehydrated) und schiebe es wie bei Tvial empfohlen und dokumentiert in den Container rein.
So könnte man z.B, sehr einfach auch doch ein Roundcube auf dem Docker Host mit dem Mailserver-Container laufen lassen, wenn man keine Nextcloud mit Mailclient hat oder will.
Genau wie es für die LMN7 vorgesehen ist? Aber irgendwie habe ich da die Übersicht völlig verloren, was da so der Stand der Dinge ist, also dünne ich mal meinen Server aus
Hej Thomas,
Volltreffer! Da war nur SSL_TYPE gesetzt - und zwar auf SSL_Type= letsencrypt.
Vielen Dank für den Hinweis!
Versenden geht nun, beim Empfangen gibt es noch einen Relay-access-denied-Fehler. Die Fehlersuche muss ich hier noch ein bisschen verschieben. Notenkonferenzen, uuh.
Hi.
Ich habe mich auch gerade mal den docker-Container linuxmuster-mail angesehen – allerdings für v7. (Wenn das eher in einen neuen Thread gehört, müsste es hier abgeschnitten werden …?!)
Mir ist die Vorgehensweise nicht ganz klar. Ich habe bisher auf dem docker-host der v7 lediglich das hier gemacht cd /srv/docker/ --> git clone https://github.com/linuxmuster/linuxmuster-mail.git
Im Verzeichnis /srv/docker/linuxmuster-mail/share/templates/docker sind dann zwar alle möglichen .conf-Dateien aber ich nehme nicht an, dass die manuell editiert werden müssen sondern von linuxmuster-mail.py ge-/ersetzt werden sollen?!?
Eine Datei wie Frank sie für seinen 6.2 Container beschreibt (mailserver.ini-example) finde ich dort aber nicht. Vermutlich kann man die ini aus dem v6.2-Beispiel nicht verwenden??
Wer kann nochmal kurz sagen, wie man für v7 starten muss? Oder ist der Container noch gar nicht startklar?
Hi
Kann man es evtl so machen, dass man die yml selbst herunterlädt und linuxmuster-mail.py dann manuell anstößt? Hat den Container jemand von euch am Start??
Es kam eine Antwort auf github:
„Das ist eigentlich als Helperskript für die Ersteinrichtung mit linuxmuster-setup auf dem Server gedacht. Will man das nachträglich machen, muss man die Datei /var/lib/linuxmuster/setup.ini vom Server auf die Dockermaschine kopieren. Dann kann man es als root mit
linuxmuster-mail.py -c setup.ini
einrichten.“
Dazu gleich noch eine Frage: in der genannten setup.ini steht u.a. das adminPW im Klartext. Soll das so? Die Datei ist zwar mit den Rechten 600 „gesichert“ aber das ist natürlich trotzdem nicht die feine Art, oder?
Die zweite Frage ist, wie das Zusammenspiel des mail-docker-Containers mit Nextcloud-Rainloop funktioniert. Ist das so gedacht, wie ich mir das vorstelle: Jeder Schüler kann seine eMail-Adresse aus dem AD damit nutzen und es sind auch (weiterhin) eMail-Verteiler an Klassen & Gruppen möglich?
Schönen Gruß,
Michael
Update:
Und direkt noch eine Antwort: Wenn man das so macht wie beschrieben, bricht das Script ab mit „Script finished with error!“
Nach etwas debugging wurde heute klar, woran das liegt:
In deinem Python-Script wird die Variable binduserpw abgefragt und soll mit dem entsprechenden Eintrag aus der setup.ini ersetzt werden. Diese Variable kommt aber in der setup.ini gar nicht vor – daher der Abbruch. Das ist also ein kleiner Bug. Man kann den Eintrag in der setup.ini selbst ergänzen und anschließend läuft das Script auch durch. Danach hat man also einen laufenden Docker-container, der auf den Ports
0.0.0.0:25->25/tcp, 110/tcp, 0.0.0.0:143->143/tcp, 0.0.0.0:587->587/tcp, 465/tcp, 995/tcp, 0.0.0.0:993->993/tcp,
lauscht.
Aber: Wie geht’s nun weiter?
Wie sorge ich jetzt dafür, dass jeder Schüler sein Postfach dort erhält (am besten gleich mit quota). Gibt’s da weitere Anleitungen?
Danke …
Michael
Ja, aber das ist hier der falsche Thread … hier geht’s weiter:
Ich bin aber noch nicht soweit, dass ich sagen könnte, dass es funktioniert. Der container startet aber bereits und nimmt auch eMails an … weiter bin ich noch nicht.
Hallo!
Meine Schule nutzt das LML 6.2 eigene Mailsystem sehr intensiv. Um die Migration zu LML7 vorzubereiten, wollen wir die Emailfunktionalität an das hier beschriebene Dockersystem übertragen. Dazu ein paar Fragen:
Wie habt ihr die Aliase übertragen?
Sie nehmen bei uns Zuordnungen der Funktionen zu den Personen vor (etwa FLDeutsch@schule -> Meyer@schule) Meine Idee ist /etc/aliases stur auf den Dockerhost zu rsyncen und dort die aliases in den Container zu mounten.
Wie habt ihr die Quotas vom LML 6.2 übernommen? Hier habe ich gerade gar keinen Ansatz.
Wie werden die Emailkonten (genauer das Dovecotverzeichnis) alter SchülerInnen und KollegInnen aus dem Dockercontainer gelöscht? Hier habe ich auch keinen guten Ansatz. Soweit ich weiß, bietet Sophomorix leider keine Hooks mit denen man das beim Killen eines Users mit erledigen könnte.
Ok, Aliase waren ein Ritt. /etc/aliases funktioniert nicht.
Stattdessen wird ein über die /srv/docker/linuxmuster-mail/config/postfix/ldap-aliases.cf
hiernach gesucht:
query_filter = (mail=%s)
und das zurückgegeben:
result_attribute = mail
Da kann kein Alias a la admin → frithjof bei rauskommen. Dies sieht wie eine (sinnfreie) Zuordnung aus: Suche nach mail=name@domain.de und bekomme name@domain.de zurück.
Da uns die Aliase sehr wichtig sind, habe ich das so gelöst.
Die Datei /srv/docker/linuxmuster-mail/config/postfix-main.cf wird - wenn sie vorhanden ist - automatisch beim Start des Dockercontainers „benutzt“. Sie enthält bei mir nur eine Zeile:
root@mail:/srv/docker/linuxmuster-mail/config# cat postfix-main.cf
virtual_alias_maps = texthash:/etc/postfix/virtual, ldap:/etc/postfix/ldap-aliases.cf, ldap:/etc/postfix/ldap-groups.cf
Damit wird die Datei /etc/postfix/virtual als Datei für virtual_aliase benutzt. Die Datei heißt außerhalb des Containers /srv/docker/linuxmuster-mail/config/postfix-virtual.cf und hat dies Format: alias@domain.deziel1@domain.de, ziel2@domain.de
Wenn die Datei geändert wurde, muss Postfix die Datei neu einlesen. Ich weiß aber nicht, wie man das im Dockercontainer machen könnte. Das Docker-Startup-Script (wie immer es heißt), macht das jedoch nur einmal beim starten des Containers. Daher mache ich das so:
root@mail:/srv/docker/linuxmuster-mail# ./stop.sh && ./start.sh
Ich habe die Aliase aus meiner alten /etc/aliases per Hand übertragen.
Des Spaßes halber habe ich mir die Struktur eines Gruppeneintrags im LDAP unter 6.2 angesehen:
dn: cn=teachers,ou=groups,dc=lokal,dc=carl-bosch-oberschule,dc=de
structuralObjectClass: posixGroup
entryUUID: 4022d052-24a5-1038-8ac2-ffb4d94b904d
creatorsName: cn=admin,dc=lokal,dc=carl-bosch-oberschule,dc=de
createTimestamp: 20180725222433Z
gidNumber: 10000
sambaSID: S-1-5-21-1074942382-4079026230-725720162-21001
cn: teachers
sambaGroupType: 2
memberUid: Username1
memberUid: UserName2
memberUid: …
objectClass: posixGroup
objectClass: top
objectClass: sambaGroupMapping
displayName: teachers
entryCSN: 20200903122706.613666Z#000000#000#000000
modifiersName: cn=admin,dc=lokal,dc=carl-bosch-oberschule,dc=de
modifyTimestamp: 20200903122706Z
dort steht kein mail-Attribut drinne. Ich lese in der ldap-groups.cf, das postfix das aber auslesen will:
query_filter = (mail=%s) #query_filter = (uid=%s)
result_attribute = mail
Das scheint mir noch ein schönes Stück Arbeit zu sein.