Installation de mailman sur FreeBSD

../../../../2015/06/16/installation-mailman-fresbsd/
Antoine Van-Elstraete (antoine@van-elstraete.net)
vendredi 19 juin 2015





3 min.

Image d'illustration

Préface

  • le serveur mailman sera ici listes.ndd.tdl
  • la jail se nomme listes.ndd.tdl et a comme ip 192.168.255.1

Création de la jail

ezjail-admin create -f MonTemplateDeJail listes.ndd.tdl 192.168.255.1
ezjail-admin start listes.ndd.tdl
ezjail-admin console listes.ndd.tdl

Installation des dépendances

Serveur mail

J’ai décidé de conserver sendmail dans la jail mailman [1], et d’utiliser un serveur de relais. Celui peut être, par exemple, postfix dans une jail dédiée [2]

La seule chose à modifier est donc le fichier /etc/mail/sendmail.cf, la ligne commençant pas DS : il faut indiquer le relais SMTP :

DSsmtp.ndd.tld

Serveur web

pkg install nginx thttpd
  • nginx est un serveur web, qui affichera l’interface web de mailman.
  • thttpd est un serveur web léger qui sera ici utilisé pour communiquer entre les scripts cgi et nginx.

Voici le bloc server que j’utilise pour nginx :

server {
        listen 192.168.255.1:80;
        server_name listes.ndd.tld;
        root /usr/local;

        location = / {
                rewrite ^ /mailman/listinfo permanent;
        }

        location / {
                rewrite ^ /mailman$uri?$args;
        }

        location = /mailman/ {
                rewrite ^ /mailman/listinfo permanent;
        }

        location /mailman/ {
                proxy_pass http://192.168.255.1:8080/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
        }

        location /cgi-bin {
                rewrite ^/mailman/cgi-bin(.*)$ $1 permanent;
        }

        location /images/mailman {
                alias /usr/local/mailman/icons;
        }
        location /icons {
                alias /usr/local/mailman/icons;
        }

        location /pipermail {
                alias /usr/local/mailman/archives/public;
                autoindex on;
        }
}

Puis la configuration de thttpd (/usr/local/etc/thttpd.conf) :

host=192.168.255.1
port=8080
dir=/usr/local/mailman/cgi-bin
nochroot
user=www
cgipat=/**
logfile=/var/log/thttpd.log

mailman

pkg install mailman

Une message d’avertissement fait son apparition, je dois lancer le script post-install :

root@mailman:~ # env "PKG_PREFIX=/usr/local" sh /usr/local/mailman/bin/FreeBSD-post-install x POST-INSTALL
---> Starting post-install script
---> Running update
No updates are necessary.
---> Checking crontab(5) file for user "mailman"
---> "mailman" already has a crontab.  Not overwriting it
---> Please merge any changes from the standard crontab file
--->     /usr/local/mailman/cron/crontab.in
---> Checking (and fixing) file and directory permissions
Warning: Private archive directory is other-executable (o+x).
         This could allow other users on your system to read private archives.
         If you're on a shared multiuser system, you should consult the
         installation manual on how to fix this.
No problems found
---> Running assorted other checks

Configuration de mailman

Le fonctionnement de mailman requiert une liste nommée mailman. Pour l’ajouter :

cd /usr/local/mailman/bin
./newlist mailman

Les listes se créent ensuite de la même façon, avec la commande newlist.

Configuration de sendmail

Note : la documentation de mailman fait mention d’un script nommé mm-handler mais je ne l’ai pas trouvé dans mon installation.

Pour que sendmail renvoie les messages à destination des listes à mailman, il faut configurer les alias. Pour obtenir les alias à ajouter au fichier /etc/mail/alias, la commande est genalias :

cd /usr/local/mailman/bin
./genalias

Documentation

[1]« The FreeBSD binary package is built for use with Sendmail, and it will not work properly with alternative MTAs such as Exim or Postfix. » est affiché lors de l’installation du paquet mailman, autant suivre ce conseil.
[2]Attention, il faut que ce MTA soit configuré pour relayer les mails à destination de listes.ndd.tld, et que listes.ndd.tld soit configuré avec l’ip de la jail dans /etc/hosts (ou le DNS local) du MTA.