Un de mes précédents billets présentait l’installation d’un serveur de mails sur Ubuntu Server. Une fois installé, il était possible d’accéder à son courrier grâce à un client de messagerie.
Il peut-être pratique, en plus de cela, d’accéder à ses mails par un webmail de n’importe où (notamment au travail, où il ne sera pas filtré comme celui de gmail ou de yahoo, puisque c’est un webmail perso).
Je profite de la réinstallation à neuf de mon serveur pour présenter l’installation de RoundCube, un webmail assez moderne, à installer sur LAMP (avec accès HTTPS) sur Ubuntu Server.
Voici ce que ça donne une fois installé :

Je partirai du principe que le webmail est sur la même machine que le serveur SMTP et que le répertoire ~/Maildir (contenant les mails), et qu’il sera le seul site hébergé en HTTPS sur le serveur.
Téléchargement
Tout d’abord, il faut télécharger l’archive sur le site de RoundCube (la version complète), et l’extraire dans un répertoire :
tar xzf roundcubemail-0.3.1.tar.gz
Il est plus pratique de le renommer :
mv roundcubemail-0.3.1 mail
Ensuite, il faut donner les droits au serveur d’écrire dans les répertoires temp et logs :
sudo chmod -R 777 mail/temp mail/logs
Enfin, faire un lien du répertoire d’installation de RoundCube (par exemple ~/mail) dans /var/www.
sudo ln -s ~/mail/ /var/www
Préparation de la base de données
Il faut créer une base de données qui sera utilisée par RoundCube, avec son propre utilisateur. Pour cela, démarrer mysql en tant qu’administrateur (le login et le mot de passe choisi lors de la configuration de mysql) :
$ mysql -uroot -p Enter password:
Ensuite, créer une base de données :
mysql> CREATE DATABASE mail; Query OK, 1 row affected (0,00 sec)
Puis un utilisateur mysql (par exemple mailuser/unmotdepasse) :
mysql> GRANT ALL PRIVILEGES ON mail.* TO mailuser@localhost IDENTIFIED BY 'unmotdepasse'; Query OK, 0 rows affected (0,00 sec)
Voilà, la base de données est prête à accueillir RoundCube.
Configuration d’Apache
Tout d’abord, il faut activer le mod ssl d’apache :
sudo a2enmod ssl
Et renseigner le champ date.timezone de php.ini :
sudo nano /etc/php5/apache2/php.ini
Remplacer la ligne :
;date.timezone =
par :
date.timezone = 'Europe/Paris'
Ensuite, il faut créer un VirtualHost qui décrit à Apache le site qu’il doit héberger (le nom du site sur lequel il répond en http, quels répertoires doivent être accessibles, etc.).
Voici un modèle (qui correspond à mon VirtualHost), qui permet :
- d’afficher le site contenu dans
/var/www/maillorsqu’une requête arrive sur le port 443 (https), c’est-à-dire quand je tapehttps://mail.rom1v.comdans un navigateur ; - d’interdire l’accès aux répertoires
config,tempetlogs; - de rediriger automatiquement
http://mail.rom1v.comvershttps://mail.rom1v.com.
NameVirtualHost *:443 <VirtualHost *:80> ServerName mail.rom1v.com Redirect / https://mail.rom1v.com/ </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/mail ServerName mail.rom1v.com SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <Directory /var/www/mail/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> <Directory /var/www/mail/config> Options -FollowSymLinks AllowOverride None </Directory> <Directory /var/www/mail/temp> Options -FollowSymLinks AllowOverride None </Directory> <Directory /var/www/mail/logs> Options -FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> ErrorLog /var/log/apache2/mail_error.log CustomLog /var/log/apache2/mail_access.log combined </VirtualHost>
Ce fichier, une fois adapté à votre serveur, est à écrire dans /etc/apache2/sites-available/ (dans un fichier nommé comme votre site par exemple, mail.rom1v.com pour moi).
Il faut ensuite l’activer :
sudo a2ensite mail.rom1v.com
Et recharger Apache :
sudo /etc/init.d/apache2 reload
Configuration de RoundCube
Il ne reste plus qu’à aller sur http://votreserveur/installer avec un navigateur pour configurer RoundCube.

