Une mailing-list avec sympa

Sympa est un gestionnaire de liste de diffusion open source. Il fournit des fonctionnalités avancées avec une interface Web riche et sécurisée. C'est un projet toujours en développement dont le projet est mature depuis longtemps

Ce tutoriel est compatible avec la version 6.1

Contexte et pré-requis

Tout d'abord, vérifiez que vous avez bien un domaine pouvant faire transiter du mail et en cas, nous pouvez suivre ce tutoriel sur l'installation d'un serveur mail avec postfix.

Pour vérifier que vous aviez un compte mail :

echo "corps du mail"mail -s “test d'envoit” root@localhost

En suite, vérifiez que vous avez bien un serveur web qui tourne. Je peux toujours vous conseiller de mettre en pratique ce tutoriel où vous pourrez avoir du Nginx avec PHP7. Nous utiliserons cette technologies par la suite.

vu que l'interface de wwsympa n'utilise pas PHP mais des scripts écrit en perl, il faudra donc installer le paquet suivant pour qu'ils puissent être exécutés via CGI :

apt install fcgiwrap

Mise en pratique

Partie Sympa

Installons d'abord les dépendances :

apt install sympa

Il se peut qu'il pose des questions lors de l'installation:

  1. Pour la sélection d'un service web : sélectionner autre que apache
  2. “Faut-il configurer la base de données de sympa avec dbconfig-common ?” : répondre oui
  3. Sympa utilise une base de donnée pour enregistrer les utilisateurs liées aux différentes listes. Le menu en propose plusieurs ; Si vous avez déjà une base de donnée qui tourne sélectionnez la bonne option, sinon nous partons sur “sqlite3”.

Partie postfix

Nous ajouterons les valeurs suivante dans le configuration principale :

nano /etc/postfix/main.cf
alias_maps = hash:/etc/aliases,hash:/etc/mail/sympa/aliases
transport_maps = regexp:/etc/postfix/transport_regexp
sympa_destination_recipient_limit = 1
sympabounce_destination_recipient_limit = 1

On indique que tous les mails ayant pour préfixe @domaine.com soit rediriger vers l'utilisateur sympa.

nano etc/postfix/transport_regexp
/^.-owner\@domaine.com$/ sympabounce:
/^.\@domaine.com$/ sympa:

Ajouter les lignes suivantes pour que le service sympa puisse récupérer et traiter les mails :

nano /etc/postfix/master.cf
sympa   unix        -   n   n   -   -   pipe
   flags=R user=sympa argv=/usr/lib/sympa/bin/queue ${recipient}
sympabounce unix    -   n   n   -   -   pipe
   flags=R user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${recipient}

Pour terminer cette partie, il reste à créer les bases et redémarrer le service :

postalias /etc/mail/sympa/aliases
postmap /etc/postfix/transport_regexp
/etc/init.d/postfix restart

Partie Nginx

Il nous reste plus qu'a rendre accessible la gestion du service via le port 80.

nano /etc/nginx/site-enabled/liste.domaine.com
liste.domaine.com
server {
        listen 0.0.0.0:80;
        server_name  api.bruno-tatu.com;
 
        root /usr/lib/cgi-bin/sympa;
 
    rewrite ^/$ /wws permanent;
 
    rewrite ^/sympa/(.*)$ /wws/$1 permanent;
 
    location ^~ /static-sympa/ {
        alias /var/lib/sympa/static_content/;
        access_log off;
    }
    location /50x.html {
        root /usr/share/nginx/html;
    }
    location ~* \.(php|pl|py|jsp|asp|sh|cgi|bin|csh|ksh|out|run|o)$ {
        deny all;
    }
    location ~ /\.ht {
        deny all;
    }
    location /wws {
        gzip off;
        fastcgi_pass   unix:/run/fcgiwrap.socket;
        fastcgi_split_path_info ^(/wws)(.+)$;
        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REQUEST_METHOD     $request_method;
        fastcgi_param  CONTENT_TYPE       $content_type;
        fastcgi_param  CONTENT_LENGTH     $content_length;
        fastcgi_param  PATH_INFO          $fastcgi_path_info;
        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI       $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
 
        # According to RFC3875 (https://tools.ietf.org/html/rfc3875#section-4.1.14) in SERVER_NAME
        # we should put an actual hostname user came to. For nginx it is in $host
        # This will allow to run sympa multihost instances
        fastcgi_param  SERVER_NAME        $host;
 
        fastcgi_param  REMOTE_USER        $remote_user;
        fastcgi_param  SCRIPT_FILENAME    $document_root/wwsympa-wrapper.fcgi;
 
        fastcgi_param  HTTP_HOST           $http_host;
        fastcgi_intercept_errors on;
    }
 
        access_log /var/log/nginx/api.bruno-tatu.com.nginx.access;
        error_log /var/log/nginx/api.bruno-tatu.com.nginx.error error;
 
}

On vérifie que la configuration est correcte et on recharge la configuration Nginx :

nginx -t
/etc/init.d/nginx reload

Maintenant, nous pouvons ouvrir la page http://list.domaine.com et il faudra dans un premier temps s'enregistrer pour ensuite gérer en tant qu'administrateur les listes. Utilisez de préférence un compte utilisateur courent et non pas root!

Par la suite, un mail vous sera envoyer pour confirmer l'accès et ensuite je vous laisse découvrir seul l'outil vu que nous avons fait le plus dur.

Si vous rencontrez des problèmes, les journaux sont vos amis! Par exemple pour savoir ce qu'il se passe lorsque l'on essaie d'envoyer un mail :

tail -f /var/log/mail.log |grep -v "dovecot:"

Documentation complémentaire

  • Dernière modification: 2017/08/01 00:00