Roundcube : un Webmail libre

Pour changer un peu de Windows, retour sur Linux, avec un article sur Roundcube.
J’ai abandonné Gmail en test depuis quelques mois pour passer à Roundcube.
Roundcube est un projet libre d’un webmail qui permet donc de lire ses mails en ligne directement depuis son serveur.
Roundcube est aussi utilisé par OVH pour proposer une offre d’hébergement de mail.

Je l’avais testé, il y a quelques années après Squirrelmail.
Voici une présentation de Roundcube.

Introduction

Le serveur utilise Postfix + Spamassassin, pas d’antivirus Amavis ou ClamAv, vu que je cherche justement à en recevoir, c’est d’ailleurs une des raisons du départ de Gmail.
Roundcube sert à lire les mails en Imap, on utilisera ici Dovecot, il existe aussi courrier-imap.

La page du projet : https://roundcube.net/

Il existe quelques thèmes mais aussi une base de données de plugins : https://plugins.roundcube.net/

La page d’identification de Roundcube :

et la page de lecture de mails :

Configuration du serveur mail

Côté serveur mail, j’utilise :

  • Postfix comme MTA
  • Spamassassin pour le filtrage de spam
  • Procmail pour créer des règles de messagerie (des plugins existent sur Roundcube, je n’ai pas testé)
  • Dovecot pour le serveur Imap

Le but ici est donc d’utiliser Postfix pour récupérer les mails et les transmettre dans un Maildir de l’utilisateur Linux.
Postfix sert aussi à envoyer les mails vers l’extérieur.
Devecot lui est le serveur Imap qui sera consulté par Roundcube pour consulter les mails.

Je ne m’étendrai pas sur la configuration de Postfix et SpamAssassin étant donné qu’il y a des centaines et des centaines de tutos sur le net.

pour installer tout ce beau monde :

aptitude install postfix spamassassin devecot procmail

Postfix

La configuration /etc/postfix/main.cf de post

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

myhostname = ns206195.ovh.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = ns206195.ovh.net, localhost.ovh.net, localhost, malekal.com
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
mailbox_command = /usr/bin/procmail -Y -a $DOMAIN
home_mailbox = Maildir/

Les deux derniers lignes indiquent d’utiliser procmail pour et Maildir comme structure de répertoire de stockage de mail.

Dans le fichier /etc/aliases, vous devez faire correspondre les adresses emails à l’utilisateur Linux.
Par exemple :

web: malekalmorte

afin d’associer l’adresse web@malekal.com à l’utilisateur Linux malekalmorte

une fois le fichier créé, il faut passer la commande : postalias /etc/aliases

Afin de créer le répertoire maildir, vous pouvez utiliser la commande suivante, remplacez le nom utilisateur par votre utilisateur Linux : mkdir -p /home/utilisateur/Maildir/{cur,new,tmp}

Relancez postfix /etc/init.d/postfix restart

Procmail

Supprimer le fichier /etc/procmailrc : rm /etc/procmailrc
Sinon le fichier de configuration dans home ne sera pas joué.

Créez le fichier /home/utilisateur/.procmailrc
dont voici un exemple de contenu.
On joue sur les adresses mail dans From/To et sujets afin de pouvoir rediriger les mails vers des dossiers en particulier.
On peut aussi jouer sur d’autres contenus, comme le Flag Spam qui sera inséré par SpamAssassin.
Il faut bien entendu avoir créé ces derniers dans votre arborescence MailDir.

# Preliminaires
SHELL=/bin/bash
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
ORGMAIL=$MAILDIR
LOCKFILE=$HOME/lockfile.lock
DEFAULT=$HOME/Maildir/
BITBUCKET=/dev/null
LOGFILE=/var/log/procmailrc.log
VERBOSE=yes
LOGABSTRACT=all

:0
* ^From.*mail@hotmail\.fr
.dossieruser/

### Serveur
:0
* ^From.*root@malekal.com
.serveur/

:0
* ^Subject:.*honeypot check.*
.serveur/

:0
* ^To.*@ml.ovh.net
.ml-ovh/

### SPAM
:0
* ^X-Spam-Flag: YES
.junkmail/

:0
$DEFAULT

SpamAssassin

côté spamassassin, on créé l’utilisateur qui va bien :

mkdir /var/spool/spamassassin
useradd -d /var/spool/spamassassin -s /bin/false spamassassin
chown spamassassin:spamassassin /var/spool/spamassassin -Rc

Il faut compiler dcc :

cd /tmp
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1*
./configure --with-uid=postfix
make
make install
chown -R postfix:postfix /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd

puis le contenu du fichier /etc/spamassasin/local.cf

dns_available yes

# Activation du systeme Bayes
use_bayes 1
bayes_auto_learn 1
bayes_learn_to_journal 1
bayes_journal_max_size 0
bayes_path /var/spool/spamassassin/bayes

# Activation de l'auto whitelist
use_auto_whitelist 1
auto_whitelist_path /var/spool/spamassassin/auto-whitelist
auto_whitelist_file_mode 0666

# Activation de DCC
use_dcc 1
dcc_timeout 8
dcc_home /var/spool/spamassassin/dcc
dcc_path /usr/local/bin/dccproc
dcc_dccifd_path /usr/local/bin/dccifd
# Activation de Pyzor
use_pyzor 0

# Activatin de Razor
use_razor2 1
razor_timeout 8

# Optimisation des scores
score DCC_CHECK 4.500
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score RAZOR2_CF_RANGE_51_100 3.500
score BAYES_99 5.300
score BAYES_95 4.500
score BAYES_80 3.500
score BAYES_60 2.500
score BAYES_50 2.000

# Langages
ok_languages fr
ok_locales fr

#required_hits 5

