Nginx : intégration complète de Mailman
- Mardi 6 octobre 2009
- Publié dans Administration . Hébergement . Linux
- Par Boris HUISGEN
- Ecrire
Pour utiliser Mailman avec Nginx, il n’y a aucunement besoin d’un serveur externe pour l’exécution CGI. Une configuration adaptée permet de se passer du serveur THTTPD, utilisé dans ce tutorial.
En premier lieu, lisez mon article traitant de l’exécution CGI/Perl sous Nginx et installez y le wrapper. Il reste ensuite à configurer les deux logiciels.
Côté Nginx, toute la difficulté se situe dans le passage des arguments aux scripts CGI. Par ex :
URL : http://127.0.0.1/mailman/listinfo/my_mailing_list
URI pour Mailman : listinfo/my_mailing_list
Le script CGI listinfo est exécuté avec la variable d’environnement PATH_INFO utilisée pour passer les arguments, égale ici à /my_mailing_list. Bref, des rewrites rules bien conçues et une variable spécifique pour le module FastCGI et Mailman peut ensuite fonctionner à 100 % grâce à Nginx.
Voici la directive de l’hôte :
server {
listen 80;
server_name localhost;
root /var/www/localhost/htdocs;
location /mailman/ {
rewrite "^/mailman/$" http://$host/mailman/listinfo;
set $script $fastcgi_script_name;
set $args /;
if ($request_uri ~ "^/mailman/(.[^\/]*){1}(.*)$" ) {
set $script /$1;
set $args $2;
}
fastcgi_pass unix:/tmp/fcgi-perl.sock;
fastcgi_param SCRIPT_FILENAME /usr/lib/mailman/cgi-bin$script;
fastcgi_param PATH_INFO $args;
include fastcgi_params;
}
location /images/mailman/ {
alias /usr/lib/mailman/icons/;
}
eau de Mailman, les scripts CGI doivent être exécutés par l’utilisateur déclaré lors de sa compilation (option –with-cgi-gid du script configure). Si vous ne pouvez pas modifier cette valeur (ce qui est le cas avec une installation d’un package binaire), il faut modifier les droits sur la socket UNIX fcgi-perl.sock et ajouter l’utilisateur au groupe utilisé par Nginx.
Par exemple, sous Gentoo, je fixe le propriétaire de la socket à apache:nginx et j’ajoute l’utilisateur apache (mailman) au groupe nginx :
# ls -l fcgi-perl.sock srw-rw---- 1 apache nginx 0 2009-10-06 11:53 fcgi-perl.sock
Rendez-vous ensuite sur http://127.0.0.1/mailman et cliquez sur une mailing list pour valider la configuration.

Pour intégrer un moteur de recherche dans les archives Mailman, vous pouvez vous diriger vers namazu : http://www.namazu.org/ et cet utilitaire de bridge : http://www.fmp.com/namazu/
Copie du vhost avec URL type sur page de recherche : http://my.domain/mailman/search/
server_name my.domain;
root /var/www/localhost/htdocs;
location /mailman/ {
rewrite « ^/mailman/search/(.[^\/]*){1}$ » http://$host/mailman/nmz_wrapper.cgi?query=&submit=Search!&idxname=$1&max=20&result=normal&sort=score;
rewrite « ^/mailman/$ » http://$host/mailman/listinfo;
set $script $fastcgi_script_name;
set $args /;
if ($request_uri ~ « ^/mailman/(.[^\/]*){1}(.*)$ » ) {
set $script /$1;
set $args $2;
}
if ($request_uri ~ « ^/mailman/nmz_wrapper.cgi[?/](.*)$ » )
{
set $script /nmz_wrapper.cgi;
set $args /nmz_wrapper.cgi?$1;
}
fastcgi_pass unix:/tmp/fcgi-perl.sock;
fastcgi_param SCRIPT_FILENAME /usr/lib/mailman/cgi-bin$script;
fastcgi_param PATH_INFO $args;
fastcgi_param QUERY_STRING $args;
include fastcgi_params;
}
location /mailman-icons/ {
alias /usr/lib/mailman/icons/;
}