mlmmj : Liste de diffusion
À l'heure où il existe des réseaux sociaux en tous genres, avec leurs interfaces spécifiques, ainsi que des applications de messagerie instantanées, des forums, ..., rappelons que les listes de diffusion sont géniales.
Oui, je le dis et je l'assume, les mailing lists, c'est l'avenir car :
- Le mail est robuste, éprouvé.
- Les mails existeront toujours dans 10 ans.
- C'est facile à gérer et administrer.
- Tout le monde est en mesure de gérer des mails de la façon qu'il préfère.
- Il suffit d'une adresse mail pour participer.
Je suis convaincu que les listes de diffusion ont de belles années devant elles.
Ici, je vous propose d'utiliser mlmmj puisqu'il fonctionne bien avec OpenBSD et répond à des exigences fortes en terme de performance, de sécurité et de simplicité.
Installer mlmmj
C'est plus long à écrire qu'à faire :
# pkg_add mlmmj
Ajouter une liste de diffusion
Utilisez la commande "mlmmj-make-ml" fourni avec le port, puis laissez-vous guider.
Voici un exemple pour créer la liste "pizza" sur le domaine "list.chezmoi.tld", soit "pizza@list.chezmoi.tld".
# mlmmj-make-ml Creating Directorys below /var/spool/mlmmj. Use '-s spooldir' to change What should the name of the Mailinglist be? [mlmmj-test] : pizza The Domain for the List? [] : chezmoi.tld The emailaddress of the list owner? [postmaster] : batman@chezmoi.tld For the list texts you can choose between the following languages or give a absolute path to a directory containing the texts. Available languages: ast cs de en fi fr gr it pt sk zh-cn The path to texts for the list? [en] : Don't forget to add this to /etc/aliases: pizza: "|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/pizza/" If you're not starting mlmmj-maintd in daemon mode, don't forget to add this to your crontab: 0 */2 * * * "/usr/local/bin/mlmmj-maintd -F -L /var/spool/mlmmj/pizza/" ** FINAL NOTES ** 1) The mailinglist directory have to be owned by the user running the mailserver (i.e. starting the binaries to work the list) 2) Run newaliases
Assurez-vous que les permissions sont bonnes :
# chown -R _smtpd:_smtpd /var/spool/mlmmj/pizza
Éditez le crontab de root ("# crontab -e") pour ajouter la ligne donnée précédent :
0 */2 * * * /usr/bin/mlmmj-maintd -F -L /var/spool/mlmmj/pizza
Préparer smtpd
Éditez le fichier "/etc/mail/smtpd.conf" pour qu'il traite correctement les mails destinés à votre liste de diffusion :
table aliases "/etc/mail/aliases" [...] action local_mail maildir alias <aliases> [...] match from any for domain "list.chezmoi.tld" action local_mail
Il est important que l'action PRENNE EN COMPTE les alias.
Il faut justement éditer le fichier "/etc/mail/aliases" pour envoyer à mlmmj les messages destinés à votre liste :
pizza:"|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/pizza/"
Terminez avec la commande "newaliases" ou en redémarrant smtpd.
Personnaliser une liste
Comme vous vous en doutez, les fichiers concernant votre liste sont situés dans "/var/spool/mlmmj/pizza".
mlmmj se configure en éditant seulement quelques fichiers situés dans le répertoire "control". Dans notre cas, cela donne "/var/spool/mlmmj/pizza/control".
Voici quelques éléments de configuration non exhaustifs en ajoutant les fichiers suivants :
- "access" : On peut y définir des expressions régulières pour accepter ou non des messages selon leurs entêtes. Pour n'autoriser que les messages au format texte plein (pas de html) :
deny !^Content-Type: text/plain allow
- "customheaders" : Entêtes ajoutés aux messages envoyés par la liste. Pour être sûr que les participants répondent à la liste, vous pouvez y mettre "Reply-To: pizza@chezmoi.tld".
- "footer" : Texte ajouté à la fin des messages. Vous pouvez y ajouter de l'aide par exemple :
Quitter la liste: pizza+unsubscribe@list.chezmoi.tld Anciens messages (N: un nombre): pizza+get-N@list.chezmoi.tld Aide: pizza+help@list.chezmoi.tld
- "notifysub" : La présence de ce fichier permet d'être averti lorsque quelqu'un sinscrit.
On peut aussi modifier le contenu des modèles de message en allant les chercher dans "/var/spool/mlmmj/pizza/text".
Consultez la documentation pour d'autres éléments de configuration