Rainloop est un webmail opensource développé en PHP qui se veut complet et simple d'utilisation. Il gère très bien les protocoles IMAP/SMTP et dispose d'une interface moderne (HTML5/CSS3) très érgonomique, c'est plutôt agréable. Du côté des fonctionnalités, on retrouve toutes celles d'un client mail classique, avec en plus un système de plugins.
Rainloop est très simple à mettre en place. Téléchargez le zip depuis le site officiel et décompressez-le dans le dossier /var/www/rainloop :
wget http://repository.rainloop.net/v2/webmail/rainloop-latest.zip mkdir /var/www/rainloop unzip rainloop-latest.zip -d /var/www/rainloop rm -rf rainloop-latest.zip
Modifiez les permissions pour que le serveur web ait accès au répertoire /var/www/rainloop
cd /var/www/rainloop find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \; chown -R www-data:www-data .
Ajouter un nouveau virtual host Nginx (à adapter selon votre configuration) :
# vim /etc/nginx/sites-enabled/rainloop.conf
server {
listen 80;
server_name webmail.domain.tld;
root /var/www/rainloop;
index index.php;
charset utf-8;
location ^~ /data {
deny all;
}
location / {
try_files $uri $uri/ index.php;
}
location ~* \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Redémarrez Nginx pour prendre en compte le nouveau vhost :
service nginx restart
L'installation est maintenant terminée (2 minutes montre en main 😛), nous allons passer à la configuration. Connectez-vous à l'interface d'administration via cette adresse :
http://webmail.domain.tld/?admin
Normalement vous devez tomber sur un formulaire de connexion, comme celui-ci :
Par défaut les identifiants sont : admin et 12345
Une fois connecté à l'interface d'administration, vous devez ajouter un nouveau domaine. Dans le menu de gauche cliquez sur Domains puis sur + Add Domain. Une nouvelle fenêtre s'ouvre et vous demande de configurer IMAP et SMTP pour ce domaine. C'est exactement la même chose qu'avec Thunderbird, on utilise tous ce qu'on a fait jusqu'à présent.
Une fois les champs remplis, cliquez sur le bouton “Test Connection” pour voir si vous n'avez pas fait d'erreur de saisie. N'hésitez pas à lancer en même temps la commande tail si vous avez des problèmes de connexion :
tail -f /var/log/mail.log
Ajoutez tous les utilisateurs autorisés à se connecter dans le White List (bouton en bas), par exemple pour damien@dams.ovh et virgin@dams.ovh vous devez mettre (les utilisateurs sont séparés par des espaces) :
damien virgin
Allez voir les autres sections de l'espace d'administration, il reste encore pleins de choses à personnaliser à votre guise.
Connectez-vous à votre boîte mail via le formulaire principal :
http://webmail.dams.ovh/
Saisissez les identifiants que vous avez mis lors de la création de votre adresse email via PostfixAdmin et connectez-vous. Si tout se passe bien, vous arrivez dans votre boîte mail. Rainloop s'occupe de son côté d'aller chercher et d'organiser tous vos emails depuis le serveur avec le protocol IMAP :
L'envoie des emails est le gros point fort de Rainloop car il gère le Drag&Drop, l'auto-complétion et les raccoucis claviers
SpamAssassin est un logiciel libre permettant de filtrer les emails afin d'éradiquer au maximum le SPAM. Il fait passer un certain nombre de tests au message et en fonction du résultat de ces tests, il attribue un score qui permettra de savoir si il s'agit d'un email indésirable ou non.
On commence par installer SpamAssassin :
apt-get install spamassassin spamc
Ensuite on modifie le fichier de configuration de Postfix /etc/postfix/master.cf :
smtp inet n - - - - smtpd -o content_filter=spamassassin submission inet n - - - - smtpd -o content_filter=spamassassin
Ajoutez aussi ces deux lignes à la fin du fichier :
spamassassin unix - n n - - pipe user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Ok maintenant on relance postfix avec la commande suivante :
service postfix reload
Dans le fichier /etc/spamassassin/local.cf, décommenter la ligne suivante :
rewrite_header Subject *****SPAM*****
Les mails considérés comme du SPAM auront un sujet préfixé avec SPAM. Ils pourront ainsi être traités comme vous le souhaitez en paramétrant un filtre dans votre client mail.
Ajouter aussi à la fin du fichier local.cf :
report_safe 0 whitelist_auth *@dams.ovh add_header all Report _REPORT_ add_header spam Flag _YESNOCAPS_ add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTS_ autolearn=_AUTOLEARN_ version=_VERSION_ add_header all Level _STARS(*)_ add_header all Checker-Version SpamAssassin _VERSION_ (_SUBVERSION_) on _HOSTNAME_
Pour avoir un rapport détaillé dans les headers de tous les mails, comme ceci :
X-Spam-Report: * -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/, high * trust * [66.45.63.27 listed in list.dnswl.org] * -3.0 RCVD_IN_RP_CERTIFIED RBL: Sender in ReturnPath Certified - Contact * cert-sa@returnpath.net * [Return Path SenderScore Certified {formerly] [Bonded Sender} - <http://www.senderscorecertified.com>] * -2.0 RCVD_IN_RP_SAFE RBL: Sender in ReturnPath Safe - Contact * safe-sa@returnpath.net * [Return Path SenderScore Safe List (formerly] [Habeas Safelist) - <http://www.senderscorecertified.com>] X-Spam-Status: No, score=-10.0 required=5.0 tests=RCVD_IN_DNSWL_HI, RCVD_IN_RP_CERTIFIED,RCVD_IN_RP_SAFE autolearn=ham version=3.3.2 X-Spam-Level: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on smpt.dams.ovh
L'exemple ci-dessus montre un très bon élève (returnpath.net) mais ça sera pas toujours le cas avec les mails que vous recevrez
Dans le fichier /etc/default/spamassassin, modifier ces deux lignes :
ENABLED=1 CRON=1 # Debian <= 7 "Wheezy" CRON=0 # Debian >= 8 "Jessie"
On active le service lors du boot puis on le démarre :
# Debian 7 update-rc.d spamassassin defaults # Debian 8 systemctl enable spamassassin.service
service spamassassin start
Pour finir, ajouter au cron ces 3 lignes avec contab :
# crontab -e # Mise à jour des règles de spamassassin 20 02 * * * /usr/bin/sa-update # Auto-apprentissage de spam assassin 30 02 * * * /usr/bin/sa-learn --ham /var/mail/vhosts/domain.tld/utilisateur/mail/cur/* 40 02 * * * /usr/bin/sa-learn --spam /var/mail/vhosts/domain.tld/utilisateur/mail/.Junk/cur/*
Spamassassin est très intelligent, il peut apprendre tout seul au fur et à mesure que vous recevez des mails, lorsque vous ajoutez manuellement un mail dans le dossier spam (ce qui veut dire qu'il ne l'avait pas détecté en tant que tel), sa-learn –spam permet de mettre à jour le filtrage bayésien en analysant les mails contenus dans le dossier spam, donc Spamassassin s'améliore un peu chaque jour en fonction de vous, si c'est pas cool ça.
Le contraire est aussi possible avec l'option –ham de la commande sa-learn, si Spamassassin considère un mail en tant que spam alors que ce n'est pas le cas (faux positif), vous pouvez lui indiquer en remettant le mail dans le dossier principal de réception (INBOX).
Vous connaissez très certainement les filtres côté clients, tout bon client mail possède un système de filtre permettant de trier automatiquement les mails en fonction de différents critères que vous pouvez définir. Sieve c'est exactement la même chose mais côté serveur, il possède un langage de script pour définir soit même l'ensemble des règles.
Pour installer sieve, exécuter la commande suivante :
apt-get install dovecot-sieve dovecot-managesieved
Éditer le fichier principal de configuration de Dovecot et ajouter “sieve” dans la liste des protocoles :
# /etc/dovecot/dovecot.conf protocols = imap lmtp sieve
Ensuite dans le fichier /etc/dovecot/conf.d/20-lmtp.conf, ajouter le contenu suivant :
protocol lmtp { postmaster_address = postmaster@domain.tld mail_plugins = $mail_plugins sieve }
Dans le fichier /etc/dovecot/conf.d/90-sieve.conf, modifier la configuration du plugin :
plugin { sieve = /var/mail/vhosts/%d/%n/.dovecot.sieve sieve_default = /var/mail/sieve/default.sieve sieve_dir = /var/mail/vhosts/%d/%n/sieve sieve_global_dir = /var/mail/sieve }
Puis :
mkdir /var/mail/sieve/ touch /var/mail/sieve/default.sieve && chown -R vmail:vmail /var/mail/sieve
Par défaut, vous pouvez mettre toutes les règles dans le fichier default.sieve, elles s'appliqueront à toutes les adresses, les règles spécifiques à une adresse doivent être mises dans le fichier /var/mail/vhosts/dams.ovh/adresse/.dovecot.sieve.
Attention si ce fichier existe, le fichier par défaut (default.sieve) ne sera pas lu pour l'utilisateur courant.
Pour ce tutoriel, on va ajouter une règle basique mais très utile :
require ["fileinto"]; if header :contains "Subject" "*****SPAM*****" { fileinto "Junk"; }
Je pense que c'est assez explicite pour comprendre le but de cette règle Et pour finir compiler les règles avec la commande sievec :
sievec /var/mail/sieve/default.sieve
et on redémarre Dovecot :
service dovecot restart
Vous pouvez tester la règle en envoyant un email depuis un autre fournisseur de mail avec le contenu suivant :
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Si tout fonctionne bien vous devriez recevoir le mail automatiquement dans le dossier Spam (Junk). N'hésitez pas à aller voir la documentation, pour créer d'autres règles. L'avantage de ce système c'est que les règles sont côté serveur donc elles s'appliquent à tous vos clients mail, pas besoin de les refaire lorsque vous changez de client.
Rainloop intègre le support de Sieve directement depuis le webmail, nous allons avoir comment activer cette fonctionnalité. Connectez-vous avec votre compte administrateur à rainloop puis aller dans Domains > cliquez sur votre domaine puis sur Sieve configuration et enfin configurer comme sur l'image suivante :
Cliquer sur le bouton “Test” pour tester la connexion avec SieveManager, si c'est bon, le titre de la section sera vert. Maintenant il faut se connecter à un compte utilisateur, aller dans les paramètres > Filtres. Vous pouvez dès à présent configurer vos filtres depuis cette interface. Il existe aussi un plugin similaire pour Thunderbird ici : https://addons.mozilla.org/fr/thunderbird/addon/sieve/