Contenu

Serveur mail (CentOS 6.5) 4/6 : Installation et configuration de Roundcube

Afin de procéder à l’installation de Roundcube, nous devons installer Apache. Pour cela, nous allons taper la commande suivante :

1
# yum install httpd mod_ssl

Avant de modifier le fichier de configuration, nous allons le sauvegarder via la commande suivante :

1
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.ori

Nous allons éditer le fichier « httpd.conf » pour modifier la configuration d’Apache. Pour cela nous allons taper la commande suivante :

1
# vi /etc/httpd/conf/httpd.conf

On dé-commente la ligne 276 et on modifie le nom du serveur :

1
ServerName www.example.com:80

Par :

1
ServerName localhost

On dé-commente la ligne #NameVirtualHost *:80 (ligne 990) :

1
NameVirtualHost *:80

Nous allons créer le répertoire qui contiendra les fichiers de log de Roundcube via la commande suivante :

1
# mkdir /var/log/httpd/roundcube

Certains packages nécessaires par la suite n’étant pas disponible dans les dépôts officiel de CentOS nous allons ajout un nouveau dépôt. C’est le dépôt EPEL. Pour cela nous allons taper la commande suivante :

1
# rpm -ivh http://mirrors.ircam.fr/pub/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

Ajout et configuration du plugin « Yum Priorities »

Afin de ne pas installer des packages qui peuvent mettre à mal la stabilité de notre système nous allons installer le plugin « Yum Priorities ». En temps normal si un paquet est présent dans plus d’un dépôt, c’est le numéro de version le plus haut qui sera proposé dans yum. Ce plugin permet de changer cela et de non plus tenir compte du numéro de version mais de la valeur de la priorité du dépôt. Pour cela, nous allons le faire à l’aide de la commande suivante :

1
# yum install yum-plugin-priorities

Maintenant que le plugin est installé, il faut définir la priorité pour chaque dépôt. La priorité est une valeur de 1 à 99, le dépôt ayant 1 comme priorité étant le plus prioritaire. Les dépôts où la valeur de n’est pas renseignée ont automatiquement la valeur 99. Pour cela, nous allons éditer chaque fichier .repo pour ajouter la ligne priority=XX. Les fichiers de configuration des dépôts se trouvent dans /etc/yum.repo.d/. On édite le fichier via la commande suivante:

1
# vi /etc/yum.repo.d/CentOS-Base.repo

Voici le contenu de mon fichier CentOS-Base.repo après modification :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
 
#released updates
[updates]
name=CentOS-$releasever – Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that may be useful
name=CentOS-$releasever – Extra
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that extend functionality of existing packages
[extras]
name=CentOS-$releasever – Extra
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever – Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever – Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

Il faut reproduire la même opération pour les fichiers suivant :

  • CentOS-Debuginfo.repo
  • CentOS-Media.repo
  • CentOS-Vault.repo

Concernant le fichier de configuration du dépôt EPEL, il faudra mettre la priorité à 99, donc la plus basse. Voici le contenu de mon fichier epel.repo après modification :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[epel]
name=Extra Packages for Entreprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
priority=99
 
[epel-debuginfo]
name=Extra Packages for Entreprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=99
 
[epel-source]
name=Extra Packages for Entreprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=99

Il faut à nouveau reproduire la même opération pour le fichier epel-testing.repo
Nous allons installer le serveur MySQL, ainsi que les dépendances nécessaires via les commandes suivante :

1
2
# yum install php php-xml php-mbstring php-mcrypt php-intl
# yum install mysql mysql-server

Sur CentOS, les démons ne sont pas configurés pour se lancer au démarrage de la machine. Nous allons le configurer pour qu’il se lance à chaque démarrage via la commande suivante :

1
# chkconfig --level 23 mysqld on

Afin de pouvoir lancer l’outil de configuration MySQL, nous devons d’abord démarrer le serveur. Ce que nous allons faire via la commande suivante :

1
# service mysqld start

Maintenant nous pouvons lancer l’outil de configuration MySQL pour configurer le mot de passe de root (« mysql » par exemple), supprimer les utilisateurs anonymes, supprimer les bases de tests et désactiver la possibilité pour root de se connecter à distance via la commande :

1
2
3
4
5
6
7
# /usr/bin/mysql_secure_installation
Enter current password for root (enter for none) : Taper sur la touche Entrer
Set root password? [Y/n] Taper sur la touche Entrer
Remove anonymous users? [Y/n] Taper sur la touche Entrer
Disallow root login remotely? [Y/n] Taper sur la touche Entrer
Remove test database and access to it? [Y/n] Taper sur la touche Entrer
Reload privilege tables now? [Y/n] Taper sur la touche Entrer

Installation des librairies php5-mysql via la commande suivante :

1
# yum install php-mysql

Nous allons créer l’utilisateur ainsi que la base donnée en ligne de commande. Pour cela nous allons nous connecter au serveur MySQL via la commande suivante :

