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.
Table des matières
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 :
Configurer roundcube : un Webmail libre
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 Postfix :
# 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 [email protected] à 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
Plus de détails :
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.*[email protected]\.fr .dossieruser/ ### Serveur :0 * ^From.*[email protected] .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.
Ajouter des themes 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