« LINUX:RoundCubeMail » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(21 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 6 : | Ligne 6 : | ||
Nous nous placerons dans le contexte restreint de notre service de messagerie privée. | Nous nous placerons dans le contexte restreint de notre service de messagerie privée. | ||
Ligne 84 : | Ligne 69 : | ||
---- | ---- | ||
qui ajoute une ligne pour donner accès aux machines de notre réseau local "192.168.1.0/24". | qui ajoute une ligne pour donner accès aux machines de notre réseau local "192.168.1.0/24". | ||
Si vous avez plusieurs versions de PHP actives sous Apache, n'oubliez pas de faire référence à la bonne version comme expliqué dans l'article [[LINUX:Plusieurs versions de PHP|Coexistence de plusieurs versions de PHP]]. RoundCubeMail supporte la version 8.1 de PHP. | |||
Ligne 91 : | Ligne 79 : | ||
=Configuration de MariaDB= | =Configuration de MariaDB= | ||
Avant d'aborder la configuration de l'application RoundCubeMail, il faut créer l'utilisateur et le schéma dans la base de données MariaDB. | Avant d'aborder la configuration de l'application RoundCubeMail, il faut créer l'utilisateur et le schéma dans la base de données MariaDB. Nous exposons une méthode sous forme de script mais on peut utiliser des interfaces Web pour le faire interactivement tels PHPMyAdmin ou Adminer. | ||
Ligne 173 : | Ligne 161 : | ||
et exécutez le: | et exécutez le: | ||
./user.bat | ./user.bat | ||
=Configuration de RoundCubeMail par WUI= | |||
La configuration des paramètres de l'application RoundCubeMail peut se faire via l'interface Web. Il faut lancer lancer l'Url suivante: <nowiki>http://servermail.home.dom/roundcubemail/installer</nowiki> . Le nom de la machine est à adapter selon votre cas. Le nom repris correspond à celui que l'on trouve sur le schéma. | |||
==Vérification des dépendances== | |||
Le premier écran vérifie que tous les paquets dépendants sont bien installés. Si ce n'est pas le cas, résolvez ces cas. | |||
[[FILE:LINUX:Roundcubemail.check.png|1200px]] | |||
==Configuration des options== | |||
On clique ensuite sur le second onglet "Create config" ou sur le bouton "NEXT" situé en bas de l'écran. | |||
L'écran , qui apparaît, permet de remplir la majorité des options importantes. Les plus importantes sont à déduire des configurations des services MariaDB, Postfix et Dovecot. | |||
<div style="overflow:scroll; width:90%; height:600px"> | |||
[[FILE:LINUX:Roundcubemail.config.reduit2.png|1500px]] | |||
</div> | |||
==Sauvegarde de la configuration== | |||
En bas de cet écran, dès que les zones sont remplies, cliquez sue le bouton "UPDATE CONFIG". Apparaît alors le contenu du fichier de configuration. Ce contenu est à placer dans le nouveau fichier '''"/etc/roundcubemail/config.inc.php"'''. Attention, ce fichier doit être accessible par l'utilisateur du service "httpd.service": "apache": | |||
chown root:apache /etc/roundcubemail/config.inc.php | |||
chmod 640 /etc/roundcubemail/config.inc.php | |||
Dès que ce fichier est présent, tout nouvel accès à l'Url <nowiki>http://servermail.home.dom/roundcubemail/installer</nowiki> devient interdit par défaut si par mégarde, on abandonne l'écran. Ceci peut être évité si dans le fichier de configuration que l'on vient de créer, la ligne suivante est ajoutée: | |||
---- | |||
$config['enable_installer'] = true; | |||
---- | |||
En production, cette ligne doit être éliminée. | |||
[[FILE:LINUX:Roundcubemail.config.file.png|1200px]] | |||
==Initialisation du contenu du schéma== | |||
On clique ensuite sur le second onglet "Test config" ou sur le bouton "CONTINUE" situé plus bas dans l'écran. | |||
On passe alors à l'étape finale. En premier lieu, on remarque que le shéma dans la base de données n'est pas initialisé. On appuie sur le bouton "Initialize database". | |||
[[FILE:LINUX:Roundcubemail.test.1.png|1200px]] | |||
==Test de messagerie== | |||
L'écran se rafraichit. Le schéma est maintenant actif. | |||
La partie "Test SMTP config" permet de tester l'envoi de message et la partie "Test IMAP config" permet de tester l'accès à notre boîte à messages électroniques. | |||
[[FILE:LINUX:Roundcubemail.test.2.png|1200px]] | |||
Mais à ce stade, vous rencontrerez divers problèmes. Nous allons affiner cette configuration brute. | |||
=Configuration finale de RoundCubeMail= | |||
A ce stade, vous risquez de rencontrer quelques problèmes. Tout se joue dans le fichier de configuration "/etc/roundcubemail/config.inc.php". J'ai divisé ce fichier en cinq parties. Chaque option est reprise sous la forme: | |||
$config['<option>'] = valeur ; | |||
==Clé de cryptage interne== | |||
Une première option '''des_key''' concerne la clé de cryptage générée ci-dessus et déjà sauvée. Je ne conseille pas de la changer dès que vous aurez débuté l'utilisation de RoundCubeMail. | |||
Dans notre exemple, nous avons: | |||
---- | |||
$config['des_key'] = '4JnXXlEVBux7GSt4ELHvEEtX'; | |||
---- | |||
==Schéma de base de données== | |||
Cette option concerne le mot '''db_dsnw'''. | |||
Si vous avez pu ci-dessus initialiser le schéma, la ligne est correcte; on ne la bouge pas. | |||
Dans notre exemple, nous avons: | |||
---- | |||
$config['db_dsnw'] = 'mysql://userroundcube:TTTTTTTT@localhost/dbroundcube'; | |||
---- | |||
On peut y retrouver diverses informations introduites dans l'écran WUI de configuration: | |||
* "mysql" : Le gestionnaire de base de données est MySQL. | |||
* "localhost" : La base de données se trouve sur la machine locale. | |||
* "dbroundcube" : Le schéma utilisé | |||
* "userroundcube" : Le nom d'utilisateur ayant tous les droits sur ce shéma | |||
* "TTTTTTTT" : Le mot de passe de cet utilisateur | |||
==IMAP== | |||
Ce bloc d'options concerne les protocoles IMAP (port TCP 143 par défaut) et IMAPS (port TCP 993 par défaut)). | |||
Tout dépend de la configuration du serveur Dovecot. | |||
Dans RoundCubeMail, il sert en premier lieu à pouvoir rentrer dans cet applicatif et ensuite de pouvoir gérer sa boîte de messagerie électronique après s'être authentifié grâce au nom d'utilisateur et son mot de passe d'IMAP. | |||
Voici diverses options utilisées: | |||
* '''imap_host''' | |||
La valeur a le format: <protocole>://<nom de machine>:<port> | |||
Dans l'exemple, nous avons. | |||
---- | |||
$config['imap_host'] = 'ssl://servermail.home.dom:993'; | |||
---- | |||
* '''imap_conn_options''' | |||
Cette option permet de régler le mode de vérification du certificat du serveur Dovecot en cas de cryptage. Si le certificat est officiel, ce n'est pas nécessaire. Il a la forme: | |||
---- | |||
$config['imap_conn_options'] = [ | |||
'ssl' => [ | |||
... <paramètres> ... | |||
], | |||
]; | |||
---- | |||
La description des différents paramètres peut être consultée à l'URL <nowiki>https://www.php.net/manual/fr/context.ssl.php</nowiki> | |||
* '''imap_vendor''' | |||
Cette option spécifie le logiciel IMAP utilisé pour faciliter la conversation entre RoundCubeMail et ce logiciel. Cette valeur n'est pas absolument requise. Dans l'exemple, nous avons. | |||
---- | |||
$config['imap_vendor'] = 'dovecot'; | |||
---- | |||
* '''imap_auth_type''' | |||
Il permet de spécifier le mode d'authentification à utiliser. Par défaut, RoundCubeMail utilise le plus sécurisé. Le plus souvent, on trouve les protocoles DIGEST-MD5, CRAM-MD5, LOGIN et PLAIN. La valeur "IMAP" recouvre "LOGIN" et "PLAIN", les plus classiques. Normalement cette option n'est pas nécessaire sauf cas spécifique ou erreur sur le serveur. Voici un exemple: | |||
---- | |||
$config['imap_auth_type'] = 'IMAP'; | |||
---- | |||
==SMTP== | |||
Ce bloc d'options concerne les protocoles SMTP (port TCP 25 par défaut), SMTPS (port TCP 465 par défaut)) et SUBMISSION (port TCP 587 par défaut). | |||
Tout dépend de la configuration du serveur Postfix. | |||
Dans RoundCubeMail, il sert à l'envoi de mails. | |||
Voici diverses options utilisées: | |||
* '''smtp_host''' | |||
La valeur a le format: <protocole>://<nom de machine>:<port> | |||
Dans l'exemple, nous avons. | |||
---- | |||
$config['smtp_host'] = 'tls://servermail.home.dom:587'; | |||
---- | |||
* '''smtp_conn_options''' | |||
Cette option permet de régler le mode de vérification du certificat du serveur Postfix en cas de cryptage. Si le certificat est officiel, ce n'est pas nécessaire. Il a la forme: | |||
---- | |||
$config['smtp_conn_options'] = [ | |||
'ssl' => [ | |||
... <paramètres> ... | |||
], | |||
]; | |||
---- | |||
La description des différents paramètres peut être consultée à l'URL <nowiki>https://www.php.net/manual/fr/context.ssl.php</nowiki> | |||
* '''smtp_auth_type''' | |||
Il permet de spécifier le mode d'authentification à utiliser. Par défaut, RoundCubeMail utilise le plus sécurisé. Le plus souvent, on trouve les protocoles DIGEST-MD5, CRAM-MD5, LOGIN et PLAIN. Les valeurs "LOGIN" et "PLAIN" sont les plus classiques. Normalement cette option n'est pas nécessaire sauf cas spécifique ou erreur sur le serveur. Voici un exemple: | |||
---- | |||
$config['smtp_auth_type'] = 'LOGIN'; | |||
---- | |||
* '''smtp_user''' et '''smtp_pass''' | |||
Quand SMTP demande une authentification, ces deux options permettent de les transmettre. C'est habituellement ce cas du protocole SUBMISSION. | |||
Dans notre exemple, c'est l'utilisateur et le mot de passe de Dovecot qui sont utilisés. Ce sont les valeurs par défaut. | |||
---- | |||
$config['smtp_user'] = '%u'; | |||
$config['smtp_pass'] = '%p'; | |||
---- | |||
Par contre, habituellement, les protocoles SMTP et SMTPS ne le demandent pas. Il est alors impérativement informer qu'il n'y a pas d'utilisateur ni de mot de passe sinon l'envoi du mail échouera. | |||
---- | |||
$config['smtp_user'] = ''; | |||
$config['smtp_pass'] = ''; | |||
---- | |||
==Certificats== | |||
Les protocoles des options "imap_host" et "smtp_host" sont: | |||
* vide : pas de cryptage (exemple: "$config['smtp_host'] = 'localhost:25';" ou "$config['imap_host'] = 'localhost:143';") | |||
* '''tls''' : cryptage de type STARTTLS (exemple: "$config['smtp_host'] = 'tls://servermail.home.dom:587';") | |||
* '''ssl''' : cryptage de type SSL/TLS (exemple: "$config['imap_host'] = 'ssl://servermail.home.dom:993';") | |||
Habituellement: | |||
* IMAP a le port TCP 145 et est non crypté avec authentification. | |||
* IMAPS a le port TCP 993 et est crypté (SSL/TLS) avec authentification. | |||
* SMTP a le port TCP 25 et est non crypté sans authentification. | |||
* SMTPS a le port 465 et est crypté (SSL/TLS) sans authentification. | |||
* SUBMISSION a le prot 587 et est crypté (STARTTLS) avec authentification. | |||
Voyez l'article [[LINUX:Postfix-Protocoles|Description succincte des principaux protocoles de messagerie]]. Mais il faut tenir à l'esprit que tout est extensible et modifiable à volonté. | |||
Il toujours conseillé de crypter les échanges mais c'est moins crucial quand les échanges se font à l'intérieur le la même machine. Par contre, préférez toujours l'authentification. | |||
Quand on invoque le cryptage, les problèmes commencent. On peut facilement les résoudre. | |||
Il faut savoir que la validation d'un certificat, comporte deux étapes: | |||
* le nom repris dans le certificat doit correspondre au nom repris pour les options "imap_host" et "smtp_host"; ce nom doit être connu du serveur DNS ou du fichier "/etc/hosts" et doit renvoyer sur la bonne machine. | |||
* ce certificat doit être officiel, c'est à dire qu'il doit être validé par une autorité de certification (CA) reconnue internationalement. | |||
Si ce n'est pas le cas, les connexions utilisant un certificat (transmission cryptée) aux serveurs Dovecot et/ou Postfix ne se feront pas. | |||
Si ces deux conditions sont remplies, tout se passer sans problème. | |||
Dans le cas contraire, plusieurs approches sont possibles en utilisant les options "imap_conn_options" pour IMAP ou "smtp_conn_options" pour SMTP: | |||
* On désactive la validation du certificat. | |||
Cas d'IMAP: | |||
---- | |||
$config['imap_conn_options'] = [ | |||
'ssl' => [ | |||
'verify_peer' => false | |||
], | |||
]; | |||
---- | |||
Cas de SMTP: | |||
---- | |||
$config['smtp_conn_options'] = [ | |||
'ssl' => [ | |||
'verify_peer' => false | |||
], | |||
]; | |||
---- | |||
* Si le certificat est reconnu mais pas la machine; par exemple si la machine est reprise sous le nom de "localhost", on désactive la validation du nom de machine. | |||
Cas d'IMAP: | |||
---- | |||
$config['imap_conn_options'] = [ | |||
'ssl' => [ | |||
'verify_peer_name' => false | |||
], | |||
]; | |||
---- | |||
Cas de SMTP: | |||
---- | |||
$config['smtp_conn_options'] = [ | |||
'ssl' => [ | |||
'verify_peer_name' => false | |||
], | |||
]; | |||
---- | |||
* Une troisième possibilité est de fournir le certificat émis par l'autorité de certification (CA) lié au certificat de cette machine. | |||
Cas d'IMAP: | |||
---- | |||
$config['imap_conn_options'] = [ | |||
'ssl' => [ | |||
'cafile' => '/etc/pki/home/certs/ca.home.crt' | |||
], | |||
]; | |||
---- | |||
Cas de SMTP: | |||
---- | |||
$config['smtp_conn_options'] = [ | |||
'ssl' => [ | |||
'cafile' => '/etc/pki/home/certs/ca.home.crt' | |||
], | |||
]; | |||
---- | |||
L'exemple est tiré de l'article [[LINUX:Création d'une CA privée (V1)|Création d'une CA privée (V1)]]. | |||
* On peut enfin ajouter ce même certificat de l'autorité de certification (CA) à la liste des ceux qui sont reconnus internationalement. Voyez l'article [[LINUX:Cryptage sous Linux|Certificats sous Linux]]. Les options "imap_conn_options" pour IMAP ou "smtp_conn_options" pour SMTP ne sont plus nécessaires. Le certificat est considéré sur la machine comme officiel. | |||
==Options diverses== | |||
J'ai remarqué que nombre d'options remplies lors la configuration par le WUI, ne se retrouvent pas dans le fichier de configuration. Je conseille de passer en revue le fichier '''"/etc/roundcubemail/defaults.inc.php"''' qui reprend les options par défaut afin d'affiner votre configuration. | |||
Les problèmes principaux consistent à créer le schéma dans la base de données, à se connecter et à pouvoir visualiser et envoyer les mails. Ces changements peuvent être faits à postériori. | |||
Voici quelques paramètres retenus: | |||
* '''enable_installer''' | |||
Dès que ce fichier de configuration existe, l'accès à l'URL de configuration <nowiki>http://servermail.home.dom/roundcubemail/installer</nowiki> ci-dessus sera inaccessible sauf si vous ajoutez la ligne: | |||
---- | |||
$config['enable_installer'] = true; | |||
---- | |||
Pour une question évidente de sécurité, elle ne doit pas exister sauf lors de la phase de configuration éventuellement. | |||
* '''enable_spellcheck''' | |||
Elle active la vérification orthographique. | |||
---- | |||
$config['enable_spellcheck'] = true; | |||
---- | |||
* '''spellcheck_engine''' | |||
Elle spécifie le mécanisme utilisé pour la vérification orthographique. Il a été ajouté lors de l'installation de roundCubeMail. | |||
---- | |||
$config['spellcheck_engine'] = 'enchant'; | |||
---- | |||
* '''username_domain''' | |||
S'il est spécifié, il ajoute automatiquement le nom de domaine au nom d'utilisateur. Par exemple si je me connecte avec l'utilisateur "adebast", il adaptera la connexion à "adebast@home.dom" selon la valeur reprise ci-dessous. Les deux connexions sont équivalentes. | |||
---- | |||
$config['username_domain'] = 'home.dom'; | |||
---- | |||
* '''plugins''' | |||
Il permet d'activer divers Plugins. Je n'en ai pas utilisé. | |||
---- | |||
$config['plugins'] = []; | |||
---- | |||
=Ecran WUI= | |||
Maintenant que l'application est opérationnelle, on va la découvrir. | |||
Dans votre explorateur internet préféré, entrez l'URL associée. Dans notre exemple, elle est <nowiki>http://servermail.mail.dom/roundcubemail</nowiki> . | |||
On remplit le nom d'utilisateur et le mot de passe et on se connecte. | |||
[[FILE:LINUX:Roundcubemail.login.png|600px|center]] | |||
Pour découvrir l'interface. | |||
[[FILE:LINUX:Roundcubemail.mail.png|800px|center]] | |||