Hallo Rüdiger,
ich habe ein Feature-Request und dazu gleich eine? Lösung…
Folgendes:
Ich würde gerne die Lehrer mit einer durch sophomorix generierten Mailadresse (loginname@xxx.de) ausstatten. Das geht ja prima!
Aber: die „Students“ sollen die Mailadresse die im Samba-AD gespeichert ist, bzw. durch z.B. nextcloud geschrieben wird, behalten.
Das ist z.Z. nicht möglich, da du die Mailadresse bei einem sophomorix-check und sophomorix-update wieder auf den von dir generierten Wert zurücksetzt.
Lösungsvorschlag:
In der schools.conf wird im Abschnitt [role.student] der Wert MAILDOMAIN=NONE gesetzt
Jetzt wird eine Mailadresse „NONE“ erzeugt und in die AD geschrieben.
Wenn man jetzt folgende Änderungen (siehe unten) am sophomorix-check durchführt klapp (soweit ich getestet habe) alles: Änderungen an der Mailadresse in der Samba-AD werden bei einem check und update nicht überschrieben.
Was meinst du? Kannst du das einbauen?
Gruß
Bertold
Hier ein diff:
root@ad:~# diff sophomorix-check-original sophomorix-check-Altaner
1652c1652,1654
< if ( ${$new_mail_ref} eq ${$old_mail_ref} ){
---
> #Altaner || ( ${$new_mail_ref} eq "NONE" ) ergänzt!
> #- damit bleiben die Mailadressen in der AD erhalten wenn in der school.conf die MAILDOMAIN=NONE gesetzt ist (z.B. in der Sektion [role.student]
> if ( ( ${$new_mail_ref} eq ${$old_mail_ref} ) || ( ${$new_mail_ref} eq "NONE" ) ){
1710,1711c1712,1723
< my $mail=$login."@".
< $sophomorix_config{'ROLES'}{$Match{'ACTION'}{$line_new}{'school'}}{$Match{'ACTION'}{$line_new}{'role'}}{'MAILDOMAIN'};
---
>
> #Altaner
> ##- Hier wird die Mail-Adresse zu "NONE" gesetzt wenn in der school.conf die MAILDOMAIN=NONE gesetzt ist (z.B. in der Sektion [role.student]
> my $mail="";
> if("NONE" eq $sophomorix_config{'ROLES'}{$Match{'ACTION'}{$line_new}{'school'}}{$Match{'ACTION'}{$line_new}{'role'}}{'MAILDOMAIN'}){
> $mail="NONE";
> } else{
> $mail=$login."@".
> $sophomorix_config{'ROLES'}{$Match{'ACTION'}{$line_new}{'school'}}{$Match{'ACTION'}{$line_new}{'role'}}{'MAILDOMAIN'};
> }
> #Altaner ENDE
>
Hallo Bertold,
darf ich fragen, welchen Mail-Server du hierzu genommen hast? Ich habe es (bisher vergeblich) mit dem docker Container (GitHub - linuxmuster/linuxmuster-mail ) versucht – der läuft aber nicht ootb (v7) weil die docker-compose.yml gar nicht mit im Paket steckt … wenn es eine gute Alternative gibt, würde ich auch die nehmen.
Schöne Grüße,
Michael
Hallo Bertold,
wenn man das Paket linuxmuster-mail per apt installiert (so ist es offiziell gedacht), landet diese Datei aber nicht im docker Verzeichnis. Ich habe aber (so wie du vorgeschlagen hast) genau diese Datei geholt und dorthin gepackt … allerdings stehen in der .yml-Datei Variablen wie z.B. @@servername@@.@@domainname@@, die – nach meinem Verständnis – von inuxmuster-mail.py -c docker-compose.yml gegen die richtigen Einträge ersetzt werden sollten – oder verstehe ich das falsch???
Das Script bricht jedoch ab, ohne genauer zu sagen warum … von daher komme ich da nicht weiter…
Hallo Rüdiger,
das wäre auch meine erste Wahl gewesen - leider funktioniert das (bei mir) nicht…
Wenn ich MAILDOMAIN=
also leer lasse wird die samba-Domäne als MAILDOMAIN genommen und sophomorix-check schreibt in sophomorix.update alles Students mit der samba-Domäne rein…
Dann habe ich halt mal sophomorix-check und SophomorixSambaAD.pm angeschaut…
…und für (mich) diese Lösung gefunden…
Gruß
Bertold
Das kommt wohl hier her: SophomorixSambaAD.pm Zeile 2013 ff:
# calculate mail attribute, if not given as sub parameter
if (not defined $mail){
$mail = $login."\@".$root_dns;
if ( exists $ref_sophomorix_config->{'ROLES'}{$school}{$role}{'MAILDOMAIN'}){
if ($ref_sophomorix_config->{'ROLES'}{$school}{$role}{'MAILDOMAIN'} ne ""){
$mail=$login."\@".$ref_sophomorix_config->{'ROLES'}{$school}{$role}{'MAILDOMAIN'};
}
}
}
In sophomorix-check Zeile 1650 wird AD_create_new_mail aufgerufen…
In Zeile 5222 ff. von SophomorixSambaAD.pm steht:
sub AD_create_new_mail {
my ($sam,$ref_sophomorix_config,$role_file,$school_file) = @_;
if (not defined $role_file){
# existing user
$role=$ref_AD_check->{'sAMAccountName'}{$sam}{'sophomorixRole'};
$school=$ref_AD_check->{'sAMAccountName'}{$sam}{'sophomorixSchoolname'};
} else {
# called from sophomorix-check to look for updates:
# use NEW role and NEW school
$role=$role_file;
$school=$school_file;
}
my $mail;
if ($ref_sophomorix_config->{'ROLES'}{$school}{$role}{'MAILDOMAIN'} eq "NONE"){
$mail="NONE";
} else {
$mail=$sam."@".$ref_sophomorix_config->{'ROLES'}{$school}{$role}{'MAILDOMAIN'};
}
return $mail;
}
Hallo Rüdiger,
(wahrscheinlich) genau!
sophomorix-check und sophomorix-update sollen die Mail-Adressen die in der Samba-AD gesetzt sind NICHT ändern - wenn in der schools.conf der MAILDOMAIN-Parameter (auf NONE) gesetzt ist.
Zumindest funktionieren meine (minimalen) Änderungen an sophomorix-check genau so.
Hallo Rüdiger,
da ich seit dem 10.04.20 keine user mehr geändert habe ist mir das nicht aufgefallen, dass mein „Problem“ immer noch da ist…
Vielleicht ist es ja nur „mein“ Problem - wenn dem so ist habe ich damit kein Problem…
Vielleicht hilft es ja dem einen oder anderen der ebenfalls zentral in der AD seine Mail-Adressen gespeichert haben möchte die dann aber NICHT beim Aufruf von sophomorix-check/sophomorix-update überschrieben werden…
Hier der aktuelle Diff zur (meiner) Problemlösung:
Hallo,
ich springe hier mal auf und stelle zur Diskussion, grundsätzlich das Setzen der Mailadressen durch sophomorix-check anders zu handhaben.
Das Feature, dass Email-Adressen automatisch gesetzt werden, ist ja sehr gut gemeint. Allerdings muss man trotzdem oft manuell Hand anlegen, bspw. bei gleichen Nachnamen (wenn die Email-Adresse nicht vorname.nachename oä. ist) .Siehe auch hier.
Die manuellen Änderungen sind dann leider beim nächsten sophomorix-check (und sophomorix-add) wieder zunichte gemacht.
Ich würde mir wünschen, dass man das automatische Setzen der eMail-Adressen in sophomorix-check deaktivieren kann (um es nur dann ausführen zu können, wenn man es auch wirklich braucht). Bestenfalls über irgendwelche Häkchen in der Schulkonsole.
…aber nur um es explizit klarzustellen (vor lauter Kritik/Feature-Requests, etc…):
Rüdiger, du machst einen tollen Job! Hut ab! Das sophomorix läuft seit fast 20 Jahren (so lange schon…) stabil und erspart jedem Admin viel Arbeit!
Tolle Leistung!
Das gilt natürlich ebenso für alle anderen die linuxmuster am Leben halten!
Prinipiell ist es so:
das single-value attribut bei user soll von sophomorix gemanaged werden
das Multi-Value attribut proxyAddresses
darf/soll vom user befüllt werden.
Das kann man auf Konsole mit sophomorix-user machen:
Hallo Rüdiger (@jeffbeck),
danke dass du dich darum kümmerst!
Ich möchte prinzipiell ein LDAP-Attribut welches ich zum speichern einer Mailadresse nutzen kann.
Ich dachte ich nehme ‚mail‘ - dann habe ich halt die Probleme da durch sophomorix-check ja selbst geänderte Werte in dem LDAP-Attribut ‚mail‘ überschrieben werden. Dazu habe ich ja für mich eine Lösung in dem ich sophomorix patche…
Wenn ich dich recht verstehe, sollte ich nicht dieses „single-value“ Attribut ändern - sondern ein neues (was es aber jetzt noch nicht gibt - oder?) nehmen - dieses von dir vorgeschlagene Multi-Value-Attribut „proxyAddresses“.
Richtig?
Wenn ja, kann dann dieses LDAP-Attribut dann von anderen Programmen (Moodle, Nextcloud, etc…) per LDAP ausgelesen werden wie das ‚mail‘-Attribut? Wenn ja, löst das mein Problem - dann mache ich das dann so!