Mailinglisten mit mailman

Aus

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

  1. Download der Sourcen von http://ftp.gnu.org/gnu/mailman/ (ich habe Version 2.1.12 verwendet)
  2. telnet Zugang oder ssh auf der DS aktiviert
  3. ipkg muss installiert sein und funktionieren
  4. python muss auf der DS installiert sein
  5. 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
  6. 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

Alle Codes in den folgenden Abschnitten mit $ sind als dieser User auszuführen. Kommandos mit $$ als root 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