Mailinglisten mit mailman
Mailinglisten mit Postfix
Mailman (die gute Doku dazu findet ihr hier) ist ein Python Program, das eine Schnittstelle der Mailinglisten zum Mailserver (SMTP) herstellt und überdies eine browserbasierte Verwaltung zur Verfügung stellt. Zwar kann man mit Postfix selber ganz einfach Mailinglisten erstellen.
#/usr/syno/mailstation/etc/aliases ... liste: alice@alice.tld bob@bob.tld eve@eve.tld
und danach ein
/usr/syno/mailstation/bin/newaliases
Oder mit virtuellen Usern
#/path/to/virtual liste@domain.tld alice@alice.tld bob@bob.tld eve@eve.tld
und danach ein
/usr/syno/mailstation/sbin/postmap /path/to/virtual
Sowohl bei aliases als auch bei virtual am Schluss noch ein
/usr/syno/mailstation/postfix reload
Der Nachteil an beiden Versionen ist es, dass man keine Verwaltung der "Liste(n)" hat. Zudem kann jeder der die Adresse der Liste kennt an diese schreiben, auch ohne eine vorherige Authentifizierung wie sie mailman zur Verfügung stellt
Mailinglisten mit Mailman
Der Einbau von mailman ist relativ unkompliziert, trotzdem kann einiges schiefgehen. Man wird sich hier mit Systemfiles auseinandersetzen müssen was immer ein Risiko birgt. Also am besten zuerst von allen Files Sicherheitskopien machen. Bei mir ist nix zu Bruch gegangen, trotzdem geht alles was ihr macht wie immer auf Eure eigene Kappe!!
Voraussetzungen
Damit das ganze fuzen kann müssen folgende Voraussetzungen erfüllt sein
- Download der Sourcen von http://ftp.gnu.org/gnu/mailman/ (ich habe Version 2.1.12 verwendet)
- telnet Zugang oder ssh auf der DS aktiviert
- ipkg muss installiert sein und funktionieren
- python muss auf der DS installiert sein
- ein neuer Benutzer und Gruppe auf der DS (Benutzer muss eine Login Shell haben ggf in /etc/passwd anpassen). Im folgenden User:mailman und Gruppe:mailman
- ein ScripAlias von /mailman/ auf /volume1/homes/mailman/cgi-bin/ und ein Alias von /pipermail/ auf /volume1/homes/mailman/archives/public/ in der httpd.conf-user
Installieren
Prüft zuerst ob bereits eine Python Version auf der DS installiert ist
which python #und ggf installieren ipkg install python26
Danach erstellt ihr am besten gleich den Benutzer und die Gruppe im DSM. Danach öffnet ihr die Datei /etc/passwd und tragt eine Login-Shell für den User ein.
Herunterladen und Entpacken
Nun via telnet oder ssh auf die DS und in ein Verzeichnis für den Download von mailman wechseln. Ich habe mir dazu /volume1/tmp erstellt. Jetzt die das Archiv mit wget runterladen und entpacken z.B.
wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.12.tgz gunzip -c /volume1/tmp/mailman-2.1.12.tgz | tar xvf -
Rechte ändern
Danach noch die Rechte der neuen Daten ändern
chown -R mailman:mailman /volume1/tmp/mailman-2.1.12
configure make und make install
Ab jetzt darf/sollte man nicht mehr root sein also ein
su mailman
$ cd /volume1/tmp/mailman-2.1.12 $ ./configure --prefix=/volume1/homes/mailman --with-username=mailman --with-groupname=mailman --with-mailhost=EUER_SMTP_SERVER --with-urlhost=EURE_DOMAIN_ODER_SUB $ make $ make install $$ /volume1/homes/mailman/bin/check_perms -f $ /volume1/homes/mailman/bin/newlist mailman $ /volume1/homes/mailman/bin/mmsitepass PASSWORT
Konfiguration
Postfix Aliases
Der zweiletzte Befehl gibt euch eine Liste von Alias Namen aus. Kopiert diese Liste in die Zwischenablage und für sie - jetzt wieder als root - in die entsprechende Alias Datei ein
nano -w /usr/syno/mailstation/etc/aliases <<ALIASE HINEINKOPIEREN UND DATEI SPEICHERN>> /usr/syno/mailstation/bin/newaliases
Postfix patchen
Damit auch der Postfix mit den Maillisten arbeiten kann, müsst ihr an Postfix selber verschiedene Einstellungen machen. Zuerst definieren wir in der main.cf
relay_hosts = list.DOMAIN.ltd transport_maps = hash:/usr/syno/mailstation/etc/transport mailman_destination_recipient_limit = 1
und danach in /usr/syno/mailstation/etc/transport (die Datei falls nicht vorhanden anlegen)
list.DOMAIN.tld mailman:
Und anschliessend ein
/usr/syno/mailstation/sbin/postmap /usr/syno/mailstation/etc/transport
Damit nun der Postfix weiss was er mit Emails an list.DOMAIN.tld anfangen soll gibt es sehr elegantes Python Script unter http://www.gurulabs.com/downloads/postfix-to-mailman-2.1.py. Speichert dieses Script z.B. ins Home von mailman und passt es entsprechend an.
Wichtig: Als Emailadresse keine @list.DOMAIN.tld angeben sondern nur z.B. postmaster@DOMAIN.tld
master.cf
Danach öffnet ihr die Datei /usr/syno/mailstation/etc/master.cf und fügt unten
mailman unix - n n - - pipe flags=FR user=mailman:mailman argv=/volume1/homes/mailman/postfix-to-mailman.py ${nexthop} ${user}
ein.
Wichtig:In der ersten Zeile müssen alle Abstände TABS sein. Die zweite Zeile muss mit einem Leerzeichen beginnen und darf nur Leerzeichen und KEINE TABS enthalten
Nach all diesen Anpassungen muss man noch folgenden Befehl ausführen
/usr/syno/mailstation/sbin/postfix reload
Mailman starten
Danach meldet ihr Euch wieder als mailman an und startet den mailman-Maildienst
su mailman $ /volume1/homes/mailman/bin/mailmanctl start
Jetzt sollte mailman eigentlich laufen und im Browser unter EURE_DOMAIN_ODER_SUB aufzurufen sein u.U. müsst ihr erstnoch den Webserver restarten. Wichtig: Die Script Aliases für Apache müssen gesetzt sein (siehe oben, Punkt 6)
/usr/syno/etc.defaults/rc.d/S97apache-user.sh restart