#add_header all Report _REPORT_
header Subject *** SPAM ***
report_safe 1

Pour faire fonctionner Spamassassin avec Postfix, éditez le fichier /etc/postfix/master.cf

modifiez la ligne smtp par ceci :

smtp inet n - n - - smtpd -o content_filter=spamassassin:

A la fin, ajoutez la ligne :

spamassassin unix - n n - - pipe flags=Rq user=spamassassin argv=/etc/postfix/spamassassin.sh -f ${sender} -- ${recipient}

Redémarrez spamassassin : /etc/init.d/spamassassin restart

Dovecot

Rien de spécial à faire côté Dovecot, cependant, il est possible de limiter l’écoute sur localhost, si vous ne comptez pas utiliser le serveur imap autrement que par Roundcube.
Pour cela, il faut éditer le fichier /etc/dovecot/conf.d/10-master.conf

et dans la partie des service, ajoutez address = 127.0.0.1

service imap-login {
inet_listener imap {
address = 127.0.0.1
#port = 143
}
inet_listener imaps {
address = 127.0.0.1
#port = 993
#ssl = yes
}

Relancez dovecot par la commande : /etc/init.d/dovecot restart

Un coup de netstat pour vérifier l’écoute : netstat -lpn|grep imap
on doit alors voir que 127.0.0.1

tcp 0 0 127.0.0.1:143 0.0.0.0:* LISTEN 7156/dovecot

Roundcube

Téléchargez et décompressez le .tar.gz : https://roundcube.net/download/
Voici un exemple d’entrée pour nginx :

server {

listen 443;
server_name mail.malekal.com;

ssl on;

ssl_certificate /etc/ssl/xxxxx.crt;
ssl_certificate_key /etc/ssl/xxx.key;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_session_timeout 24h;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;

root /home/www/xxxxxxxxxx/;
access_log  /home/logs/access.log;
error_log  /home/logs/error.log;

location / {
index index.php;
include /etc/nginx/allow.conf;
deny    all;
try_files $uri/ /index.php?q=$uri&$args;
}

location ~* /README|INSTALL|LICENSE|SQL|bin|CHANGELOG|config$ {
deny all;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
fastcgi_cache_bypass 1;
fastcgi_no_cache 1;
include fastcgi_params;
fastcgi_keep_conn on;
}
}

il faut se rendre ensuite à partir d’un navigateur internet sur l’URL installer.
Ex : http://mail.malekal.com/installer

Laissez-vous ensuite guider afin de donner les indications de connexion à la base de données.
Les tables seront alors créées.

Une fois la configuration terminée, supprimez le dossier installer.

Tentez ensuite de vous connecter.
Le dossier Logs de Roundcube contient des informations et erreurs de connexion.

Plugins Roundcube

Il est possible d’ajouter des plugins à Roundcube.
Cela peut être installé par l’administrateur et même l’utilisateur à travers plugin-installer.

Pour installer un plugin, vous devez installer ce dernier dans le dossier /plugins de roundcube.
La plupart du temps, il faut utiliser git, soit donc :

git clone http://url-git-du-plugin

Editez ensuite config/config.inc.php
Vous devez activer les plugins dans le tableau config[‘plugins’]

Exemple :

$config['plugins'] = array(
'autocomplete',
'markasjunk2',
'emoticons',
'zipdownload',
'jqueryui', // dependency
'contextmenu', // dependency
'contextmenu_folder', // plugin proper
'twofactor_gauthenticator',
);

Parmi les thèmes sympas, vous avez markasjunk2 : https://github.com/JohnDoh/Roundcube-Plugin-Mark-as-Junk-2
Ce plugin permet d’ajouter un bouton Pourriel sur la barre d’icône afin de déplacer le mail dans le dossier SPAM.
En outre le mail sera soumis à SpamAssassin.

Dans le fichier de configuration du plugin : plugins/markasjunk2/config.inc.php
Vous pouvez modifier les variables suivantes, si vous désirez soumettre le mail à Spamassassin.

$config['markasjunk2_learning_driver'] = "cmd_learn";

$config['markasjunk2_unread_ham'] = false;

$config['markasjunk2_spam_flag'] = 'Junk';

$config['markasjunk2_toolbar'] = 1;

$config['markasjunk2_spam_cmd'] = "/usr/bin/sa-learn -D --spam %f";

$config['markasjunk2_ham_cmd'] = "/usr/bin/sa-learn -D --ham %f";

Contextmenu est une extension qui permet d’ajouter des menus sur le clic droit, avec les options les plus communes : https://plugins.roundcube.net/packages/johndoh/contextmenu

Cette extension ajoute une identification à deux facteurs : https://github.com/alexandregz/twofactor_gauthenticator

Il existe des plugins pour ajouter un calendrier.
Installer un plugin imap qui télécharge des mails provenant d’autres boites.
Un plugin fetchmail pour créer des règles de messagerie.
etc.

Theme Roundcube

Il existe aussi des themes pour Roundcube, certains permettent de passer le webmail en version mobile.
Vous en trouverez sur la page : http://www.roundcubeforum.net/index.php?board=28.0
Décompressez le fichier dans le dossier skins.

Rendez-vous dans les paramètres puis interface utilisateur.
Le nouveau theme doit apparaître.

Ce skin est sympa : https://github.com/beliys/harry/blob/master/README.md

Autre liens

Pour aller plus loin dans l’installation d’un serveur mail (MTA) : Installation et configuration Postfix avec SPF + DKIM

(Visité 467 fois, 4 visites ce jour)

Vous pouvez aussi lire...

Les Tags : #Windows10 - #Windows - #Tutoriel - #Virus - #Antivirus - #navigateurs WEB - #Securité - #Réseau - #Internet