Les Courriels (Emails) dans MytinyDC

Les Courriels (Emails) dans MytinyDC

15 novembre 2018 courriel dovecot email exim4 0

Je vais aborder le sujet de la transmission des courriels dans le Datacenter. Pour expliquer les flux rien de mieux qu’un petit dessin :

Je dispose de 6 serveurs, dont un seul (Master) connecté à l’internet, qui reçoit et émet des courriels pour le domaine. Les 5 autres n’ont pas accès direct à l’internet et émettent mais ne reçoivent pas de courriels. Dès le départ un serveur qui dispose d’une tâche planifiée (job cron), exécute son processus vers les sorties « standard » et « erreur ». Si vous ne prenez pas soin de rediriger ces sorties vers un fichier, elle seront redirigée vers le courriel du compte utilisé pour l’exécution de la tâche. Les serveurs par défaut ne  sont pas équipés pour envoyer les courriels et resteront dans une file d’attente située dans le fichier  « /var/spool/mail/mail« . Pour équiper le serveur j’installe le MTA (Mail transfert agent) « exim4 ». Beaucoup d’administrateurs utilisent Postfix, faîtes votre choix..

Résumons, j’ai 6 serveurs qui lancent des tâches d’administration, qui peuvent elles-mêmes générer des erreurs. En admettant que j’ai installé un MTA sur chacun d’entre eux, il est inconcevable d’aller scruter chaque serveur. Toutes les tâches planifiées sont généralement exécutées par l’utilisateur root. Dans ce cas je vais paramétrer chacun des serveurs afin de rediriger tous les courriels à destination de l’utilisateur root vers une seule et même adresse du serveur « Master ». Si vous créer des tâches planifiées exécutées par un autre utilisateur que root, vous devez rediriger les courriels de ce compte vers root, qui redirigera vers l’adresse unique du Datacenter. Il s’agit d’une chaîne de redistribution. Ceci se fait en paramétrant le fichier /etc/aliases

Installation du serveur principal (Master)

Le serveur Master, distribue et reçoit les courriels du domaine et devient relais principal pour le Datacenter. Le firewall d’entrées-sorties du Datacenter ne laisse passer que le serveur Master pour la distribution des courriels.

Installation du MTA – exim4

Installation du paquet : apt install exim4

Spécifications du réseau :

  • Domaine : « mtdc« 
  • Réseau interne du Datacenter : 172.28.0.0/24 (255.255.255.0)
  • Adresse d’écoute du serveur email (exim4) : 127.0.0.1 172.28.0.1
  • Nom du serveur d’email : master et qualifié : master.mtdc

Je remplace le contenu du fichier « /etc/exim4/update-exim4.conf.conf » par : (***adaptez les valeurs à votre configuration)

dc_eximconfig_configtype=’internet’
dc_other_hostnames=’master;master.mtdc
dc_local_interfaces=’127.0.0.1 ;172.28.0.1
dc_readhost= »
dc_relay_domains=’mtdc
dc_minimaldns=’false’
dc_relay_nets=’172.28.0.0/24
dc_smarthost= »
CFILEMODE=’644′
dc_use_split_config=’false’
dc_hide_mailname= »
dc_mailname_in_oh=’true’
dc_localdelivery=’maildir_home’

Les paramètres de configuration pour exim4 sont fixés, je créé la configuration finale du service exim4 en exécutant la commande : update-exim4.conf, je redémarre le service exim4 en exécutant la commande :  service exim4 restart.

A ce stade n’essayez même pas d’envoyer un email sur internet avec Master, cela ne marchera pas. Ceci sera l’objet d’un autre article.

Création d’un compte courriel

L’objet de cet article reste de récupérer les courriels des serveurs secondaires. Pour émettre un courriel, vous devez disposer d’une adresse d’émetteur et d’une adresse de destinataire. Je vais donc créer un compte sur le serveur « master », intitulé « infogerance ». Utilisez la commande : adduser infogerance et renseignez les informations nécessaires, prenez l’habitude d’utiliser des mots de passe fort. Pour générer des mots de passe fort, j’utilise le logiciel apg (apt install apg). L’adresse de destination de ce compte sera : infogerance@master.mtdc

Installation d’un serveur secondaire (ex: server1)

Les serveurs secondaires émettent mais ne reçoivent pas de courriels. L’émission de courriels passera pas le relais « master ». Les serveurs secondaires ne distribuent pas directement les courriels hors et dans le réseau.

Installation du MTA – exim4

