Mailserver Alias Skript

Allgemeines

Es befindet sich auf dem Server mit den homefreigaben, da es aus den user homes (mit root rechten) die ~/.listsForward ausliest.

Das Skript wird jede Nacht von Cron ausgeführt

Skript braucht Schreibzugriff aufs LDAP

fseiUserForwardDoNotEdit wird aktualisiert

fseiMailDeliverTo wird aktualisiert

Funktionalität

Damit Postfix mit nur einer LDAP Abfrage alle Weiterleitungen, die für eine Listenmail notwendig sind, bekommen kann, wird das LDAP als Cache missbraucht.

Es werden aus den ~/.listsForward alle Listennamen ausgelesen, geprüft ob der User diese Listen lesen darf (ACL aber per LDAP Abfrage!) und dann der Eintrag fseiUserForwardDoNotEdit automatisch aktualisiert.

Ablauf des Programms

Zuerst werden alle User durchlaufen, und die zu abbonierenden Listen gefetched. Dann wird dieses Datenarray umgebaut, sodass man nun in erster Ebene die Listen hat und darunter die User, die diese Listen lesen wollen.

Jetzt iteriert man über alle Listen. Dabei werden dann pro Liste die aktuell eingetragenen User und die neuen User verglichen und nur die Änderungen angewendet.

Zuletzt wird noch fseiMailDeliverTo geprüft, ob es existiert und wenn nicht, dann hinzugefügt.

LDAP Injections

Da dieses Skript sowohl mit den User über die ~/.listsForward in Kontakt kommt, sowie mit einem Schreibzugriff auf das LDAP ausführt, muss man hier darauf achten, dass keine Sicherheitslücken entstehen.

Daher existiert die Methode isValidCN, die einen Listennamen prüft.

Meines Wissens nach ist es aktuell nicht möglich, dass Skript dazu zu bewegen, unerlaubtes ins LDAP zu schreiben.

Das größte Risiko ist ein Absturz durch zu große Files. Hier könnte man noch einen entsprechden Schutz einbauen. Auch ein detailliertes Logging könnte in diesem Zuge sinnvoll sein!