~rom1v/blog { un blog libre }

Installer un webmail (Roundcube) sur Ubuntu Server

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é :

roundcube

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 vi /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/mail lorsqu’une requête arrive sur le port 443 (https), c’est-à-dire quand je tape https://mail.rom1v.com dans un navigateur ;
  • d’interdire l’accès aux répertoires config, temp et logs ;
  • de rediriger automatiquement http://mail.rom1v.com vers https://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.

firefox-ssl

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 valeur localhost ;
  • 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.

Commentaires

Guizmo

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.

:) Je vais aussi commenter la partie certificat, mais d’un point de vue plus pratique : prend un certificat publique chez StartSSL.

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.

®om

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 :-)

Et pour les plus paresseux il y a apt-get install roundcube

Guizmo

@®om

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 :-)

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 …

dan

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 ?

®om

@dan

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 ?

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é) ?

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 ?

florenth3me

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 ! (-;

[…] La configuration de postfix présentée dans mon premier billet limitait (dans un but de sécurité) l’envoi d’un mail à une personne distante qu’à partir du réseau local (ou une liste de réseaux prédéfinis). Cela est parfait lorsqu’on envoie toujours les mails de chez soi, avec au besoin la possibilité d’envoyer un mail de n’importe où grâce au webmail. […]

phil

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.

®om

Les mails envoyés (et les brouillons) sont des dossiers “comme les autres” dans Maildir (.Sent et .Drafts par 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.

phil

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.

[…] l’auto-hébergement des mails : Hébergez vos mails sur Ubuntu Server (et libérez-vous) Installer un webmail (RoundCube) sur Ubuntu Server Ajouter l’authentification SMTP sur un serveur mail Trier ses mails directement sur le serveur […]

[…] minimum vital, mais vous pouvez trouver des fonctionnalités à mettre en place (un webmail tel que RoundCube, un anti-spam, le tri des mails sur le serveur, une authentification […]

genesis

Bonjour,

Merci pour ce tuto très clair et concis.

J’ai malgré tout une petite question. Pourquoi, lorsque je supprime un message via roundcube, celui-ci n’est pas effacé du dossier ~/Maildir/cur ?

®om

Parce que par défaut, lors d’une suppression dans un dossier IMAP, Roundcube (comme beaucoup de clients) marque le mail comme supprimé, mais ne le supprime pas (ça permet de le récupérer).

Pour changer ce comportement, dans Préférences > Préférences du serveur, tu peux décocher la case “Mettre le drapeau de suppression au lieu de supprimer”.

Pour nettoyer (supprimer les mails “marqués comme supprimés”), je le fais à partir d’evolution : Dossiers > Nettoyer (Ctrl+E).

tchywallace

Ok merci vraiment pour ton tuto qui me permet de réaliser un travail tres exigens.

Mais j’ai un probleme je n’arrive pas a me connecter sur webmail a partir du navigateur c-a-d que je n’arrive pas a m’authentifier c’est vrailent embarrassant pour moi.

Si tu peux m’aider a surmonter cet obstacle.

[…] voici deux : - Zimbra (oui, le nouveau webmail de Free !) propriétaire (VMWare) - RoundCube, dont un tuto sur Rom’s […]

[…] Partie webmail roundcube : Installer un webmail (RoundCube) sur Ubuntu Server […]

[…] vital, mais vous pouvez trouver des fonctionnalités à mettre en place (un webmail tel que RoundCube, un anti-spam, le tri des mails sur le serveur, une authentification […]

Clikti

Je n’arrive pas à me connecter sur mon roundcube

http://Monip/webmail fonctionne bien, on me demande un login et mot de passe

Je remplis

En haut au milieu je vois le message “Chargement…” pendant quelques secondes, ensuite “Erreur d’authentification”

Dans mon var/www/webmail/logs/errors j’ai ceci :

[28-Apr-2011 15:13:07 +0200]: IMAP Error: Login failed for roundcube from 192.168.17.24. LOGIN: Login failed. in/var/www/webmail/program/include/rcube_imap.php on line 192 (POST /webmail/?_task=login&_action=login)

Merci de votre aide :)

Clikti

[…] RoundCube, dont un tuto sur Rom’s […]

Ca marche nickel sur Ubuntu 12.04 LTS.

Merci pour le walkthrough

Les commentaires sont fermés.