= Mailverteuilersystem am Kepler-Gymnasium = == Vorbemerkungen == Auf dem Server kommt als Mailsystem Postfix/Cyrus zum Einsatz, die Musterlösung sieht als Listeninstrument die /etc/aliases vor und schreibt dort auch Maillisten für die Projekte hinein. Gleichzeitig kommt die Mailquota zum Einsatz, was zu unschönen Effekten führt, wenn ein Teilnehmer einer Liste seine Quota überschritten hat, dann nämlich zieht das System die Mail komplett zurück und packt sie in die mailq, somit wird die Mail beliebig oft nochmals an den GESAMTEN Verteiler gesendet. Seit April 2015 setzen wir für die Verteiler MAILMAN ein, damit wird die Mail an die Liste erst in einzelne Mail an jeden Listenteilnehmer zerlegt und dann erst an Postfix übergeben. Ist nun eine Quota überschritten, so kommt nur die eine Mail in die mailq und nicht mehr alle. Außerdem können Listen nun moderiert werden, was bei großen Listen wie alleschueler, allelehrer, etc dringend nötig ist. Nun können wirklich alle Menschen, die eine eMail-Adresse besitzen Mails an unsere Verteiler senden, da die Abesender erwartungsgemäß nicht in der Liste vorhanden sind, wird die Mail zuzrückgehalten und der Listenmoderator informiert. Erst nach Freischaltung durch den Moderator wird die Mail zugestellt. Die meisten unserer Listen sind für Mitglieder unmoderiert, so dass Listenmitglieder direkt an die Liste senden dürfen. Der jeweilige Listenadmin kann aber Mitglieder über das Webinterface auf moderiert setzen, falls diese sich danebenbenehmen. == Technische Umsetzung == === auf dem DB-Server === Über /etc/cron.daily wird das Script /usr/local/sbin/maintenance.php aufegrufen, welches diverse Pflegearbeiten an der InfoSys-Datenbank vornimmt und danach die Mailverteiler bearbeitet: * Erzeugt die Listen der Verteiler (Mailadressen, Namen, Moderatoren, acceptedNonMembers, moderiert?) aus der Datenbank * Ruft die aktuell geltenden Mailverteiler vom paedml-Server aus der DB ab und * synct die bereits vorhandenen (Liste geht auf Status=U (Update) * haben sich die Moderatoren geändert? * haben sich die Mitglieder geändert? Liste erhält zusätzlich MStatus=-1 (Mitglieder syncen) * haben sich die akzeptierten Nicht-Listenmitglieder geändert * hat sich der moderiert-Status der Liste geändert? Liste erhält zusätzlich MStatus=1 (Mitglieder syncen und auf neuen Moderationsstatus setzen) * legt alle neuen Listen an (Liste wird in DB angelegt mit Status=N und MStatus=-1) * ermittelt zu löschende Listen (Liste erhält Status=D) Dazu werden alle nicht bereits bearbeiteten Listen abgearbeitet und bei den Listen vom Typ=A (auto) auf Status=D gesetzt (Listen mit Typ=D (dauer-auto) werden nicht bearbeitet) * kleinere Verteiler (klassenlehrer,klassensprecher,elternvertreter) werden auch weiterhin als Alias gehandelt und in die Datei /usr/local/sbin/aliases_db geschrieben * Script lädt die Datei aliases_db auf den paedml_Server nach /etc/aliases_db * Script ruft auf dem paedml-Server das Script /var/lib/mailman/kepler/maintenance.sh auf === auf dem paedml-Server Das Script /var/lib/mailman/kepler/maintenance.sh wird täglich vom DB-Server aus aufgerufen und pflegt die Mailverteiler. Es ruft /var/www/interaktiv/kepler_login/emailverteiler.php --auto auf, dieses erzeugt /var/lib/mailman/kepler/update.sh, welches anschließend aufgerufen wird. /var/www/interaktiv/kepler_login/emailverteiler.php --auto macht folgendes (Aufruf ohne Argmente): {{{ Erstellt die eMail-Verteiler fuer mailman neu, macht updates oder loescht sie Ausgewertet wird die lokale mySQL-Tabelle eMailVerteiler, in die das Script aber auch die paedml-Verteiler einliest, Ablauf * Script liest die Projekte ein (sophomorix-projekt) und gleicht die Verteiler in der DB an * eventuell gesetzte [A] oder [L] Merkmale werden geloescht, die Mailverteiler werden nicht mehr von sophomorix-mail verwaltet! * Abgleich der aktuell eingetragenen Mitglieder der Mailman-Listen mit jenen in der Datenbank * Loeschen aller Verteiler mit dem Status='D' * Updaten aller Konfigurationen bei Verteilern mit dem Status='U' * Neue Listen Anlegen (neu: Status='N') * Bemerkung: Listen mit Status=' ' werden nicht bearbeitet * Syncen der Mitglieder, wenn MStatus=-1 (oder bei --syncall fuer alle Verteiler) * Syncen der Mitglieder, wenn MStatus=1 dabei auch den Moderationsstatus veraendern * Fuer jede Liste werden zwei Dateien erzeugt: * [Liste].cfg: enthaelt die Standard-Config (aus standard.cfg oder standard_update.cfg mit Anpassungen) - wird mit config_list verwendet * [Liste].members: enthaelt die Mitglieder der Liste - wird mit sync_members verwendet * Das Script erzeugt die Datei /var/lib/mailman/kepler/aliases_mailman - hier stehen alle Aliase fuer die /etc/aliases (postfix) und das update-Script /var/lib/mailman/kepler/update.sh - hier stehen nacheinander alle Mailman- und aliases-Kommandos * Das Script benutzt die Dateien * InfoMail.txt: Enthaelt den Text der Mail, die an die Admins versendet wird * standard.cfg: Enthaelt die Standard-Einstellungen fuer die anzulegenden Mailverteiler und fuer den Reset * standard_update.cfg: Enthaelt die Vorlage fuer die zu aendernden Einstellungen fuer das Update eines Mailverteilers Die Funktion des Scripts kann somit am Besten in der DB-Tabelle eMailVerteiler gesteuert werden (->Kepler-Login) Benutzung nur mit folgenden Argumenten: --auto: legt neue Mailverteiler mit Standard-Einstellungen an, loescht nicht mehr benoetogte und fuegt die Mitglieder ein --syncall: synct die Mitglieder aller Mailinglisten und nicht nur die, deren Merkmal MStatus=-1 ist --getMembers [V]: gibt die Mitglieder (eMailAdressen)eines Verteilers V zurueck --UserNames: gibt statt der Mailadressen die Usernames zurueck (nur sinnvoll bei lokalen Adressen --debug: gibt mehr debugging-Infos (vor allem beim Erstellen der paedml-Projekt-Mailinglisten) aus }}}