1
# mysql -u root -p

Nous allons créer une base de données « roundcubemail » via la commande suivante :

1
mysql> CREATE DATABASE IF NOT EXISTS `roundcubemail`;

Nous allons donner tous les droits à l’utilisateur « roundcubemail » sur la base de donnée « roundcubemail » via les commandes suivantes :

1
2
3
mysql> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemail@localhost IDENTIFIED BY 'mySecretPassword';
mysql> flush privileges;
mysql> quit

Nous allons récupérer les fichiers d’installation de Roundcube via la commande suivante :

1
# curl -L "http://sourceforge.net/projects/roundcubemail/files/latest/download?source=files" > /tmp/roundcube-latest.tar.gz

Nous allons décompresser l’archive contenant les fichiers d’installation de Roundcube dans le répertoire « /var/www/html » via la commande suivante :

1
# tar -zxf /tmp/roundcube-latest.tar.gz -C /var/www/html/

Nous allons renommer le répertoire « roundcubemail-* » en « roundcube » appliquer les bons droits via les commandes suivantes :

1
2
3
4
# mv /var/www/html/roundcubemail-* /var/www/html/roundcubemail
# chown root: -R /var/www/html/roundcubemail/
# chown apache: -R /var/www/html/roundcubemail/temp/
# chown apache: -R /var/www/html/roundcubemail/logs/

Nous allons récupérer le fichier mime.types nécessaire au bon focntionnement de Roundcube, puis lui appliquer les bons droits via les commandes suivantes :

1
2
# curl http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types > /var/www/html/roundcubemail/mime.types
# chown root:apache /var/www/html/roundcubemail/mime.types

On créé le fichier de configuration du VirtualHost :

1
# vi /etc/httpd/conf.d/roundcube.conf

Nous allons y copier les lignes suivantes :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
NameVirtualHost *:80
NameVirtualHost *:443

<virtualhost *:80>
      ServerName www.mon-domaine.fr
      Redirect permanent / https://www.mon-domaine.fr/
</virtualhost>

<VirtualHost *:443>
      SSLEngine on
      SSLCertificateFile /etc/pki/tls/certs/mon-domaine.fr.crt
      SSLCertificateKeyFile /etc/pki/tls/private/mon-domaine.fr.key
      ServerName www.mon-domaine.fr
      DocumentRoot /var/www/html/roundcubemail/
      <Directory /var/www/html/roundcubemail/>
            Options -Indexes
            AllowOverride All
      </Directory>
      <Directory /var/www/html/roundcubemail/bin/>
            Order Allow,Deny
            Deny from All
      </Directory>
      <Directory /var/www/html/roundcubemail/config/>
            Order Deny,Allow
            Deny from All
      </Directory>
      <Directory /var/www/html/roundcubemail/plugins/enigma/home/>
            Order Allow,Deny
            Deny from All
      </Directory>
      <Directory /var/www/html/roundcubemail/temp/>
            Order Deny,Allow
            Deny from All
      </Directory>
      <Directory /var/www/html/roundcubemail/logs/>
            Order Deny,Allow
            Deny from All
      </Directory>
      ErrorLog /var/log/httpd/roundcubemail/error.log
      LogLevel warn
      CustomLog /var/log/httpd/roundcubemail/access.log combined
      ServerSignature Off
</VirtualHost>

On vérifie qu’il n’a pas d’erreur dans notre fichier de configuration du virtualhost Apache que nous venons de créer via commande suivante :

1
# apachectl -t

Nous allons créer les tables nécessaires au fonctionnement de Roundcube via le script présent dans l’archive que nous avons décompressé :

1
# mysql -u roundcubemail -pmySecretPassword roundcubemail < /var/www/html/roundcubemail/SQL/mysql.initial.sql

Avant de modifier le fichier de configuration, nous allons le sauvegarder via la commande suivante :

1
# cp /etc/php.ini /etc/php.ini.ori

Nous allons éditer le fichier de configuration de PHP pour activer la prise en charge de l’extension « MCrypt » nécessaire au bon fonctionnement de Roundcube via la commande suivante :

1
# vi /etc/php.ini

On ajoute la ligne suivante (après la ligne 931) :

1
extension=mcrypt.so

On va paramétrer le bon fuseau horaire en modifiant la ligne 946 comme suit :

1
date.timezone = Europe/Paris

Nous allons créer le répertoire qui contiendra les fichiers de log via la commande suivante :

1
# mkdir /var/log/httpd/roundcubemail/

Nous allons redémarrer Apache pour prendre en compte les modifications, via la commande suivante :

1
# service httpd restart

Sur CentOS, les démons ne sont pas configurés pour se lancer au démarrage de la machine. Nous allons le configurer pour qu’il se lance à chaque démarrage via la commande suivante :

1
# chkconfig --level 23 httpd on

Nous allons maintenant ajouter les règles « iptables » via les commandes suivantes :

1
2
# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