Installation du paquet : apt install exim4

Spécifications du réseau :

  • Domaine : « mtdc« 
  • Nom du serveur secondaire : server1 et qualifié : server1.mtdc
  • Nom du serveur d’email qualifié : master.mtdc

Je remplace le contenu du « /etc/exim4/update-exim4.conf.conf » par : (***adaptez les valeurs à votre configuration)

dc_eximconfig_configtype=’satellite’
dc_other_hostnames=’server1;server1.mtdc
dc_local_interfaces=’127.0.0.1′
dc_readhost=‘server1.mtdc
dc_relay_domains= »
dc_minimaldns=’false’
dc_relay_nets= »
dc_smarthost=’master.mtdc
CFILEMODE=’644′
dc_use_split_config=’false’
dc_hide_mailname=’true’
dc_mailname_in_oh=’true’
dc_localdelivery=’maildir_home »

Les paramètres de configuration pour exim4 sont fixés, je créé la configuration finale du service exim4 en exécutant la commande : update-exim4.conf, je redémarre le service exim4 en exécutant la commande :  service exim4 restart.

Test d’envoi d’un courriel

Connecté « root » à la console de server1, exécutez la commande : tail -f /var/log/exim4/mainlog &
Cette commande permet l’affichage continue, et en arrière plan, du contenu du fichier de traces /var/log/exim4/mainlog.

Envoyez un courriel en utilisant la commande : echo « test mail. » | sendmail infogerance@master.mtdc, la console affiche un message indiquant que le courriel a bien été distribué par « server1 » (Completed)

2018-11-15 10:19:05 1gN9aT-0003Hd-SS <= root@server1 U=root P=local S=274root@server1:~# 2018-11-15 10:19:06 1gN9aT-0003Hd-SS => infogerance@master.mtdc R=smarthost T=remote_smtp_smarthost H=master.mtdc [172.28.0.1] C= »250 OK id=1gN9aU-0001qf-6R »
2018-11-15 10:19:06 1gN9aT-0003Hd-SS Completed

Tapez la commande : fg puis CTRL-C, ceci permet d’arrêter le processus de lecture continue du fichier de traces.

Connectez-vous maintenant au serveur « Master » avec l’utilisateur root, et tapez la commande : ls /home/infogerance/Maildir/new/ vous disposez d’un fichier. Lisez le contenu de ce fichier avec la commande : cat /home/info/Maildir/new/[nom du fichier], vous obtenez ce type de contenu, dont la phrase « test mail.« 

Return-path: root@server1.mtdc
Envelope-to: infogerance@master.mtdc
Delivery-date: Thu, 15 Nov 2018 10:27:08 +0530
Received: from server1.mtdc ([172.28.0.4] helo=server1)
by masterwith esmtp (Exim 4.89)
(envelope-from root@server1.mtdc)
id 1gN9iF-00020x-GA
for infogerance@master.mtdc; Thu, 15 Nov 2018 10:27:07 +0530
Received: from root by server1 with local (Exim 4.89)
(envelope-from )
id 1gN9iF-0003Ni-61
for infogerance@master.mtdc; Thu, 15 Nov 2018 10:27:07 +0530
Message-Id:
From: root root@server1.mtdc
Date: Thu, 15 Nov 2018 10:27:07 +0530


test mail.

Paramétrage des Alias de courriels

Je souhaite que tous les courriels destinés à root sur ce serveur (server1) soit envoyés à l’adresse infogerance@master.mtdc. J’ajoute une entrée au fichier /etc/aliases comme suit :
root: infogerance@master.mtdc

LE SYSTÈME FONCTIONNE. Répétez cette opération d’installation sur les 4 autres serveurs.

Lecture des courriels

Vous allez me dire, c’est super ton truc mais je ne vais pas aller exécuter une commande cat sur chaque courriel reçu, puis la commande rm pour les effacer…. Effectivement, c’est ingérable, nous allons donc utiliser un système de type « Webmail ». Un des plus connus est certainement Roundcube. Et c’est à partir d’ici que cela se complique… Debian dispose du paquet roundcube, qui nécessite une base de données de type MariaDB (clône de Mysql) ou bien Postgresql. Mon Datacenter dispose d’un serveur de base de données MariaDB, je vais donc l’utiliser pour stocker les informations de RoundCube. Pour lire les courriels d’un compte, RoundCube utilise la technologie IMAP. Pour implémenter cette technologie je choisi Dovecot qui sera installé sur le serveur mail « Master ». Un petit dessin pour détailler la topologie :

