Mlmmj: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
K (→‎Links: Sourcen auf Codeberg)
K (Hauptteil auf Lesbarkeit überarbeitet)
Zeile 3: Zeile 3:
[http://www.mlmmj.org/ mlmmj] ist ein Programm, mit dem in einem Hostsharing Paket E-Mail-Verteiler realisiert werden kann.
[http://www.mlmmj.org/ mlmmj] ist ein Programm, mit dem in einem Hostsharing Paket E-Mail-Verteiler realisiert werden kann.


Vergleichen Sie dazu auch den Wikipedia-Artikel:
Wer noch nicht weiß, was ein E-Mail-Verteiler machen soll oder wie, lese veilleicht auch den Wikipedia-Artikel:
[http://de.wikipedia.org/wiki/Mailingliste Mailingliste]
[http://de.wikipedia.org/wiki/Mailingliste Mailingliste]


Alternative: [[Mailman_3_installieren]]
Eine leistungsfähigere Alternative zu mlmmj könnte [[Mailman_3_installieren|Mailman 3]] sein.


Diese Anleitung beschreibt die Installation einer Mailingliste in einem Hostsharing Webspace für eine Domain.
Diese Anleitung beschreibt die Einrichtung einer Mailingliste für eine Domain in einem Hostsharing-Webspace.


== mlmmj ==
== mlmmj ==
Das Debian Paket [http://packages.debian.org/search?keywords=mlmmj mlmmj] ist auf den Shared-Hosting-Servern bereits installiert.


=== Voraussetzungen  ===
=== Voraussetzungen  ===


Das Debian Paket [http://packages.debian.org/search?keywords=mlmmj mlmmj] ist auf den Shared-Hosting-Servern bereits installiert.
Für den Betrieb der Mailingliste empfiehlt sich das Anlegen eines eigenen Users für diesen Zweck mit hsadmin.


Für den Betrieb der Mailingliste empfehle ich das Anlegen eines Users für diesen Zweck mit hsadmin.
In dieser Anleitung heißt das Paket ''xyz00'' und der für Mailinglisten eingesetzte User ''xyz00-list''.


Sei mein Paket ''xyz00'' und der User ''xyz00-list''.
Die E-Mail-Adresse der einzurichtende Mailing-Liste soll ''discuss@example.org'' sein.


Sei meine Domain ''example.org'' und die E-Mail-Adresse für die Liste ''discuss@example.org''.
Die Domain ''example.org'' muss dazu bei einem beliebigen User im Paket ''xyz00'' [[aufgeschaltet]] sein. ("Aufgeschaltet" bedeutet, daß diese Domain bei Hostsharing gehostet wird und der Domainname als Verzeichnis /home/pacs/xyz00/*User*/doms/example.org/ erscheint.)


Die Domain muss bei einem beliebigen User im Paket ''xyz00'' aufgeschaltet sein. Die E-Mail-Adresse wird ebenfalls mit hsadmin eingerichtet. Das Target ist der User ''xyz00-list''.
=== Einrichtung  ===


Hier werden User und E-Mail-Adresse mit Hilfe des hsadmin-Interpreters ''hsscript'' angelegt:
Ich melde mich über SSH auf der Hostsharing-Console als der Paketuser ''xyz00'' an.
 
Im Shell kann ich dann durch den Befehl ''hsscript -i'' das Verwaltungswerkzeug ''hsadmin'' interaktiv ausführen:


   xyz00@h03:~$ hsscript -i
   xyz00@h03:~$ hsscript -i
   Password: *************
   Password: *************
  xyz00@hsadmin>
In ''hsadmin'' werden User und E-Mail-Adresse angelegt.
   xyz00@hsadmin> user.add({set:{name:'xyz00-list',comment:'Mailingliste Discuss',shell:'/bin/bash',password:'geheimnis'}})
   xyz00@hsadmin> user.add({set:{name:'xyz00-list',comment:'Mailingliste Discuss',shell:'/bin/bash',password:'geheimnis'}})
   xyz00@hsadmin> emailaddress.add({set:{target:'xyz00-list',localpart:'discuss',domain:'example.org'}})
   xyz00@hsadmin> emailaddress.add({set:{target:'xyz00-list',localpart:'discuss',domain:'example.org'}})
   xyz00@hsadmin> bye
   xyz00@hsadmin> bye


=== Einrichtung  ===
Mit dem Parameter "target" wird die für diese Adresse eingehende Post zunächst in das Postfach des Users xyz00-list abgelegt.


Ich melde mich auf der Linux-Kommandozeile als User ''xyz00-list'' an.
Für den User xyz00-list lege ich in seinem Heimat-Verzeichnis das Unterverzeichnis "mlmmj" an:
 
Für den User lege ich in seinem Heimat-Verzeichnis das Unterverzeichnis "mlmmj" an:


   mkdir /home/pacs/xyz00/users/list/mlmmj
   mkdir /home/pacs/xyz00/users/list/mlmmj
Zeile 44: Zeile 50:
   mlmmj-make-ml -L discuss -s /home/pacs/xyz00/users/list/mlmmj
   mlmmj-make-ml -L discuss -s /home/pacs/xyz00/users/list/mlmmj


Das Skript fragt weitere Parameter der Mailingliste ab:
Das Skript ''mlmmj-make-ml'' fragt weitere Parameter der Mailingliste ab:


   The Domain for the List? [] : example.org
   The Domain for the List? [] : example.org
   The emailaddress of the list owner? [postmaster] : webmaster@example.org
   The emailaddress of the list owner? [postmaster] : webmaster@example.org
   For the list texts you can choose between the following languages or
   For the list texts you can choose between the following languages or
   give a absolute path to a directory containing the texts.
   give an absolute path to a directory containing the texts.
   Available languages:
   Available languages:
   cz  da de  en es  fr it  nl ru
   cz  da de  en es  fr it  nl ru
   The path to texts for the list? [en] : de
   The path to texts for the list? [en] : de


Damit ist unter "/home/pacs/xyz00/users/list/mlmmj" ein Verzeichnis "discuss" angelegt,
Das skript ''mlmmj-make-ml'' legt daraufhin unter "/home/pacs/xyz00/users/list/mlmmj" ein Verzeichnis "discuss" an, das die Datenstruktur zur Verwaltung der Mailingliste enthält.
das die Datenstruktur zur Verwaltung der Mailingliste enthält.


Weitere Konfigurationen der Liste erfolgen durch das Anlegen von Dateien im
Weitere Konfigurationen der Liste erfolgen durch das Anlegen von Dateien im
Verzeichnis "/home/pacs/xyz00/users/list/mlmmj/discuss/control".
Verzeichnis "/home/pacs/xyz00/users/list/mlmmj/discuss/control".
Die Konfigurationsmöglichkeiten finden Sie auf der [http://mlmmj.org/docs/tunables/ Internetseite von mlmmj]
Die Konfigurationsmöglichkeiten finden Sie auf der [http://mlmmj.org/docs/tunables/ Internetseite von mlmmj].


Für den User lege ich in seinem Heimat-Verzeichnis die Datei ".forward" mit folgenden Inhalt an (Achtung, die Anführungszeichen nicht vergessen!):
Damit mlmmj die Verteilung der Post übernimmt, muß ich im Heimat-Verzeichnis des users xyz00-list die Datei <tt>.forward</tt> mit folgenden Inhalt (INKLUSIVE der Anführungszeichen!) erstellen:


   "|/usr/bin/mlmmj-recieve -L /home/pacs/xyz00/users/list/mlmmj/discuss/"
   "|/usr/bin/mlmmj-recieve -L /home/pacs/xyz00/users/list/mlmmj/discuss/"


Diese Datei sorgt dafür, dass eingehende E-Mail für die Liste an das Programm ''mlmmj-recieve''
(Ja, ''receive'' schreibt sich mit ''-ei-'', aber mlmmj hält einen symbolischen Link bereit für diejenigen, die in englischer Rechtschreibung unsicher sind:)
übergeben und dort verarbeitet werden.
 
  xyz00-list@h03:~$ ls -la /usr/bin/mlmmj-rec*
  -rwxr-xr-x 1 root root 27104 Sep 25  2018 /usr/bin/mlmmj-receive
  lrwxrwxrwx 1 root root    13 Sep 25  2018 /usr/bin/mlmmj-recieve -> mlmmj-receive
 
Die <tt>.forward</tt>-Datei sorgt dafür, dass eingehende E-Mails an das User-Postfach an das Programm ''mlmmj-recieve'' übergeben werden.


Für regelmäßige Aufgaben der Listen-Managers definiere ich die
Für regelmäßige Aufgaben der Listen-Managers definiere ich die
crontab wie folgt (immer noch als ''xyz00-list''):
crontab wie folgt (immer noch als ''xyz00-list''):
  xyz00-list@h03:~$ crontab -e


  MAILTO=webmaster@example.org
  MAILTO=webmaster@example.org
Zeile 79: Zeile 91:
  28 */4 * * * /usr/bin/mlmmj-maintd -d /home/pacs/xyz00/users/list/mlmmj -F
  28 */4 * * * /usr/bin/mlmmj-maintd -d /home/pacs/xyz00/users/list/mlmmj -F


 
Zum Schluss rufe ich das Skript mlmmj-sub auf, um die E-Mail-Adressen der gewünschten Abonnenten des Verteilers einzutragen:
Zum Schluss trage ich noch die gewünschten E-Mail-Adressen ein:


  /usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a klaus.muster@gmx.de -c  
  /usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a klaus.muster@gmx.de -c  
  /usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a sabine.beispiel@arcor.de -c  
  /usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a sabine.beispiel@arcor.de -c  


Dabei bewirkt "-c", dass der Abonnent eine Begrüßungs-Nachricht erhält. Alternativ kann man "-C" (großes Ce)
Dabei bewirkt "-c", dass der Abonnent eine Begrüßungs-Nachricht erhält. Alternativ kann man "-C" (großes C) angeben: dann muss der Abonnent das Abo durch Antworten auf die Nachricht bestätigen.
angeben. Dann muss der Abonnent das Abo durch Antworten auf die Nachricht bestätigen.


=== weitere Konfiguration  ===
=== weitere Konfiguration  ===
Zeile 96: Zeile 106:
  echo "[discuss]" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/prefix
  echo "[discuss]" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/prefix


Die Liste darf nur E-Mails von eingetragenen Abonnenten weiterleiten:
Wenn die Liste nur E-Mails von eingetragenen Abonnenten weiterleiten soll:


  touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/subonlypost
  touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/subonlypost


Das Abonnement muss vom Listen-Owner bestätigt werden:
Damit der Listen-Owner weitere Abonnements bestätigen muss:


  touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/submod
  touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/submod


Einen "Reply-To:"-Header setzen, so dass Antwort-EMails immer an den Verteiler gehen:
Einen "Reply-To:"-Header setzen, damit Antwort-Mails standardmäßig an die Mailing-Liste gehen:


   echo "Reply-To:" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/delheaders
   echo "Reply-To:" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/delheaders
Zeile 110: Zeile 120:


Weitere Möglichkeiten finden Sie (wie oben bereits angegeben)  
Weitere Möglichkeiten finden Sie (wie oben bereits angegeben)  
auf der [http://mlmmj.org/docs/tunables/ Internetseite von mlmmj]
auf der [http://mlmmj.org/docs/tunables/ Internetseite von mlmmj].


=== Konfiguration im Browser ===
=== Konfiguration im Browser ===


Die Original-Distribution von ''mlmmj'' enthält ein paar einfache PHP- und Perl-Skripte.  
Die Original-Distribution von ''mlmmj'' enthält ein paar einfache PHP- und Perl-Skripte. Das sind Beispiele für Subscribe-/Unsubscribe-Formulare, ein Admin-Formular zum Eintragen und Löschen von Abonnements und eine Seite mit der gesamten Listen-Konfiguration.
Das sind Beispiele für Subscribe-/Unsubscribe-Formulare, ein Admin-Formular zum Eintragen und Löschen
von Abonnements und eine Seite mit der gesamten Listen-Konfiguration.


Wer es sich ansehen möchte:
Wer es sich ansehen möchte:

Version vom 31. Januar 2024, 16:32 Uhr

Mailing List Management Made Joyful

mlmmj ist ein Programm, mit dem in einem Hostsharing Paket E-Mail-Verteiler realisiert werden kann.

Wer noch nicht weiß, was ein E-Mail-Verteiler machen soll oder wie, lese veilleicht auch den Wikipedia-Artikel: Mailingliste

Eine leistungsfähigere Alternative zu mlmmj könnte Mailman 3 sein.

Diese Anleitung beschreibt die Einrichtung einer Mailingliste für eine Domain in einem Hostsharing-Webspace.

mlmmj

Das Debian Paket mlmmj ist auf den Shared-Hosting-Servern bereits installiert.

Voraussetzungen

Für den Betrieb der Mailingliste empfiehlt sich das Anlegen eines eigenen Users für diesen Zweck mit hsadmin.

In dieser Anleitung heißt das Paket xyz00 und der für Mailinglisten eingesetzte User xyz00-list.

Die E-Mail-Adresse der einzurichtende Mailing-Liste soll discuss@example.org sein.

Die Domain example.org muss dazu bei einem beliebigen User im Paket xyz00 aufgeschaltet sein. ("Aufgeschaltet" bedeutet, daß diese Domain bei Hostsharing gehostet wird und der Domainname als Verzeichnis /home/pacs/xyz00/*User*/doms/example.org/ erscheint.)

Einrichtung

Ich melde mich über SSH auf der Hostsharing-Console als der Paketuser xyz00 an.

Im Shell kann ich dann durch den Befehl hsscript -i das Verwaltungswerkzeug hsadmin interaktiv ausführen:

 xyz00@h03:~$ hsscript -i
 Password: *************
 xyz00@hsadmin> 

In hsadmin werden User und E-Mail-Adresse angelegt.

 xyz00@hsadmin> user.add({set:{name:'xyz00-list',comment:'Mailingliste Discuss',shell:'/bin/bash',password:'geheimnis'}})
 xyz00@hsadmin> emailaddress.add({set:{target:'xyz00-list',localpart:'discuss',domain:'example.org'}})
 xyz00@hsadmin> bye

Mit dem Parameter "target" wird die für diese Adresse eingehende Post zunächst in das Postfach des Users xyz00-list abgelegt.

Für den User xyz00-list lege ich in seinem Heimat-Verzeichnis das Unterverzeichnis "mlmmj" an:

 mkdir /home/pacs/xyz00/users/list/mlmmj

Dann lege ich die Mailingliste mit folgendem Kommando an:

 mlmmj-make-ml -L discuss -s /home/pacs/xyz00/users/list/mlmmj

Das Skript mlmmj-make-ml fragt weitere Parameter der Mailingliste ab:

 The Domain for the List? [] : example.org
 The emailaddress of the list owner? [postmaster] : webmaster@example.org
 For the list texts you can choose between the following languages or
 give an absolute path to a directory containing the texts.
 Available languages:
 cz  da	de  en	es  fr	it  nl	ru
 The path to texts for the list? [en] : de

Das skript mlmmj-make-ml legt daraufhin unter "/home/pacs/xyz00/users/list/mlmmj" ein Verzeichnis "discuss" an, das die Datenstruktur zur Verwaltung der Mailingliste enthält.

Weitere Konfigurationen der Liste erfolgen durch das Anlegen von Dateien im Verzeichnis "/home/pacs/xyz00/users/list/mlmmj/discuss/control". Die Konfigurationsmöglichkeiten finden Sie auf der Internetseite von mlmmj.

Damit mlmmj die Verteilung der Post übernimmt, muß ich im Heimat-Verzeichnis des users xyz00-list die Datei .forward mit folgenden Inhalt (INKLUSIVE der Anführungszeichen!) erstellen:

 "|/usr/bin/mlmmj-recieve -L /home/pacs/xyz00/users/list/mlmmj/discuss/"

(Ja, receive schreibt sich mit -ei-, aber mlmmj hält einen symbolischen Link bereit für diejenigen, die in englischer Rechtschreibung unsicher sind:)

  xyz00-list@h03:~$ ls -la /usr/bin/mlmmj-rec*
  -rwxr-xr-x 1 root root 27104 Sep 25  2018 /usr/bin/mlmmj-receive
  lrwxrwxrwx 1 root root    13 Sep 25  2018 /usr/bin/mlmmj-recieve -> mlmmj-receive

Die .forward-Datei sorgt dafür, dass eingehende E-Mails an das User-Postfach an das Programm mlmmj-recieve übergeben werden.

Für regelmäßige Aufgaben der Listen-Managers definiere ich die crontab wie folgt (immer noch als xyz00-list):

 xyz00-list@h03:~$ crontab -e
MAILTO=webmaster@example.org
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
HOME=/home/pacs/xyz00/users/list
SHELL=/bin/bash
LANG=en_US.UTF-8
# m h  dom mon dow   command
28 */4 * * * /usr/bin/mlmmj-maintd -d /home/pacs/xyz00/users/list/mlmmj -F

Zum Schluss rufe ich das Skript mlmmj-sub auf, um die E-Mail-Adressen der gewünschten Abonnenten des Verteilers einzutragen:

/usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a klaus.muster@gmx.de -c 
/usr/bin/mlmmj-sub -L /home/pacs/xyz00/users/list/mlmmj/discuss -a sabine.beispiel@arcor.de -c 

Dabei bewirkt "-c", dass der Abonnent eine Begrüßungs-Nachricht erhält. Alternativ kann man "-C" (großes C) angeben: dann muss der Abonnent das Abo durch Antworten auf die Nachricht bestätigen.

weitere Konfiguration

Noch ein paar Dinge, die Sie möglicherweise einstellen wollen:

Ein Prefix in der Betreffzeile setzen, z.B.: "[discuss]".

echo "[discuss]" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/prefix

Wenn die Liste nur E-Mails von eingetragenen Abonnenten weiterleiten soll:

touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/subonlypost

Damit der Listen-Owner weitere Abonnements bestätigen muss:

touch /home/pacs/xyz00/users/list/mlmmj/discuss/control/submod

Einen "Reply-To:"-Header setzen, damit Antwort-Mails standardmäßig an die Mailing-Liste gehen:

 echo "Reply-To:" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/delheaders
 echo "Reply-To: discuss@example.org" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/customheaders

Weitere Möglichkeiten finden Sie (wie oben bereits angegeben) auf der Internetseite von mlmmj.

Konfiguration im Browser

Die Original-Distribution von mlmmj enthält ein paar einfache PHP- und Perl-Skripte. Das sind Beispiele für Subscribe-/Unsubscribe-Formulare, ein Admin-Formular zum Eintragen und Löschen von Abonnements und eine Seite mit der gesamten Listen-Konfiguration.

Wer es sich ansehen möchte:

Als Paket-Admin eine Domain aufschalten:

hsscript -u xyz00 -e "domain.add({set:{name:'lists.example.org',user:'xyz00-list'}})"

Und weiter als "xyz00-list".

Download der neuesten Version der Sourcen von mlmmj von http://mlmmj.org/downloads/ und diese in einem temporären Verzeichnis entpacken.

Unter "/mlmmj-$versionsnummer/contrib/web/php-admin/" findet sich die PHP-Admin-Anwendung.

Also den Inhalt diese Verzeichnisses nach "/home/pacs/xyz00/users/list/doms/lists.example.org/" packen,

  • in "/home/pacs/xyz00/users/list/doms/lists.example.org/conf/config.php" die Variable "$topdir" anpassen
  • die Dateien aus "/home/pacs/xyz00/users/list/doms/lists.example.org/htdocs/" nach "/home/pacs/xyz00/users/list/doms/lists.example.org/htdocs-ssl/" verschieben
  • in "/home/pacs/xyz00/users/list/mlmmj" und in "/home/pacs/xyz00/users/list/doms/lists.example.org/htdocs-ssl/" eine ".htaccess" mit folgendem Inhalt ablegen:
Require valid-user
AuthType Basic
AuthName "mlmmj web-interface"
AuthUserFile /home/pacs/xyz00/users/list/doms/lists.example.org/etc/htpasswd

Und schließlich die "htpasswd"-Datei anlegen.

cd /home/pacs/xyz00/users/list/doms/lists.example.org/etc/
htpasswd -c htpasswd listadmin

Ein Passwort angeben und auf https://lists.example.org schauen.

Mehrere Mailinglisten betreiben

Wenn mehrere Mailinglisten in einem Account und mit einer Admin-Oberfläche betrieben werden soll, empfiehlt sich die Nutzung von Procmail für den Aufruf von mlmmj für die jeweiligen Liste mit ihrem Daten-Verzeichnis.

Dazu trägt man in der Date .forward statt des Aufrufs von mlmmj-recieve einen Aufruf von procmail ein:

|/usr/bin/procmail

Die Konfiguration von Procmail kann generisch erfolgen. Dazu legt man eine Datei .procmailrc mit folgendem Inhalt ins $HOME des Users:

SHELL=/bin/sh
HOMEDIR=/home/pacs/xyz00/users/list
MAILDIR=/home/pacs/xyz00/users/list/Maildir
PMDIR=/home/pacs/xyz00/users/list
VERBOSE=yes
LOGFILE=/home/pacs/xyz00/users/list/var/procmail.log
DEFAULT

:0:
* ^X-Original-To: ()\/[^@+]+
|/usr/bin/mlmmj-receive -F -L /home/pacs/xyz00/users/list/mlmmj/${MATCH}/

:0
{ EXITCODE 67 }


Der kryptische reguläre Ausdruck hinter dem Header X-Original-To: passt auf den Beginn der E-Mail-Adresse bis zum ersten @- oder +-Zeichen. In der Variable MATCH steht also der Name der Mailingliste, d.h. der Name der Verzeichnisses, in dem die Liste verwaltet wird.

Sehr wichtig ist die Zeile DEFAULT zu Beginn der .procmailrc. Die Variable DEFAULT wird von procmail gesetzt. Wir sorgen mit dieser Zeile dafür, dass sie wieder undefiniert ist. Diese Variable wird intern von mlmmj benutzt, wenn sie gesetzt ist. Das führt in Kombination mit procmail zu Fehlfunktionen (vgl. Links).

Links