Bien sûr, lors de la première connexion, Firefox vous alerte car il ne connaît pas votre certificat SSL (qui est auto-signé), il suffit de lui indiquer que vous faites confiance à ce site (puisque c’est le vôtre) en ajoutant une exception.
L’étape 1 (Check environment) doit bien se passer (à part quelques modules optionnels que vous n’avez pas, ce n’est pas grave).
Pour l’étape 2 (Create config) :
- Choisir un
product_name: le titre des pages souhaité ; - Activer
ip_check; - Désactiver
enable_spellcheck(sinon tous vos mails seront envoyés à Google) ; - Renseigner les données pour l’accès à la base de données (que nous avons créée tout à l’heure) ;
- Dans la partie IMAP, renseigner uniquement
default_hostà la valeurlocalhost; - Laissez par défaut le reste de la partie IMAP et la partie SMTP (vu que les mails sont sur la même machine).
Lors de la validation, deux fichiers sont générés. Il faut les télécharger et les placer dans le répertoire config/ (ce n’est pas très pratique d’ailleurs, lorsqu’on accède au serveur par ssh, devoir télécharger les fichiers localement pour les renvoyer au serveur est un peu tordu).
L’étape 3 (Test config) permet de tester que tout est OK. Il faut cliquer sur Initialize database.
Une fois ces étapes effectuées, rendez-vous sur l’adresse du webmail, vérifiez que ça fonctionne (avec votre login système et votre mot de passe). Si tout est ok, supprimez le répertoire installer/ :
rm -rf /var/www/mail/installer
Modifier les préférences
Une fois connecté, il est possible de changer les préférences utilisateur. Je vous laisse découvrir les options par vous-même, mais certaines sont importantes.
Tout d’abord, dans l’onglet identités, renseignez votre adresse mail (par défaut c’est login@localhost, ce qui posera des problèmes à ceux qui voudront vous répondre).
Ensuite, activez les options qui concernent la suppression d’un message sur un compte IMAP dans Préférences du serveur de l’onglet Préférences :
- Mettre le drapeau de suppression au lieu de supprimer (sinon vous ne pourrez pas supprimer de messages) ;
- Ne pas montrer les messages supprimés (sinon vous les verrez encore en barré)
Conclusion
Bravo. Vous avez maintenant un serveur mail perso avec un accès webmail sur HTTPS en plus de votre accès IMAP/TLS. Vous gagnez 1 point de liberté et 1 point de confort.