Maintenant que les règles « iptables » sont créés, il faut les sauvegarder. Pour cela, nous allons taper la commande suivante :

1
# service iptables save

Nous allons modifier le contexte SELinux pour autoriser Apache à se connecter au réseau de la machine pour pouvoir envoyer des mails via la commande suivante :

1
# setsebool -P httpd_can_network_connect=1

Nous allons modifier le contexte SELinux du répertoire /var/vmail afin de permettre à Dovecot d’écrire à l’intérieur, via la commande suivante :

1
# chcon -R -t mail_home_rw_t /var/vmail/

Activation du SSL dans Dovecot et Postfix

Afin d’activer le prise en charge de SSL dans Dovecot, nous allons éditer le fichier « 10-ssl.conf », via la commande suivante :

1
# vi /etc/dovecot/conf.d/10-ssl.conf

Nous allons décommenter la ligne 6 et la modifier comme suit :

1
ssl = yes

Nous allons modifier le chemin des certificats SSL aux lignes 12 et 13 comme suit :

1
2
ssl_cert = </etc/pki/tls/certs/mon-domaine.fr.crt
ssl_key = </etc/pki/tls/private/mon-domaine.fr.key

Nous allons redémarrer Dovecot pour prendre en compte les modifications via la commande suivante :

1
# service dovecot restart

Nous allons vérifier que les protocoles POP3S et IMAPS sont bien actifs dans Dovecot, via la commande suivante :

1
# ss -tpl | grep -E 'imaps|pop3s'

Voilà ce que doit retourner la commande :

1
2
LISTEN 0 100 *:imaps *:* users:(("dovecot",11192,25))
LISTEN 0 100 *:pop3s *:* users:(("dovecot",11192,19))

Maintenant que SSL est activer dans Dovecot, nous allons l’activer dans Postfix. Nous allons éditer le fichier de configuration de Postfix « main.cf », via la commande suivante :

1
# vi /etc/postfix/main.cf

On ajoute les lignes suivantes à la fin du fichiers :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mon-domaine.fr.crt
smtpd_tls_key_file = /etc/pki/tls/private/mon-domaine.fr.key
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Nous allons éditer le fichier « master.cf » via la commande suivante :

1
# vi +/smtps /etc/postfix/master.cf

On dé-commente les lignes 17 à 20 comme ci-dessous :

1
2
3
4
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

Nous allons redémarrer Postfix pour prendre en compte les modifications via la commande suivante :

1
# service postfix restart

Nous allons vérifier que le protocole SMTPS sont bien actifs dans Postfix, via la commande suivante :

1
# ss -tnpl | grep 465

Voilà ce que doit retourner la commande :

1
2
LISTEN 0 100 :::465 :::* users:(("master",11319,22))
LISTEN 0 100 *:465 *:* users:(("master",11319,21))

Afin de pouvoir accéder à votre site via l’url https://www.mon-domaine.fr, il faut ajouter une ligne au fichier « /etc/hosts ». Pour cela on édite le fichier via la commande suivante :

1
# vi /etc/hosts

Puis ajouter la ligne suivante :

1
xxx.xxx.xxx.xxx www.mon-domaine.fr

Maintenant nous pouvons lancer la configuration de Roundcube. Pour cela on lance un navigateur et on se connecte à l’adresse https://www.mon-domaine.fr/ On clique sur « Next »

On rempli les champs comme suit :

  • Database name : roundcubemail
  • Database user name : roundcubemail
  • Database password : MySecretPassword
  • default_host : ssl://localhost
  • default_port : 993
  • sent_mbox : Envoyés
  • trash_mbox : Corbeille
  • drafts_mbox : Brouillons
  • junk_mbox : Spams
  • smtp_server : ssl://localhost
  • smtp_port : 465
  • Cocher Use the current IMAP username and password for SMTP authentification
  • language : fr_FR
  • Cocher preview_plane if preview plane is enabled
  • Compose HTML formatted messages : always
  • Cliquer sur « Create config »

Nous allons créer le fichier de configuration de Roundcube via la commande suivante :

1
# vi /var/www/html/roundcubemail/config/config.inc.php

On copie le contenu de la fenêtre dans le fichier comme indiquer dans la fenêtre On édite le fichier /var/www/html/roundcube/config/defaults.inc.php et on modifie la ligne 477 comme suit :

1
$config['mime_types'] = '/var/www/html/roundcubemail/mime.types';

On clique sur « Continue » Nous allons maintenant vérifier le bon fonctionnement du serveur SMTP en entrant les information suivantes dans les cases prévu :

Nous allons maintenant vérifier le bon fonctionnement du serveur SMTP en entrant les information suivantes dans les cases prévu :

Nous allons redémarrer le serveur Apache pour prendre en compte les modifications, via la commande suivante :

1
# service httpd restart

Maintenant, notre serveur mail ainsi que son interface web sont opérationnel. Nous pouvons nous connecter à l’adresse https://www.mon-domaine.fr/ avec l’utilisateur précédemment créé :