2011/06/01

Quand c'est beau faut le dire

Je voulais monter une jolie mailing liste pour quelques uns de mes projets dont poudriere. Alors je commence à faire le tour du marché pour me rendre compte que soit c'est indécent niveau nombre de dépendances, soit c'est complètement bloat : obligation de passer par les WebUIs, un SGBD etc.

Bref je veux juste une mailing liste quoi !!!

Mais dans ce monde qui ne jure de plus en plus que par les aberrations sous prétexte de modernité et par les solutions tordues parce que c'est "user friendly"... J'avais peur de ne pas trouver de solutions.

J'avais tort et il existe des solutions légères et réellement simples, par exemple :

Vous l'avez compris du coup je suis parti sur mlmmj :)

Alors voila comment mettre en place mlmmj simplement avec du postfix.

Pour commencer l'installation :

$ make -C /usr/ports/mail/mlmmj install clean
$ zfs create -o mountpoint=/data/mailing_lists zdata/mailing_lists

Ayant déjà un utilisateurs mail je vais le réutiliser :

$ chown -R mail:mail /data/mailing_lists

Création de la mailing liste poudriere en tant que user "mail":

$ mlmmj-make-ml.sh -s /data/mailing_lists -L poudriere

Quelques finitions :

$ echo "[POUDRIERE] " > /data/mailing_lists/poudriere/control/prefix
$ cat << EOF >> /data/mailing_lists/poudriere/control/customheaders
Reply-To: poudriere@etoilebsd.net
X-Mailinglist: poudriere
List-Help: <mailto:poudriere+help@etoilebsd.net>
List-Unsubscribe: <mailto:poudriere+unsubscribe@etoilebsd.net>
List-Subscribe: <mailto:poudriere+subscribe@etoilebsd.net>
List-Id: Discussions related to poudriere <poudriere.etoilebsd.org>
List-Post: <mailto:poudriere@etoilebsd.net>
EOF

Vérifier que la crontab de l'utilisateur mail contient bien les entrées pour la maintenance de la mailing liste :

$ crontab -u mail -l
0 */2 * * * "/usr/local/bin/mlmmj-maintd -F -L /data/mailing_lists/poudriere/"

La liste est maintenant prête il faut configurer postfix. Le but ici est de mapper tous les poudriere*@etoilebsd.net vers mlmmj.

Le plus simple pour ce mapping c'est de passer par des regexp. Dans main.cf:

virtual_alias_maps = regexp:/usr/local/postfix/virtual/user.regexp
transport_maps = regexp:/usr/local/etc/postfix/virtual/transport.regexp

Le fichier user.regexp contient la regexp suivante :

/^(poudriere)(\+.+)?@(etoilebsd\.net)$/ ${1}${2}@${3}

La doc officielle présente des exemples plus simple genre:

/^(poudriere.*)$/ ${1}

Mais attention une adresse poudriere@foo.bar matchera et foutera la grouille (oui je me suis fait avoir :)).

Le fichier transport.regexp :

/^poudriere(\+.+)?@(etoilebsd\.net)$/ mlmmj:poudriere

Maintenant tous les mails à destination de la mailing liste chercheront un transporteur nommé mlmmj, il faut donc le spécifier dans master.cf :

mlmmj   unix  -       n       n       -       -       pipe
    flags=DORhu user=mail argv=/usr/local/bin/mlmmj-recieve -F -L /data/mailing_lists/$nexthop/

A noter que l'entrée dans /etc/aliases préconisée par mlmmj est complètement inutile dans notre cas, car on ne tombera jamais dans ce cas.

Pour s'inscrire à la liste poudriere, il vous suffit d'envoyer un mail à : poudriere+subscribe@etoilebsd.net

SurcouF wrote on 2011/06/02 :

Salut,
Il y avait également mailman, qui correspond également à tes besoins (même si c'est en Python). De plus, il semblerait qu'il existe également une interface web pour mlmmj. En tout cas, je le note dans ma liste.

Merci !


obris wrote on 2011/06/06 :

@SurcouF: l'auteur avait bien précisé qu'il ne voulait pas trop de dépendances et encore moins du bloat...


plouf+le+chien wrote on 2011/06/30 :

dans le genre anti-bloatware y'a SmartList qui se compile par dessus procmail et qui fait un boulot excellent, simple rapide et qui n'a strictement rien à envier aux gros bordels fait en python, perl, etc....


Name :
URL (optional) :
Write here: "ETOOMUCHSPAM"
Comments :