Pour une présentation de Roundcube, voir l'article Wikipédia ainsi que le site web :

https://fr.wikipedia.org/wiki/Roundcube
https://roundcube.net/about/#features


Installation de Roundcube
=========================

Pour son fonctionnement, Roundcube dépend de 4 services à installer préalablement.  Il utilise également php et javascript.
service SMTP :      Postfix
service POP/IMAP :  Dovecot
service HTTP :      Apache
service MYSQL :     MariaDB


Installation des dépendances :
------------------------------
# apt install apache2 libapache2-mod-php mariadb-server php7.0-curl php7.0-gd php7.0-mysql php7.0-cli php7.0-imap php7.0-intl php-imagick
# apt install php7.0-ldap php7.0-apcu php7.0-xmlrpc php7.0-mbstring php7.0-xml php7.0-pdo php7.0-zip php7.0-iconv php7.0-fileinfo
# apt install postfix postfix-mysql postfix-doc openssl dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd

L'installateur pose quelques questions concernant Postfix :
> Indiquer comme 'Nom de Courrier' : fij.name
> Postfix sera utilisé selon une configuration de 'Site Internet'.



Modifier le fichier de configuration principal de Postfix créé lors de son installation :
-----------------------------------------------------------------------------------------
# nano /etc/postfix/main.cf

Y commenter les paramètres TLS (pour l'instant) : lignes 25 à 29
Ajouter immédiatement après la ligne 38 (myorigin = /etc/mailname) :
mydomain = fij.name

Redémarrer Postfix :
# service postfix restart


Créer le dossier qui accueillera Roundcube et télécharger la dernière version :
-------------------------------------------------------------------------------
# mkdir /srv/http/
# cd /srv/
# wget https://github.com/roundcube/roundcubemail/releases/download/1.3.4/roundcubemail-1.3.4-complete.tar.gz
# tar xfz roundcubemail-1.3.4-complete.tar.gz
# rm roundcubemail-1.3.4-complete.tar.gz
# mv roundcubemail-1.3.4/  http/roundcube

Définir l'utilisateur propriétaire (apache) et les permissions :
# chown -R www-data:www-data /srv/http/roundcube
# chmod 755 -R /srv/http/roundcube/



Modifier le fichier php.ini d'Apache :
--------------------------------------
# nano /etc/php/7.0/apache2/php.ini

Modifier la ligne 656 :
post_max_size = 12M

Modifier la ligne 809 :
upload_max_filesize = 10M

Modifier la ligne 924 :
date.timezone = Europe/Brussels


Sécuriser et définir le mot de passe 'root' de la base de données MariaDB :
---------------------------------------------------------------------------
# mysql_secure_installation


Créer la base de donnée, l'utilisateur et le mot de passe associés :
--------------------------------------------------------------------
Se connecter au serveur de base de données MariaDB :
# mysql -u root -p

--> après avoir donné le mot de passe, à l'invite de commande mysql, coller chacune des lignes suivantes et appuyer sur 'Enter' :

CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'postfo2018!';
flush privileges;
quit



Initialiser Roundcube et sa base de données :
---------------------------------------------
# cp /srv/http/roundcube/config/config.inc.php.sample  /srv/http/roundcube/config/config.inc.php
# mysql -u root -p roundcubemail < /srv/http/roundcube/SQL/mysql.initial.sql

Modifier quelques paramètres :

# nano /srv/http/roundcube/config/config.inc.php
modifier la ligne 28 :
$config['db_dsnw'] = 'mysql://roundcube:postfo2018!@localhost/roundcubemail';

# nano /srv/http/roundcube/config/defaults.inc.php
ligne 352 :
$config['enable_installer'] = true;
ligne 511 :
$config['mail_domain'] = 'fij.name';



Ajouter une configuration pour Roundcube à Apache :
---------------------------------------------------
# nano /etc/apache2/conf-available/roundcube.conf

Y coller le contenu suivant :

####################################################
Alias /roundcube /srv/http/roundcube
Alias /webmail /srv/http/roundcube

<Directory /srv/http/roundcube>
 Options +FollowSymLinks
 # AddDefaultCharset UTF-8
 AddType text/x-component .htc
 
 <IfModule mod_php7.c>
 AddType application/x-httpd-php .php
 php_flag display_errors Off
 php_flag log_errors On
 # php_value error_log logs/errors
 php_value upload_max_filesize 10M
 php_value post_max_size 12M
 php_value memory_limit 64M
 php_flag zlib.output_compression Off
 php_flag magic_quotes_gpc Off
 php_flag magic_quotes_runtime Off
 php_flag zend.ze1_compatibility_mode Off
 php_flag suhosin.session.encrypt Off
 #php_value session.cookie_path /
 php_flag session.auto_start Off
 php_value session.gc_maxlifetime 21600
 php_value session.gc_divisor 500
 php_value session.gc_probability 1
 </IfModule>

 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico
 # security rules:
 # - deny access to files not containing a dot or starting with a dot
 # in all locations except installer directory
 RewriteRule ^(?!installer)(\.?[^\.]+)$ - [F]
 # - deny access to some locations
 RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
 # - deny access to some documentation files
 RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml)$ - [F]
 </IfModule>

 <IfModule mod_deflate.c>
 SetOutputFilter DEFLATE
 </IfModule>

 <IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 month"
 </IfModule>

 FileETag MTime Size

 <IfModule mod_autoindex.c>
 Options -Indexes
 </ifModule>

 AllowOverride None
 Require all granted
</Directory>

<Directory /srv/http/roundcube/plugins/enigma/home>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>

<Directory /srv/http/roundcube/config>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>

<Directory /srv/http/roundcube/temp>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>

<Directory /srv/http/roundcube/logs>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>
####################################################



Activer la configuration apache de Roundcube et redémarrer le service :
----------------------------------------------------------------------
# a2enconf roundcube
# a2enmod rewrite
# service apache2 restart



Lancer un navigateur web et se rendre à la page :   http://mail.fij.name/roundcube/installer/
Parcourir les 3 étapes de vérification de la configuration.

Pour des raisons de sécurité, effacer le dossier /srv/http/roundcube/installer lorsque la configuration a été vérifiée.


L'installation et la configuration de base sont maintenant terminées.

Le service est joignable aux adresses  http://mail.fij.name/webmail  ou  http://mail.fij.name/roundcube
Afin d'utiliser le service, il faudra créer des utilisateurs.  Il faudra également rendre le serveur mail disponible depuis Internet. 

Les utilisateurs du service mail sont, pour l'instant, de simples utilisateurs du système.
Il aurait également été possible d'utiliser un back-end LDAP ou MYSQL pour gérer les utilisateurs.

Un utilisateur système se crée facilement à l'aide de la commande interactive 'adduser' :
# adduser postfo2018
(répondre aux différentes questions posées).


Pour recevoir du mail depuis Internet, il va falloir forwarder les requêtes reçues sur le port 25 de l'interface WAN du routeur
vers le port 25 de la machine 10.0.x.109.  Cela se configure sur les routeurs.


Il restera à crypter les échanges (Apache et Postfix) à l'aide de SSL et à protéger le réseau interne et les utilisateurs des Virus et du SPAM.