1 février 2023

Serveur Messagerie complet : La série de Tutos

Tutoriel révisé en décembre 2022 / Debian 11

Ha ! Nous y voila ! La série de tutoriels sur la mise en place d’un serveur de messagerie complet.

J’avais commencé un article il y a quelques années que je n’avais pas pris le temps de terminer : il manquait toute la partie sur la gestion du spam; bien qu’en fonction chez moi, je n’avais pas rédigé le tutoriel correspondant.

Cette fois ci, on recommence à zéro et surtout, on va jusqu’au bout, mais avec UN changement de taille, la gestion des comptes se fera dorénavant à l’aide d’un annuaire LDAP.

Pourquoi LDAP et non pas Mysql ? Bonne question que voila… Et pour vous répondre :

  • J’ai déjà mes comptes en Ldap
  • Le Ldap est plus rapide en lecture que le SQL.
  • On trouve beaucoup de docs sur le net avec Mysql, mais très peu avec LDAP (ou alors, ça ne fonctionne pas du premier coup…), donc c’était l’occasion de s’y mettre et de proposer quelque chose d’unique !

L’installation d’un serveur de mail fonctionnel est le Saint Graal pour beaucoup de SysAdmins. C’est souvent considéré comme compliqué… Très peu d’articles expliquent vraiment comment tout fonctionne. Il faut beaucoup lire les mans, potasser des Faq, guides, docs… Et surtout comprendre de ses erreurs…

Pour info, j’ai passé une bonne semaine à la mise en place, aux tests, au debug, …. Et je ne parle pas du temps de rédaction ;). Comme d’habitude, j’essaye d’être un maximum didactique.

Je pourrais me contenter de simplement vous fournir les fichiers de configurations. Mais j’aime aussi montrer les erreurs ou les problèmes que j’ai rencontré.

Bref, si certains points sont flous, s’il y a des erreurs, des améliorations, n’hésitez pas à commenter !

 

I – Présentation

Résumons mes besoins :

  • Gestion de toutes mes adresses mails.
  • Gestion de plusieurs domaines.
  • Gestion des mails émanant de mes VMs (on verra cela dans un article connexe).
  • Traitement Spam.
  • Utilisation du référentiel utilisateur de mon serveur LDAP.
  • Filtrage Sieve (sur le serveur directement).

Voyons maintenant les briques qui vont constituer notre architecture

  • Postfix : Le point central de l’architecture, il assure la réception des mails des serveurs smtps extérieurs, l’envoi de mails vers eux et la soumission de message depuis les clients connectés.
  • Dovecot : Première fonction : range les mails reçus depuis Postfix via lmtp dans les bals physiques des utilisateurs. Peut les trier dans des sous-répertoires en fonction de règles Sieve.
    Deuxième fonction : permet aux utilisateurs de consulter leur boites aux lettres en IMAP à l’aide du client de leur choix (ou d’un webmail). Ici, je ne gère pas le pop car c’est le mal (plus sérieusement, tellement d’avantages avec l’Imap que je ne vois pas l’utilité de proposer du pop.
    Troisième fonction : fournit le support AUTH à Postfix (pour l’envoi de message).
  • Rspamd : Traitement du Spam pour les mails venant de l’extérieur et de la signature DKIM pour les mails sortants.
  • Openldap :  Stockage de nos utilisateurs, domaines, boites aux lettres (aspect configuration, les mails en eux mêmes seront stockés sur disque)

Pour le moment, pas de traitement antivirus, c’est lourd en terme de ressource. Je testerais quand même une solution plus tard, mais ce n’est pas pour de suite …

Ce tuto s’inscrit dans la lignée de : Tuto Virtualisation V 2022 : Debian 11, KVM et Openvswitch. Vous y retrouverez l’architecture, les explications, etc…

Idéalement, avant d’attaquer la messagerie, vous aurez mis en place :

  • Ceph (tutoriel à venir) pour le stockage (mais pas obligatoire, on peut tout à fait stocker les mails sur le serveur de messagerie)
  • LDAP (tutoriel détaillé: OpenLDAP), la obligatoire, mais comme c’est, on va pas se mentir, déjà une tannée; je vous propose d’aller vite à l’essentiel dans la partie I, vous aurez l’occasion de voir en détail plus tard.

 

II – Création de la VM

Je me sers de mon script fait maison (Tuto Virtualisation avec KVM, partie VIII : Scripts d’automatisation)

Au niveau de la configuration  :

# Options
size_swap=1
size_var=3
size=4
ram=512
cpu=1

A – Création de la VM

Tout simplement  :

# ./create.sh -n mail1 -i 151 -s 1

Avant de la démarrer, un peu de configuration…

B – Ajout des interfaces réseaux

Nous allons attacher les interfaces supplémentaires, à savoir un port trunk vlansext (les vlans 10 et 20) sur chaque serveur.

Créez un fichier : net-mail1.xml

interface type='network'>
    <source network='intern-vlans' portgroup='vlansext'/>
    <target dev='mail1.1'/>
    <model type='virtio'/>
    <driver name='vhost'/>
</interface>

Et on ajoute :

# virsh attach-device mail1 net-mail1.xml --config

Pour mémoire, le flag –config indique qu’on rend la modification pérenne (maintient au reboot).

C – Configuration réseaux

On va éditer les fichiers d’interfaces avant de démarrer :

# mount /dev/mapper/vg1-mail1p1 /root/mountlvm/

On édite le fichier /root/mountlvm/etc/network/interfaces pour y ajouter les interfaces eth1.10 et eth1.20 :

auto lo
iface lo inet loopback

auto eth0.99
iface eth0.99 inet static
 address 10.99.1.151
 netmask 255.255.255.0

auto eth0.250
iface eth0.250 inet static
 address 10.250.1.151
 netmask 255.255.255.0

auto eth1.10
iface eth1.10 inet static
 address 10.10.1.151
 netmask 255.255.255.0
 gateway 10.10.1.254

auto eth1.20
iface eth1.20 inet static
 address 10.20.1.151
 netmask 255.255.255.0
 up ip route add 10.100.0.0/16 via 10.20.1.254

On démonte :

# umount /root/mountlvm

Et on peut démarrer la VM :

# virsh start mail1

Puis se connecter dessus :

# ssh user@mail1

III – Les articles

I – Le LDAP

II – Postfix

III – Dovecot

IV – Optimisation de Postfix

V – Policyd SPF et Postscreen

VI – Rspamd

VII – SPF, DKIM et DMARC

VIII – Conclusion

 

Pour aller plus loin :

Fail2Ban

ClamAv

Migration d’un serveur à l’autre

Test en ligne de commande d’un SMTP et d’un IMAP

 

Laisser un commentaire

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