#1 par Guizmo à 21 novembre 2009 - 23 h 59 min
Citation
Ne serait-il pas intéressant de faire une Autorité de Certification sur ton serveur qui pourrait créer des certificats pour le HTTPS, SMTPS, IMAPS, etc … ?
Ainsi, tu n’aurais qu’à importer le certificat de ta CA et tu n’aurais plus de problème de certificats non-reconnus.
#2 par Simtris à 22 novembre 2009 - 13 h 08 min
Citation
Certificat gratuit pour 1 domaine.
J’ai d’ailleur un article à ce sujet qui traine son mon blog : http://simtris.free.fr/blog/?p=314
Pour continuer dans l’idée du commentaire précédent et atteindre le nirvana du chiffrement. Tu dois pouvoir coupler ça avec une authorité de certification.
#3 par ®om à 22 novembre 2009 - 13 h 20 min
Citation
Effectivement, avoir une autorité de certification pourrait être intéressant (plus pour apprendre à la mettre en place que pour l’utiliser d’ailleurs, car avoir une exception à rajouter dans firefox, ça ne coûte pas plus cher que de rajouter l’autorité de certification).
Je verrai peut-être ça un jour
#4 par djib à 22 novembre 2009 - 16 h 24 min
Citation
Et pour les plus paresseux il y a « apt-get install roundcube »…
#5 par Guizmo à 23 novembre 2009 - 0 h 00 min
Citation
Tout à fait d’accord, c’est surtout pour apprendre à la mettre en place et/ou pour bien comprendre comment ça marche.
Mais d’un autre coté, si tes certificats servent à quelqu’un d’autre qu’a toi, ils n’ont pas à se demander « ce certificat vient bien de chez ®om ? », ils sauront qu’il vient de chez toi puisqu’il auront le certificat de ta CA.
Bon après, sinon c’est vrai que pour ce que ça apporte …
#6 par dan à 23 novembre 2009 - 11 h 05 min
Citation
heu….alors tout ceci m’aide bcp hein car ayant moi aussi un serveur mail perso je m’intéresse vachement au sujet.
Donc moi j’ai zarafa en tant que serveur mail. L’avantage, c’est que ca permet de synchroniser mail, calendrier et taches avec un mobile !
Mais vu que j’aime bien tester un peu d’autre solution, j’aimerais savoir, avec ta solution, faut utiliser funambol non ? (le serveur funambol) et ca synchroniserait alors que les mails, et pas les taches et pas le calendrier ?
#7 par ®om à 23 novembre 2009 - 11 h 11 min
Citation
Honnêtement, je n’en ai aucune idée. Je ne synchronise pas de tâches ni de calendrier. C’est possible d’ailleurs avec evolution de se synchroniser sur un calendrier (auto-hébergé)?
#8 par Respawner à 7 décembre 2009 - 18 h 42 min
Citation
Intéressant, moi qui cherchait à faire ceci. Cependant, j’ai un souci au test de la configuration de Roundcube. Pas moyen de se connecter avec le protocole IMAP. L’envoi de mail marche mais le login sur le webmail ne fonctionne pas à cause de ça. J’ai bien mis ‘localhost’ en tant que ‘default_host’ et le port IMAP est ouvert au niveau de ma configuration du firewall. Une idée ?
#9 par florenth3me à 20 décembre 2009 - 3 h 50 min
Citation
Bonjour ou bonsoir à toi!
Ce simple commentaire pour te remercier pour toutes ces informations/tuto que tu nous offres gracieusement. Tu prends du temps, et c’est tout à ton honneur, car peu de gens sont visiblement capable d’en faire autant dans le monde où nous vivons aujourd’hui…
Enfin bref, merci pour ce que tu apportes aux lecteurs de passage ici, et bonne continuation à toi ! (-;
Pingback: Ajouter l’authentification SMTP sur un serveur mail « ®om's blog
#10 par phil à 11 mars 2010 - 0 h 03 min
Citation
J’aime beaucoup tes articles Rom
Concernant Roundcube, est-ce lui qui conserve les mails que tu envoies (pas ceux que tu reçois qui sont je pense dans le Maildir de ton user, grâce à dovecot) ?
Si oui, tu sais où ils sonts ? En base ? Si je me connecte d’une autre façon à mon mail, je ne vois pas ce que j’ai envoyé je suppose :S
Existe-t-il une façon de les stocker à la manière de ce que permet IMAP pour les messages reçus ou est-ce que je rêve ?
J’espère que tu auras des éléments de réponse sur tout ça
Bravo encore pour tes sujets.
#11 par ®om à 11 mars 2010 - 11 h 07 min
Citation
Les mails envoyés (et les brouillons) sont des dossiers « comme les autres » dans Maildir (
.Sentet.Draftspar exemple), et dans chacun des clients, tu les spécifies dans les préférences.Ainsi, quand tu envoies un message, que ça soit à partir du webmail, du client lourd ou du téléphone portable, tu y a accès de n’importe où, vu que ces dossiers sont sur le serveur.
Sinon effectivement ça serait un peu galère pour récupérer ses éléments envoyés.
#12 par phil à 11 mars 2010 - 13 h 39 min
Citation
Je ne trouvais pas ces répertoires, je savais pourtant qu’ils devaient commencer par un point et donc être cachés : je suis distrait
En tout cas, je comprends mieux grâce à toi. Roundcube permet donc l’équivalent d’un maildirmake, j’adore.
Ta série d’article sur la question est très sympa, j’ai bientôt finit de copier/coller sur mon serveur !
A bientôt.