Description
L'échange de mails est le moyen standard de communication au ResEl. Il permet de nombreuses choses :
- aux machines d'envoyer des rapports (bugs, logs, ...) aux autres machines (centralisateur de log, voir ELK), ainsi qu'aux admins.
- aux personnes le souhaitant, d'utiliser un mail @resel.fr
- de faire circuler des mails d'adresses externes aux adresses internes
- de mettre en place des mailings-listes
Le ResEl possède une stack de services mail permettant de mettre en place ces échange de mail au sein du réseau.
Cet article décrit l'infrastructure des mails, ses points importants, et sa configuration.
Cette page ne traite pas de l'infrastructure des mailing-lists, allez plutôt voir la page sur Sympa pour cela.
De même, cette page ne traite pas de comment obtenir ou utiliser le webmail autohebérgé du ResEl, voir la page Adresse mail ResEl.
Contexte
Voici quelques points pour bien remettre en contexte cette page, et pour définir les limites entre ceux à quoi sert la stack.
Fournisseurs externes
La plupart des membres du ResEl utilisent des adresses mail @telecom-bretagne.eu, @imt-atlantique.net voire @gmail.com, ou bien d'autre. Ce sont des fournisseurs de mail externe, et en rien notre infrastructure n'intervient la dedans.
Mécanisme mail Linux
Linux fournit un mécanisme de mail natif, qui permet d'échanger des messages entre les utilisateurs d'un système (command mail
). Cependant une machine Linux ne sait pas envoyer ce mail à l'extérieur. Pour ce faire, le système doit avoir un MTA : Mail Transfer Agent, plus de détails plus bas. C'est dans la configuration de ce MTA qu'apparait l'infrastructure mail du ResEl, pour que la machine sache comment envoyer un mail à une adresse.
Mailing-listes
Les mailing-listes sont un outil pratique pour grouper un message pour plusieurs destinataires. Bien entendu, les personnes d'une mailing-listes ont toutes un fournisseur de mail différents, gmail, laposte, ... Le rôle de l'outil de mailing-listes du ResEl (qui est Sympa, plus de détails dans l'article spécifique) est de centraliser et dispatcher les mails envoyer à une mailing-listes. Pour ça il définit des adresses mails reposant sur l'infrastructure mail du ResEl.
Glossaire / Définitions
Dans cette article, on adopte les notations suivantes :
- MTA : Mail Transfer Agent
- LDA : Local Delivery Agent
- MUA : Mail User Agent
- Utilisateur : un utilisateur du service mail est quelqu'un avec une adresse mail en @\.resel.fr*. Cela peut être une personne physique ou une machine.
Infrastructure
Le petit rappel
Il faut, pour comprendre la mise en place, avoir une bonne idée de comment fonctionne le réseau mail, savoir ce qu'est un MTA, un LDA, les protocoles POP, IMAP et SMTP. On ne vas pas rentrer dans les détails, voir les cours pour cela, cependant voici un schéma résumé :
{{{{{{ title Les mails expliqués aux ResEl note left of Alice: Have a mail to send Alice->MTA Local: mail [SMTP] MTA Local->MTA Relai: mail [SMTP] MTA Relai->LDA Toad: mail [SMTP] note right of Bob: Want to check email Bob MUA->LDA Toad: Get mail [IMAP] LDA Toad->Bob MUA: Ok, here are your mails [IMAP] }}}}}}
{{{{{{ title essai diagramme mliste loop pour tout utilisateurs Mliste->Client: envoi mail end }}}}}}
Il y a, comme vous le savez, deux concepts fondamentaux pour les mails : l'envoi de mail et leur routage par un MTA avec le protocole SMTP(S), et la réception et synchronisation des boîtes mails par un LDA avec les protocoles IMAP(S) ou POP(S) qui échange avec le MUA, càd le client mail de l'utilisateur (ou le webmail).
Au ResEl
Au ResEl, Postfix joue le rôle de MTA c'est lui qui route les mails sortants (càd qu'un utilisateur a envoyé) depuis l'intérieur vers l'extérieur, ou en interne ; c'est aussi lui qui route les mails de l'extérieur en interne. Debian utilise par défaut Exim, mais nous utilisons Postfix au ResEl.
Lorsque les mails sont à destination d'un usager du ResEl, le MTA les envoie à Dovecot, notre LDA. C'est lui qui va permettre aux utilisateurs avec un compte mail @\.resel.fr*, de se connecter à leur compte, de récuperer les derniers mails, en utilisant IMAP(s) ou POP(s).
Tout ces services sont mise en place sur Toad.
De plus, chaque serveur du ResEl à une instance Postfix, configurée pour connaitre le MTA à contacter.
Utilisation
Côté utilisateur
En tant qu'utilisateur (càd machine ou autre), la première étape est de configurer le MTA local à la machine.
Configurer Postfix pour une machine
Il s'agit ici de configurer le MTA d'une machine, ici on choisit Postfix comme MTA, pour qu'il envoie les mails aux bon MTA relai. On configure aussi l'email destinataire de la machine. A noter qu'il n'y a pas d'authentification, une machine peut choisir l'adresse e-mail qu'elle souhaite.
Configuration initiale de postfix
En lançant un apt install postfix
, une interface de configuration debconf se lance. S'il est déjà installé, utilisez dpkg-reconfigure postfix
.
Suivez les étapes :
1. Sélectionner Internet with smarthost
, ok.
2. Choisir le system mail name : <nom de la machine>.adm.resel.fr
, ok.
3. Ajout du relais pegase.adm.resel.fr
.
Modification de main.cf
Il est maintenant nécessaire d'ajouter un alias pour transmettre les mails à @resel.fr
au lieu de @<machine>.adm.resel.fr
.
On va donc modifier le fichier indiqué /etc/postfix/main.cf
.
Normalement, dans le dernier bloc de texte, vous pouvez lire la ligne
relayhost = pegase.adm.resel.fr
dans laquelle vous allez ajouter des crochets autours de pegase.adm.resel.fr
pour éviter la résolution du MX.
(C'est-à-dire, lorsque l'on souhaite envoyer un mail à domain.tld, le MTA va faire une résolution DNS pour obtenir le serveur mail de ce nom de domaine, dig domain.tld MX
, si le DNS est bien configuré, il va donner l'adresse en charge du serveur mail pour domaine. Au ResEl, comme le DNS du ResEl est bien configuré, dig resel.fr MX
indiquera Toad, la machine centrale pour les mails dont le MTA n'est pas configuré en relai mais en vrai MTA. Hors ici on souhaite que le mail soit envoyé à pegase quoi qu'il arrive. Pour préciser à Postfix de ne pas faire de résolution du MX, on met des crochets autour pour lui indiquer d'utiliser cette adresse point à la ligne. Voir la doc de postfix)
Vous obtiendrez :
relayhost = [pegase.adm.resel.fr]
Modification des alias
Pour rediriger les mails vers les @resel.fr
, on va maintenant modifier le fichier contenant les alias /etc/alias
. Ce fichier spécifie que faire d'un mail envoyé à un alias précisés dans cette configuration. Par défaut on précise à qui envoyer le mail, mais on peut aussi faire des choses plus puissantes comme piper le mail à un programme...
On va modifier le fichier de sorte que tous les messages soient plutôt envoyés à root@resel.fr
, et les mails de sécurité vers security@resel.fr
. De cette manière, on a envoie tous les mails des machines aux heureux inscrits à la mailing-liste de flood.
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: security@resel.fr
root: root@resel.fr
Application des changements
Il faut regénérer la base de données des alias :
newaliases
Puis recharger postifx.
/etc/init.d/postfix reload
Côté administrateur
Un adminstrateur aura besoin de gérer la stack mail pour plusieurs raisons :
- Gérer les boîtes mails, notemment pour vider les boites trop pleines qui encombrent les disques
- Diagnostiquer l'état de la stack
- État des queues de mails en attente du MTA
- Autres...
Gestion des boîtes mails Dovecot
Commandes utiles
doveadm user $username
doveadm mailbox list -u $username
Pour connaître la taille de la boite mail (potentiellement très long):
doveadm -f table mailbox status -u $username "messages vsize" INBOX
Pour totalement vider la boite mail d'un utilisateur (attention, suppression non réversible)
doveadm -v expunge -u $username mailbox INBOX all
Gestion de la file d'attente
La file d'attente des messages est gérée par postqueue.
Afficher le nombre de messages dans la queue: postqueue -p | tail -n 1
.
Afficher les messages dans la queue: postqueue -p
.
Retenter l'expédition des messages dans la queue: postqueue -f
(déplace tous les messages dans la queue active).