Installation de Dovecot

J’ai du faire un « mix » de toutes les informations trouvées sur internet et j’ai testé les connexions/lectures avec l’application « Thunderbird » (compte type IMAP)…. On y va, tout ce qui suit paraît complexe mais ce ne sont que des modifications à opérer dans les fichiers de configuration de Dovecot.

apt-get install dovecot-imapd

modifiez le fichier /etc/dovecot/conf.d/10-mail.conf
cherchez  la ligne commençant par « mail_location »
Commentez cette ligne active en préfixant par #
et ajouter la ligne : mail_location = maildir:~/Maildir
 
Génération des certificats SSL pour établir une connexion sécurisée de type TLS
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -out /etc/ssl/certs/mailcert.pem -keyout /etc/ssl/private/mail.key
Code pays : FR
Etat : xxx
Ville : xxx
Organisation : xxxx
FQDN : le nom qualifié du serveur de mails : indiquez bien le nom qualifié qui sera appelé par roundcube. Celui ci effectue des vérifications (DNS, nom qualifié,etc..)

Modifier comme suit le fichier /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/ssl/certs/mailcert.pem
ssl_key = </etc/ssl/private/mail.key
 

Modifier comme suit le fichier /etc/dovecot/10-master.conf
service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes

  }
service auth {

  # Auth process is run as this user.
  user = $default_internal_user
 
Modifier comme suit le fichier /etc/dovecot/conf.d/10-auth.conf
décommentez la ligne disable_plaintext_auth = yes
et modifier la ligne auth_mechanisms comme suit
auth_mechanisms = plain login


Modifier comme suit le fichier /etc/dovecot/dovecot.conf
modifier la ligne listen
listen = 172.28.0.1, 192.168.1.10

L’adresse 192.168.1.10 est l’adresse par laquelle je peux contacter le serveur Master de l’extérieur du Datacenter. Pour effectuer les tests avec Thunderbird, je dispose d’un PC Linux avec une interface graphique, qui est situé en dehors du Datacenter.

Redémarrer Dovecot : service dovecot restart
 
Firewall : ouvrir ensuite le port 993 sur les interfaces correspondantes aux adresses IP indiquées sur la ligne « listen » du fichier /etc/dovecot/dovecot.conf

Pour effectuer le test avec Thunderbird, indiquez les paramètres de votre environnement et la méthode authentification « mot de passe normal« 

Installation de RoundCube

Si le test avec Thunderbird ne fonctionnent pas, inutile d’aller plus loin…

Pour RoundCube et en utilisant le paquet Debian, l’installation a été dans la même lignée, d’autant que la base de données MariaDB est située sur un autre serveur que celui où est installé RoundCube.

Connexion au serveur Web qui dispose déjà de PHP, j’exécute la commande : apt install roundcube

Choisir « ignore » pour terminer l’installation

L’installateur me demande le mot de passe pour l’accès à la base de données roundcube, et le mot de passe root du serveur MariaDB. Mais il ne me demande pas l’adresse du serveur. L’installation est faîte pour une configuration avec serveur MariaDB en local. La nouvelle base de données Roundcube ainsi que son schéma ne sont donc pas installés…

Création de la base de données MariaDB

Je crée une base sur le serveur « 172.28.0.3 ». Vous pouvez utilisez phpmyadmin si vous disposez de cette outil connecté au serveur de base MariaDB, ou bien la créer manuellement en vous connectant à la console du serveur MariaDB. La commande de création est :

Connecté root à la console du serveur MariaDB, exécuter la commande : mysql, puis tapez les commandes mysql suivantes

CREATE DATABASE roundcube;GRANT ALL PRIVILEGES ON roundcube.* TO username@localhost IDENTIFIED BY ‘password‘;

FLUSH PRIVILEGES;

où username est le login de connexion à la base et password le mot de passe utilisé pour l’authentification MariaDB que vous devez remplacer.

Mais je n’ai toujours pas le schéma !!! En regardant le contenu du paquet Debian RoundCube, je vois que le schéma d’installation est situé dans le fichier « /usr/share/dbconfig-common/data/roundcube/install/mysql« . Ce dernier contient l’intégralité du script SQL pour initialiser la base de données RoundCube. Ce schéma est également disponible à l’adresse (https://github.com/roundcube/roundcubemail/blob/release-1.2/SQL/mysql.initial.sql). Je récupère son contenu, me connecte à la base via Phpmyadmin, colle l’intégralité du code SQL et l’exécute. Si vous passez en ligne de commande, copiez ce fichier sur le serveur de base de données, et exécutez la commande : mysql -u [username] -p [nom de la base]  < [nom du fichier sql]. La commande vous demandera le mot de passe d’accès à la base roundcube.

Paramétrage de RoundCube

Je cherche la configuration de la base RoundCube qui est située dans le fichier /var/lib/roundcube/config/debian-db.php (vous devez adapter les termes mis en gras)

$dbuser=’roundcube‘;
$dbpass=’password‘;
$basepath= »;
$dbname=’username‘;
$dbserver=’172.28.0.3‘;
$dbport=’3306′;
$dbtype=’mysql’;

RoundCube utilise IMAP, j’indique l’adresse du serveur IMAP en modifiant le fichier /var/lib/roundcube/config/config.inc.php

« $config[‘default_host’] = ‘tls://master.mtdc’;

‘defautl_host’ doit correspondre au FQDN du certificat SSL créé dans le chapitre « Installation DOVECOT ». L’hôte master.mtdc doit bien être résolu par le DNS du Datacenter.

et en ajoutant des paramètres supplémentaires pour la connexion SSL

$config[‘imap_conn_options’] = array(
             ‘ssl’ => array(
                            ‘verify_peer’       => true,
                            ‘allow_self_signed’ => true,
                            )
                    );

Paramétrage du VirtualHost Apache

Sur le serveur où est installé RoundCube, j’ajoute le virtualHost « /etc/apache2/sites-available/mail.mtdc.conf  » simpliste permettant d’isoler les erreurs pour le nom qualifié « mail.mtdc » et configuré comme suit :

<VirtualHost default:80>

      ServerName mail.mtdc

      ServerAdmin root@localhost

     ErrorLog ${APACHE_LOG_DIR}/errormail.log

</VirtualHost>

J’active ce VHosts : a2ensite mail.mtdc et recharge la configuration apache : service apache2 reload

Avec mon navigateur, je me connecte à l’url : http://mail.mtdc/roundcube Vous remarquerez que le Vhost ne présente pas du tout d’éléments de configuration lié aux répertoires utilisés par RoundCube. Le paquet Debian comprend déjà cette configuration et situé dans /etc/apache2/conf-available/roundcube.conf. On peut y avoir l’alias « /roundcube« .

Avec quel compte dois-je me connecter ? Tout simplement le compte infogerance créé sur le serveur « Master » au chapitre « Test d’envoi d’un courriel » et en utilisant le mot de passe que vous avez fourni lors de sa création. Voici le déroulement de la connexion :

  • Connexion à l’url RoundCube : http://mail.mtdc
  • Je fourni le compte/mot de passe : « infogerance/monmotdepasse »
  • RoundCube cherche la configuration du serveur IMAP
  • Il envoie la paire compte/mot de passe saisie précédemment
  • Si l’authentification réussi, RoundCube peut récupérer les courriels de ce compte et les présenter dans l’interface.

*** Toujours pareil n’essayez toujours pas d’envoyer un courriel avec RoundCube *** Ceci sera l’objet d’un autre article.

Aller Plus loin

  • Installer une connexion sécurisée entre l’utilisateur et RoundCube (HTTPS)
  • Installer une connexion sécurisée (SMTP encrypté TLS/SSL) entre les serveurs et le serveur mail (dans la configuration présentée ce n’est pas le cas utilisation du port 25 – SMTP non crypté)
  • Utiliser des comptes en indiquant le domaine (ex: infogerance@master.mtdc
  • Paramétrer le serveur mail pour envoyer des messages sur l’internet.

Licence de ce document : Creative Commons (CC BY-NC-ND 4.0)
CETTE DOCUMENTATION EST LIVRÉE « EN L’ÉTAT », SANS GARANTIE D’AUCUNE SORTE ET DISTRIBUÉE DANS UN BUT ÉDUCATIF EXCLUSIVEMENT. L’AUTEUR, CONTRIBUTEURS DE CETTE DOCUMENTATION OU ©MYTINYDC.COM NE SAURAIENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES DES DOMMAGES DIRECTS OU INDIRECTS POUVANT RÉSULTER DE L’APPLICATION DES PROCÉDURES MISES EN ŒUVRE DANS CETTE DOCUMENTATION, OU DE LA MAUVAISE INTERPRÉTATION DE CE DOCUMENT.

Auteur : D.HENRY

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *