Mlmmj: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(procmail ohne -p)
Zeile 71: Zeile 71:
crontab wie folgt (immer noch als ''xyz00-list''):
crontab wie folgt (immer noch als ''xyz00-list''):


  MAILTO=webmaster@example.org
MAILTO=webmaster@example.org
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
  HOME=/home/pacs/xyz00/users/list
HOME=/home/pacs/xyz00/users/list
  SHELL=/bin/bash
SHELL=/bin/bash
  LANG=en_US.UTF-8
LANG=en_US.UTF-8
  # m h  dom mon dow  command
# m h  dom mon dow  command
  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 trage ich noch die gewünschten E-Mail-Adressen ein:
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 Ce)
Zeile 94: Zeile 94:
Ein Prefix in der Betreffzeile setzen, z.B.: "[discuss]".
Ein Prefix in der Betreffzeile setzen, z.B.: "[discuss]".


  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:
Die Liste darf nur E-Mails von eingetragenen Abonnenten weiterleiten:


  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:
Das Abonnement muss vom Listen-Owner bestätigt werden:


  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, so dass Antwort-EMails immer an den Verteiler 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
  echo "Reply-To: discuss@example.org" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/customheaders
  echo "Reply-To: discuss@example.org" > /home/pacs/xyz00/users/list/mlmmj/discuss/control/customheaders


Weitere Möglichkeiten finden Sie (wie oben bereits angegeben)  
Weitere Möglichkeiten finden Sie (wie oben bereits angegeben)  
Zeile 122: Zeile 122:
Als Paket-Admin eine Domain aufschalten:
Als Paket-Admin eine Domain aufschalten:


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


Und weiter als "xyz00-list".
Und weiter als "xyz00-list".
Zeile 135: Zeile 135:
* 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:  
* 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
Require valid-user
  AuthType Basic
AuthType Basic
  AuthName "mlmmj web-interface"
AuthName "mlmmj web-interface"
  AuthUserFile /home/pacs/xyz00/users/list/doms/lists.example.org/etc/htpasswd
AuthUserFile /home/pacs/xyz00/users/list/doms/lists.example.org/etc/htpasswd


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


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


Ein Passwort angeben und auf
Ein Passwort angeben und auf
Zeile 154: Zeile 154:
Dazu trägt man in der Date ''.forward'' statt des Aufrufs von ''mlmmj-recieve'' einen Aufruf von ''procmail'' ein:
Dazu trägt man in der Date ''.forward'' statt des Aufrufs von ''mlmmj-recieve'' einen Aufruf von ''procmail'' ein:


    |/usr/bin/procmail -p
|/usr/bin/procmail


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


    SHELL=/bin/sh
SHELL=/bin/sh
    HOMEDIR=/home/pacs/xyz00/users/list
HOMEDIR=/home/pacs/xyz00/users/list
    MAILDIR=/home/pacs/xyz00/users/list/Maildir
MAILDIR=/home/pacs/xyz00/users/list/Maildir
    PMDIR=/home/pacs/xyz00/users/list
PMDIR=/home/pacs/xyz00/users/list
    VERBOSE=yes
VERBOSE=yes
    LOGFILE=/home/pacs/xyz00/users/list/var/procmail.log
LOGFILE=/home/pacs/xyz00/users/list/var/procmail.log
    DEFAULT
DEFAULT
   
    :0:
:0:
    * ^X-Original-To: ()\/[^@+]+
* ^X-Original-To: ()\/[^@+]+
    |/usr/bin/mlmmj-receive -F -L /home/pacs/xyz00/users/list/mlmmj/${MATCH}/
|/usr/bin/mlmmj-receive -F -L /home/pacs/xyz00/users/list/mlmmj/${MATCH}/
   
    :0
:0
    { EXITCODE 67 }
{ EXITCODE 67 }





Version vom 7. April 2022, 17:31 Uhr

Mailing List Management Made Joyful

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

Vergleichen Sie dazu auch den Wikipedia-Artikel: Mailingliste

Alternative: Mailman_3_installieren

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

mlmmj

Voraussetzungen

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

Für den Betrieb der Mailingliste empfehle ich das Anlegen eines Users für diesen Zweck mit hsadmin.

Sei mein Paket xyz00 und der User xyz00-list.

Sei meine Domain example.org und die E-Mail-Adresse für die Liste discuss@example.org.

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.

Hier werden User und E-Mail-Adresse mit Hilfe des hsadmin-Interpreters hsscript angelegt:

 xyz00@h03:~$ hsscript -i
 Password: *************
 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

Einrichtung

Ich melde mich auf der Linux-Kommandozeile als User xyz00-list an.

Für den User 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 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 a 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

Damit ist unter "/home/pacs/xyz00/users/list/mlmmj" ein Verzeichnis "discuss" angelegt, 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

Für den User lege ich in seinem Heimat-Verzeichnis die Datei ".forward" mit folgenden Inhalt an (Achtung, die Anführungszeichen nicht vergessen!):

 "|/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 übergeben und dort verarbeitet werden.

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

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 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 sabine.beispiel@arcor.de -c 

Dabei bewirkt "-c", dass der Abonnent eine Begrüßungs-Nachricht erhält. Alternativ kann man "-C" (großes Ce) 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

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

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

Das Abonnement muss vom Listen-Owner bestätigt werden:

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

Einen "Reply-To:"-Header setzen, so dass Antwort-EMails immer an den Verteiler 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