Juris Tyr



…/…
Chapitre 7 : Installer un serveur d’e-mails sécurisé avec Postfix et dovecot

-> Retour au sommaire

Pourquoi utiliser votre propre serveur de messagerie ?

Peut-être avez-vous un site Web qui doit envoyer des e-mails aux utilisateurs, ou peut-être souhaitez-vous envoyer vos e-mails depuis votre nom de domaine pour donner une image plus professionnelle à votre cabinet d’avocats ou à votre entreprise, ou peut-être souhaitez-vous stocker vos e-mails sur votre propre serveur pour protéger votre vie privée et le sécuriser...

La création de votre propre serveur de messagerie e-mails implique d’installer de nombreux composants logiciels. C’est la partie la plus longue et complexe de ce didacticiel.

En suivant ce didacticiel, non seulement vous aurez un serveur de messagerie fonctionnel, mais vous aurez également une bien meilleure compréhension du fonctionnement de la messagerie.

Une fois que vous aurez terminé cette phase, vous devriez pouvoir envoyer et recevoir des e-mails avec votre propre domaine de messagerie sur votre propre serveur de messagerie.

À propos de Postfix :

Postfix est un agent de transport de messages (MTA) à la pointe de la technologie, alias serveur SMTP, qui remplit deux fonctions.

Postfix a été construit par Wietse Venema qui est un expert Unix et de la sécurité. Il est facile à utiliser, conçu dans un souci de sécurité et de modularité, chaque module fonctionnant au niveau de privilège le plus bas possible requis pour faire le travail. Postfix s’intègre étroitement à Unix/Linux et ne fournit pas les fonctionnalités qu’Unix/Linux fournit déjà. Il est fiable dans des conditions simples et stressantes.

Postfix a été conçu à l’origine pour remplacer Sendmail, le serveur SMTP traditionnel sous Unix. En comparaison, Postfix est plus sécurisé et plus facile à configurer. Il est compatible avec Sendmail, donc si vous désinstallez Sendmail et le remplacez par Postfix, vos scripts et programmes existants continueront à fonctionner de manière transparente.

Dans ce tutoriel, vous apprendrez à configurer Postfix pour un seul domaine : exemple.com.

Choses à faire avant d’installer Postfix :

Pour améliorer les performances de Postfix et tirer le meilleur parti de Postfix, vous devez configurer correctement votre serveur Ubuntu.

Définir un nom d’hôte pour le serveur Ubuntu :

Par défaut, Postfix utilise le nom d’hôte de votre serveur pour s’identifier lors de la communication avec d’autres MTA. Le nom d’hôte peut avoir deux formes : un seul mot et FQDN.

La forme de mot unique est principalement utilisée sur les ordinateurs personnels. Votre ordinateur personnel Linux peut être nommé linux, debian, ubuntu etc.

Le FQDN (nom de domaine complet) est couramment utilisé sur les serveurs connectés à Internet et nous devons utiliser le FQDN sur nos serveurs de messagerie.

Il se compose de deux parties : un nom de nœud et un nom de domaine.

Par exemple:

mail.exemple.com

est un FQDN. mail est le nom du nœud et exemple.com est le nom de domaine.

FQDN apparaîtra dans la bannière smtpd.

Certains MTA rejettent les messages si votre Postfix ne fournit pas de FQDN dans la bannière smtpd. Certains MTA interrogent même le DNS pour voir si le FQDN dans la bannière smtpd correspond à l’adresse IP de votre serveur de messagerie.

Entrez la commande suivante pour voir la forme FQDN de votre nom d’hôte.

hostname -f

Si votre serveur Ubuntu n’a pas encore de nom de domaine complet, vous pouvez utiliser hostnamectl pour en définir un.

sudo hostnamectl set-hostname your-fqdn

Un nom de domaine complet courant pour le serveur de messagerie est mail.votredomaine.com.

Vous devez vous déconnecter et vous reconnecter pour voir ce changement à l’invite de commande.

Configurer les enregistrements DNS pour votre serveur de messagerie

Vous devez vous rendre sur votre service d’hébergement DNS (généralement votre registraire de domaine comme NameCheap) pour configurer les enregistrements DNS

Créer un enregistrement ‘MX’ ‘mail.exemple.com’ avec votre domaine

Un enregistrement MX indique aux autres MTA que votre serveur de messagerie mail.votredomaine.com est responsable de la distribution des e-mails pour votre nom de domaine.

MX record    @           mail.exemple.com

Un nom commun pour l’hôte MX est mail.votredomaine.com. Vous pouvez spécifier plusieurs enregistrements MX et définir la priorité de vos serveurs de messagerie. Un nombre inférieur signifie une priorité plus élevée. Ici, nous n’utilisons qu’un seul enregistrement MX et définissons 0 comme valeur de priorité. (0 – 65535)

Notez que lorsque vous créez l’enregistrement MX, vous devez saisir @ ou votre nom de domaine dans le champ du nom, comme ci-dessous. Un nom de domaine apex est un nom de domaine sans sous-domaine.

ou

Créer un enregistrement ‘A’ avec un sous domaine mail :

Un enregistrement A relie un nom de domaine complet à une adresse IPv4.

Créer un sous domaine « mail.exemple.com » depuis l’interface de gestion de nom de domaine de votre prestataire (reportez-vous à l’étape 1 de la phase 4 de ce tutoriel).

mail.exemple.com        <IP-address>
Créer un enregistrement ‘AAAA’ avec un sous domaine mail ‘mail.exemple.com’ :

Si votre serveur utilise une adresse IPv6, il est également judicieux d’ajouter un enregistrement DNS AAAA pour  mail.exemple.com.

mail.exemple.com        <IPv6-address>

Astuce : Si vous utilisez le service DNS Cloudflare, vous ne devez pas activer la fonctionnalité CDN (proxy) lors de la création d’un enregistrement A et AAAA pour mail.exemple.com. Cloudflare ne prend pas en charge le proxy SMTP ou IMAP.

Cas particulier : créer éventuellement un enregistrement PTR (facultatif)

Un enregistrement de pointeur, ou enregistrement PTR, mappe une adresse IP à un FQDN. Il s’agit de l’équivalent de l’enregistrement A et est utilisé pour la recherche DNS inversé (rDNS).

La résolution inverse de l’adresse IP avec enregistrement PTR peut aider à bloquer les spammeurs. De nombreux MTA n’acceptent les e-mails que si le serveur est réellement responsable d’un certain domaine. Vous devez donc définir un enregistrement PTR pour votre serveur de messagerie afin que vos e-mails aient une meilleure chance d’atterrir dans la boîte de réception du destinataire au lieu du dossier spam.

Pour vérifier l’enregistrement PTR d’une adresse IP, vous pouvez utiliser la commande suivante.

dig -x <IP> +short

ou

host <IP>

L’enregistrement PTR n’est pas géré par votre bureau d’enregistrement de domaine. Il est géré par l’organisation qui vous donne une adresse IP. Vous obtenez l’adresse IP de votre fournisseur d’hébergement, et non de votre registraire de domaine, vous devez donc définir un enregistrement PTR pour votre adresse IP dans le panneau de configuration de votre fournisseur d’hébergement. Sa valeur doit être le nom d’hôte de votre serveur de messagerie : mail.votre-domaine.com. Si votre serveur utilise une adresse IPv6, ajoutez également un enregistrement PTR pour votre adresse IPv6.

Remarque : Gmail vérifiera en fait l’enregistrement A du nom d’hôte spécifié dans l’enregistrement PTR. Si le nom d’hôte correspond à la même adresse IP, Gmail acceptera votre e-mail. Sinon, il rejettera votre e-mail.

Une fois tout ce qui précède terminé, allons-y avec Postfix.


Etape 1 : Installation de Postfix

-> Retour au sommaire

Sur votre serveur Ubuntu, exécutez les deux commandes suivantes.

sudo apt-get update

sudo apt-get install postfix -y

Vous serez invité à sélectionner un type pour la configuration du courrier.

Vous sélectionnerez le deuxième type : Internet Site.

Ensuite, entrez votre nom de domaine pour le nom de messagerie système, c’est-à-dire le nom de domaine après le symbole @. Par exemple, l’adresse e-mail du cabinet Avocat-Rainio est contact@avocat-rainio.com, on a donc saisi avocat-rainio.com pour le nom de messagerie du système. Ce nom de domaine sera ajouté aux adresses qui n’ont pas de nom de domaine spécifié.

Notez que si vous saisissez un sous-domaine tel que mail.exemple.com, vous pourrez recevoir des e-mails destinés aux adresses toto@mail.exemple.com, mais pas les e-mails destinés à toto@exemple.com.

Vous devez donc choisir : Internet Site

puis indiquer votre nom de domaine :
exemple.com

Une fois installé, Postfix sera automatiquement démarré et un fichier /etc/postfix/main.cf sera généré. Nous pouvons maintenant vérifier la version de Postfix avec cette commande :

postconf mail_version

Sur Ubuntu 22.04, la version Postfix est 3.6.4 et Ubuntu 20.04 est livré avec la version 3.4.10.

mail_version = 3.6.4

L’utilitaire ‘ss’ (Socket Statistics) nous indique que le processus maître de Postfix écoute sur le port TCP 25.

sudo ss -lnpt | grep master

Postfix est livré avec de nombreux fichiers binaires sous le répertoire /usr/sbin/ , comme on peut le voir avec la commande suivante.

dpkg -L postfix | grep /usr/sbin/

Sortie :

/usr/sbin/postalias
/usr/sbin/postcat
/usr/sbin/postconf
/usr/sbin/postdrop
/usr/sbin/postfix
/usr/sbin/postfix-add-filter
/usr/sbin/postfix-add-policy
/usr/sbin/postkick
/usr/sbin/postlock
/usr/sbin/postlog
/usr/sbin/postmap
/usr/sbin/postmulti
/usr/sbin/postqueue
/usr/sbin/postsuper
/usr/sbin/posttls-finger
/usr/sbin/qmqp-sink
/usr/sbin/qmqp-source
/usr/sbin/qshape
/usr/sbin/rmail
/usr/sbin/sendmail
/usr/sbin/smtp-sink
/usr/sbin/smtp-source

Ouvrir le port TCP 25 (entrant) dans le pare-feu :

Le port TCP entrant 25 doit être ouvert, afin que Postfix puisse recevoir des emails d’autres serveurs SMTP. Ubuntu n’active pas de pare-feu par défaut. Si vous avez activé le pare-feu UFW, vous devez ouvrir le port 25 (entrant) avec la commande suivante.

sudo ufw allow 25/tcp

Nous pouvons ensuite analyser les ports ouverts sur le serveur de messagerie à l’aide d’un analyseur de ports en ligne. Entrez l’adresse IP publique de votre serveur de messagerie et sélectionnez analyser tous les ports communs.

Vous pouvez voir sur la capture d’écran ci-dessus que le port TCP 25 est ouvert sur le serveur de messagerie.


Vérifier si le port TCP 25 (sortant) est bloqué (facultatif) :

Le port 25 TCP sortant doit être ouvert, afin que Postfix puisse envoyer des e-mails à d’autres serveurs SMTP. Le port TCP 25 sortant est contrôlé par votre hébergeur. Nous pouvons installer l’utilitaire telnet pour vérifier s’il est ouvert ou bloqué.

sudo apt install telnet

Exécutez la commande suivante sur votre serveur de messagerie.

telnet gmail-smtp-in.l.google.com 25

S’il n’est pas bloqué, vous verrez des messages comme ci-dessous, qui indiquent qu’une connexion est établie avec succès. (Astuce : saisissez le mot ‘quit’ et appuyez sur Entrée pour fermer la connexion.)

Trying 74.125.68.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp

Si le port 25 (sortant) est bloqué, vous verrez quelque chose comme :

Trying 2607:f8b0:400e:c06::1a...
Trying 74.125.195.27...
telnet: Unable to connect to remote host: Connection timed out

Dans ce cas, votre Postfix ne peut pas envoyer d’emails vers d’autres serveurs SMTP. Demandez à votre FAI/fournisseur d’hébergement d’ouvrir le port sortant 25 pour vous. S’ils refusent votre demande, vous devez configurer un relais SMTP pour contourner le blocage du port 25 ou utiliser un VPS comme Kamatera qui ne bloque pas le port 25.

Certaines personnes pourraient se demander : « Puis-je changer le port 25 en un autre port pour contourner le blocage » ?

La réponse est non.


Envoi d’e-mails de test (facultatif) :

En fait, nous pouvons désormais envoyer et recevoir des e-mails depuis la ligne de commande. Si votre serveur Ubuntu dispose d’un compte utilisateur appelé utilisateur1, l’adresse e-mail de cet utilisateur est utilisateur1@votredomaine.com. Vous pouvez envoyer un e-mail à l’utilisateur racine root@votredomaine.com. Vous pouvez également envoyer des e-mails à Gmail, Yahoo Mail ou tout autre service de messagerie.

Lors de l’installation de Postfix, un binaire sendmail est placé dans /usr/sbin/sendmail, qui est compatible avec le serveur SMTP Sendmail traditionnel. Vous pouvez utiliser le binaire sendmail de Postfix pour envoyer un e-mail de test à votre compte Gmail comme ceci :

echo "test email" | sendmail your-account@gmail.com

Dans cette commande simple, sendmail lit un message à partir de l’entrée standard et définit « test email » comme corps du message, puis envoie ce message à votre compte Gmail. Vous devriez pouvoir recevoir cet e-mail de test dans votre boîte de réception Gmail (ou dossier spam). Vous pouvez voir que bien que nous n’ayons pas spécifié l’adresse d’expédition, Postfix ajoute automatiquement un nom de domaine pour l’adresse d’expédition. C’est parce que nous avons ajouté notre nom de domaine dans le nom de messagerie système lors de l’installation de Postfix.

Remarque : Le nom de domaine De : est déterminé par le paramètre myorigin dans Postfix, et non par le paramètre myhostname .

Vous pouvez essayer de répondre à cet e-mail de test pour voir si Postfix peut recevoir des e-mails. Il est probable que les e-mails envoyés depuis votre domaine soient étiquetés comme spam. Ne vous inquiétez pas maintenant. Nous allons résoudre ce problème dans les parties ultérieures de cette série de didacticiels.

La boîte de réception de chaque utilisateur se trouve dans le fichier /var/spool/mail/<username> ou /var/mail/<username>. Si vous ne savez pas où chercher la boîte de réception, utilisez cette commande.

postconf mail_spool_directory

Le journal des e-mails de Postfix est stocké dans /var/log/mail.log.


Vous ne pouvez toujours pas envoyer d’e-mail ? (facultatif)

eh bien, c’est dommage… Bref, si le port 25 (sortant) n’est pas bloqué, mais que vous ne pouvez toujours pas envoyer d’e-mails depuis votre propre serveur de messagerie vers votre autre adresse e-mail telle que Gmail, vous devez ouvrir le journal des e-mails (/var/log/mail.log) avec un éditeur de texte en ligne de commande, tel que Nano.

sudo nano /var/log/mail.log

Par exemple, certaines personnes peuvent voir les lignes suivantes dans le fichier.

host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information

Cela signifie que votre serveur de messagerie utilise IPv6 pour envoyer l’e-mail, mais que vous n’avez pas configuré d’enregistrements IPv6. Vous devez vous rendre dans votre gestionnaire DNS, définir l’enregistrement AAAA pour mail.votre-domaine.com, puis vous devez également définir l’enregistrement PTR pour votre adresse IPv6. (L’enregistrement PTR est géré par l’organisation qui vous donne une adresse IP.)

Pour enregistrer un fichier dans l’éditeur de texte Nano, appuyez sur Ctrl+O, puis appuyez sur Entrée pour confirmer. Pour quitter, appuyez sur Ctrl + X.


Utilisation d’un programme de messagerie pour envoyer et lire des e-mails :

Installons maintenant un MUA (mail user agent) en ligne de commande.

sudo apt-get install mailutils

Pour envoyer un e-mail, tapez :

mail -a FROM:your-account@yourdomain.com username@gmail.com
user@mail:~$ mail -a FROM:xiao@linuxbabe.com username@gmail.com
Cc: 
Subject: 2nd test email
I'm sending this email using the mail program.

Entrez la ligne d’objet et le corps du texte. Pour indiquer à mail que vous avez fini d’écrire, appuyez sur Ctrl+D et mail enverra cet e-mail pour vous.

Pour lire les e-mails entrants, saisissez simplement mail.

mail

Voici comment utiliser le programme de messagerie pour gérer votre boîte aux lettres.

Les messages qui ont été ouverts seront déplacés de /var/mail/<username> vers /home/<username>/mbox file. Cela signifie que les autres clients de messagerie ne peuvent pas lire ces messages. Pour éviter que cela ne se produise, tapez x au lieu de q pour quitter le courrier.

Comment augmenter la limite de taille des pièces jointes :

Par défaut, la pièce jointe ne peut pas dépasser 10 Mo, ce qui est indiqué par le paramètre message_size_limit .

postconf | grep message_size_limit

Sortie :

message_size_limit = 10240000

Ce paramètre définit la taille limite des e-mails provenant de votre propre serveur de messagerie et des e-mails arrivant sur votre serveur de messagerie.

Pour autoriser une pièce jointe d’une taille de 50 Mo, exécutez la commande suivante.

sudo postconf -e message_size_limit=52428800

Lorsque la commande postconf est invoquée avec l’option -e (edit), elle essaiera de trouver le paramètre (message_size_limit) dans le fichier de configuration principal de Postfix (/etc/postfix/main.cf) et de modifier la valeur. Si le paramètre est introuvable, il ajoute le paramètre à la fin du fichier.

Notez que message_size_limit ne doit pas être supérieur à mailbox_size_limit, sinon Postfix pourrait ne pas être en mesure de recevoir des e-mails. La valeur par défaut de mailbox_size_limit est de 5 120 000 octets (environ 48 Mo) dans le package Postfix en amont. Sur Ubuntu, la valeur par défaut est définie sur 0, comme on peut le voir avec

postconf | grep mailbox_size_limit

Sortie :

mailbox_size_limit = 0

Cela signifie que la boîte aux lettres n’a pas de limite de taille…

Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl restart postfix

Lorsque vous envoyez un e-mail avec des pièces jointes volumineuses à partir de votre serveur de messagerie, vous devez également faire attention à la limite de taille des pièces jointes du serveur de réception. Par exemple, vous ne pouvez pas envoyer une pièce jointe de plus de 25 Mo à une adresse Gmail.


Définition du nom d’hôte Postfix :

Par défaut, le serveur SMTP de Postfix utilise le nom d’hôte du système d’exploitation. Cependant, le nom d’hôte du système d’exploitation peut changer, c’est donc une bonne pratique de définir le nom d’hôte directement dans le fichier de configuration de Postfix. Ouvrez le fichier de configuration principal de Postfix avec un éditeur de texte en ligne de commande, tel que Nano.

sudo nano /etc/postfix/main.cf

Recherchez le paramètre myhostname et définissez mail.yourdomain.com comme valeur. Il n’est pas recommandé d’utiliser le domaine apex votredomaine.com comme monnomd’hôte. Techniquement, vous pouvez utiliser le domaine apex, mais cela créera des problèmes dans les parties ultérieures de cette série de didacticiels.

myhostname = mail.exemple.com

Enregistrez et fermez le fichier. (Pour enregistrer un fichier dans l’éditeur de texte Nano, appuyez sur Ctrl+O, puis appuyez sur Entrée pour confirmer. Pour quitter, appuyez sur Ctrl+X.) Redémarrez Postfix pour que la modification prenne effet.

sudo systemctl restart postfix

Création d’un alias d’e-mail :

Il existe certains alias obligatoires que vous devez configurer lorsque vous utilisez votre serveur de messagerie dans un environnement de production. Vous pouvez ajouter un alias d’adresse e-mail dans le fichier /etc/aliases , qui est un fichier de table de recherche spécial de Postfix utilisant un format compatible Sendmail.

sudo nano /etc/aliases

Par défaut, il n’y a que deux lignes dans ce fichier.

# See man 5 aliases for format
postmaster: root

La première ligne est un commentaire. La deuxième ligne est la seule définition d’un alias dans ce fichier. Le côté gauche est le nom d’alias. Le côté droit est la destination finale du message électronique. Ainsi, les e-mails pour postmaster@exemple.com seront envoyés à root@your-domain.com. L’adresse e-mail du postmaster est requise par la RFC 2142.

Normalement, nous n’utilisons pas l’adresse e-mail racine. Au lieu de cela, le ‘postmaster’ peut utiliser un nom de connexion normal pour accéder aux e-mails. Vous pouvez donc ajouter la ligne suivante. Remplacez nom d’utilisateur par votre vrai nom d’utilisateur si votre système d’exploitation est Ubuntu, ce sera probablement ubuntu, sinon, indiquez votre nom d’utilisateur).

root:   ubuntu

De cette façon, les e-mails pour postmaster@your-domain.com seront envoyés à username@your-domain.com. Vous pouvez maintenant enregistrer et fermer le fichier. Ensuite, reconstruisez la base de données d’alias avec la commande newaliases 

sudo newaliases

Utilisation d’une adresse IPv4 uniquement :

Par défaut, Postfix utilise à la fois les protocoles IPv4 et IPv6, comme on peut le voir avec :

postconf inet_protocols

Sortie :

inet_protocols = all

Si votre serveur de messagerie n’a pas d’adresse IPv6 publique, il est préférable de désactiver IPv6 dans Postfix pour éviter les connexions IPv6 inutiles. Exécutez simplement la commande suivante pour désactiver IPv6 dans Postfix.

sudo postconf -e "inet_protocols = ipv4"

Redémarrez ensuite Postfix.

sudo systemctl restart postfix

Mettre à jour de Postfix :

Si vous exécutez sudo apt update, puis sudo apt upgrade et que le système va mettre à niveau Postfix, vous serez peut-être invité à choisir à nouveau un type de configuration pour Postfix. Cette fois, vous devez choisir Aucune configuration pour ne pas toucher à votre fichier de configuration actuel.

Félicitations ! Vous avez maintenant un serveur de messagerie Postfix de base opérationnel. Vous pouvez envoyer des e-mails en texte brut et lire les e-mails entrants à l’aide de la ligne de commande. Dans la prochaine partie de cette série de didacticiels, nous apprendrons comment installer le serveur Dovecot IMAP et activer le cryptage TLS, ce qui nous permettra d’utiliser un client de messagerie de bureau comme Mozilla Thunderbird pour envoyer et recevoir des e-mails.


Etape 2 : Installer le serveur Dovecot IMAP sur Ubuntu et activer le cryptage TLS

-> Retour au sommaire

Il s’agit de l’étape 2 de la création de votre propre serveur de messagerie sécurisé sur Ubuntu à partir de zéro série de didacticiels. Dans l’étape 1, nous vous avons vu comment configurer un serveur SMTP de base pour Postfix. Dans cette étape 2, nous allons configurer notre serveur de messagerie afin de pouvoir recevoir et envoyer des e-mails à l’aide d’un client de messagerie de bureau tel que Mozilla Thunderbird ou Microsoft Outlook.

Pour pouvoir envoyer des e-mails à l’aide d’un client de messagerie de bureau, nous devons activer le service de soumission dans Postfix. Pour recevoir des e-mails à l’aide d’un client de messagerie de bureau, nous pouvons installer un serveur IMAP open source nommé Dovecot sur le serveur Ubuntu. Et pour chiffrer nos communications, nous avons besoin d’un certificat TLS.


Ouvrir les ports dans le pare-feu :

Ubuntu n’active pas le pare-feu par défaut. Si vous avez activé le pare-feu UFW, vous devez exécuter la commande suivante pour ouvrir les ports liés aux e-mails dans le pare-feu.

sudo ufw allow 80,443,587,465,143,993/tcp

Si vous utilisez POP3 pour récupérer des e-mails (afin de les sauvegarder sur le disque du de votre ordinateur), ouvrez également les ports 110 et 995.

sudo ufw allow 110,995/tcp

Sécurisation du trafic du serveur de messagerie avec un certificat TLS

Lorsque nous configurons nos clients de messagerie de bureau, c’est toujours une bonne idée d’activer le cryptage TLS pour empêcher les pirates d’espionner nos e-mails. Nous pouvons facilement obtenir un certificat TLS gratuit auprès de Let’s Encrypt. Exécutez les commandes suivantes pour installer le client Let’s Encrypt (certbot) sur le serveur Ubuntu à partir du référentiel de logiciels par défaut.

sudo apt update

sudo apt dist-upgrade

sudo apt install certbot

Si vous n’avez pas encore de serveur Web en cours d’exécution, on vous recommande d’en installer un (Apache ou Nginx), car il est plus facile d’obtenir et d’installer un certificat TLS avec un serveur Web qu’en utilisant d’autres méthodes. Et dans un tutoriel ultérieur, on vous montrera comment configurer la messagerie Web, ce qui nécessite l’exécution d’un serveur Web.

Si vous utilisez le serveur Web Apache, vous devez installer le plugin Apache. (La commande suivante installera le serveur Web Apache s’il n’est pas déjà installé sur votre système.)

sudo apt install python3-certbot-apache

Obtention d’un certificat TLS avec un serveur Apache :

Vous devez disposer d’un hôte virtuel Apache pour mail.exemple.com avant d’obtenir le certificat Let’s Encrypt TLS. Créez le fichier d’hôte virtuel :

sudo nano /etc/apache2/sites-available/mail.exemple.com.conf

Collez ensuite le texte suivant dans le fichier.

<VirtualHost *:80>        
        ServerName mail.exemple.com

        DocumentRoot /var/www/html/
</VirtualHost>

Enregistrez et fermez le fichier. Activez cet hôte virtuel.

sudo a2ensite mail.exemple.conf

Désactivez ensuite l’hôte virtuel par défaut, car il pourrait interférer avec d’autres hôtes virtuels.

sudo a2dissite 000-default

Rechargez Apache pour que les modifications prennent effet.

sudo systemctl reload apache2

Une fois l’hôte virtuel créé et activé, exécutez la commande suivante pour obtenir le certificat Let’s Encrypt TLS.

sudo certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email you@example.com -d mail.exemple.com

Définitions :

Remplacez le texte rouge par vos données réelles. Vous devriez voir ce qui suit, ce qui signifie que le certificat a été obtenu avec succès. Vous pouvez également voir le répertoire dans lequel votre certificat est stocké.


Activer le service de soumission des e-mails dans Postfix :

Pour envoyer des e-mails à partir d’un client de messagerie de bureau, nous devons activer le service de soumission de Postfix afin que le client de messagerie puisse soumettre des e-mails au serveur SMTP de Postfix. Modifiez le fichier master.cf.

sudo nano /etc/postfix/master.cf

Dans la section de soumission, décommentez ou ajoutez les lignes suivantes. Veuillez autoriser au moins un espace (tabulation ou barre d’espace) avant -o. Dans les configurations postfixées, un caractère d’espacement précédent signifie que cette ligne est la continuation de la ligne précédente. (Par défaut, la section de soumission est commentée. Vous pouvez copier les lignes suivantes et les coller dans le fichier, de sorte que vous n’ayez pas à décommenter manuellement ou à ajouter du nouveau texte.)

submission     inet     n    -    y    -    -    smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

La configuration ci-dessus active le service de soumission de Postfix et nécessite un chiffrement TLS. Ainsi, plus tard, notre client de messagerie de bureau pourra se connecter au service de soumission dans le cryptage TLS. Le service de soumission écoute sur le port TCP 587. STARTTLS est utilisé pour chiffrer les communications entre le client de messagerie et le service de soumission.

Le client de messagerie Microsoft Outlook ne prend en charge que la soumission sur le port 465. Si vous comptez utiliser Microsoft Outlook, vous devez également activer le service de soumission sur le port 465 en ajoutant les lignes suivantes dans le fichier.

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

Enregistrez et fermez le fichier.

Conseil : Le protocole SMTP est utilisé lorsqu’un client de messagerie envoie des e-mails à un serveur SMTP.

Ensuite, nous devons spécifier l’emplacement du certificat TLS et de la clé privée dans le fichier de configuration de Postfix. Modifiez le fichier main.cf.

sudo nano /etc/postfix/main.cf

Modifiez le paramètre TLS comme suit. N’oubliez pas de remplacer  mail.votre-domaine.com par votre véritable nom d’hôte.

#Enable TLS Encryption when Postfix receives incoming emails
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.your-domain.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.your-domain.com/privkey.pem
smtpd_tls_security_level=may 
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

#Enable TLS Encryption when Postfix sends outgoing emails
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

#Enforce TLSv1.3 or TLSv1.2
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

Votre certificat et votre clé privée Let’s Encrypt sont stockés dans le répertoire /etc/letsencrypt/live/mail.your-domain.com/ .

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix.

sudo systemctl restart postfix

Si vous exécutez la commande suivante, vous verrez que Postfix écoute maintenant sur les ports 587 et 465.

sudo ss -lnpt | grep master

Etape 2 : Installation du serveur Dovecot IMAP

-> Retour au sommaire

Nous allons désormais installer le progiciel’Dovecot’.

Entrez la commande suivante pour installer le package Dovecot core et le package service IMAP sur le serveur Ubuntu.

sudo apt install dovecot-core dovecot-imapd

Si vous utilisez POP3 pour récupérer des e-mails, installez également le package dovecot-pop3d.

sudo apt install dovecot-pop3d

Vérifier la version de dovecot

dovecot --version

Sortie :

2.3.16 (7e2e900c1a)
Activation du protocole IMAP/POP3 :

Modifiez le fichier de configuration principal.

sudo nano/etc/dovecot/dovecot.conf

Ajoutez la ligne suivante pour activer le protocole IMAP.

protocols = imap

Si vous utilisez POP3 pour récupérer des e-mails, ajoutez également le protocole POP3.

protocols = imap pop3

Enregistrez et fermez le fichier.


Configuration de l’emplacement de la boîte aux lettres :

Par défaut, Postfix et Dovecot utilisent le format mbox pour stocker les e-mails. Les e-mails de chaque utilisateur sont stockés dans un seul fichier /var/mail/username. Vous pouvez exécuter la commande suivante pour trouver le répertoire du spouleur de courrier.

postconf mail_spool_directory

Sortie :

mail_spool_directory = /var/mail

Cependant, en général on souhaite presque toujours utiliser le format Maildir pour stocker les e-mails. Le fichier de configuration pour l’emplacement de la boîte aux lettres est /etc/dovecot/conf.d/10-mail.conf.

sudo nano /etc/dovecot/conf.d/10-mail.conf

La configuration par défaut utilise le format de messagerie mbox.

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Remplacez-le par ce qui suit pour que Dovecot utilise le format Maildir. Les e-mails seront stockés dans le répertoire Maildir sous le répertoire personnel de chaque utilisateur.

mail_location = maildir:~/Maildir

Nous devons ajouter la ligne suivante dans le fichier. (Sur Ubuntu 18.04 et 20.04, cette ligne est déjà dans le fichier.)

mail_privileged_group = mail

Enregistrez et fermez le fichier. Ajoutez ensuite Dovecot au groupe de messagerie afin que Dovecot puisse lire la BOÎTE DE RÉCEPTION.

sudo adduser dovecot mail

Utilisation de Dovecot pour envoyer des e-mails :

Bien que nous ayons configuré Dovecot pour stocker les e-mails au format Maildir, par défaut, Postfix utilise son agent de distribution local (LDA) intégré pour déplacer les e-mails entrants vers la banque de messages (boîte de réception, envoyés, corbeille, courrier indésirable, etc.), et il sera enregistré au format mbox.

Nous devons configurer Postfix pour transmettre les e-mails entrants à Dovecot, via le protocole LMTP, qui est une version simplifiée de SMTP, afin que les e-mails entrants soient enregistrés au format Maildir par Dovecot. LMTP permet un système de messagerie hautement évolutif et fiable. Cela nous permet également d’utiliser le plug-in sieve pour filtrer les messages entrants dans différents dossiers.

Installez le serveur Dovecot LMTP.

sudo apt install dovecot-lmtpd

Modifiez le fichier de configuration principal de Dovecot.

sudo nano /etc/dovecot/dovecot.conf

Ajoutez lmtp aux protocoles pris en charge.

protocols = imap lmtp

Enregistrez et fermez le fichier. Modifiez ensuite le fichier Dovecot 10-master.conf .

sudo nano /etc/dovecot/conf.d/10-master.conf

Remplacez la définition du service lmtp par ce qui suit.

service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}

Ensuite, éditez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin du fichier. La première ligne indique à Postfix de livrer les e-mails entrants au magasin de messages local via le serveur Dovecot LMTP. La deuxième ligne désactive SMTPUTF8 dans Postfix, car Dovecot-LMTP ne prend pas en charge cette extension de messagerie.

mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no

Enregistrez et fermez le fichier.


Configuration du mécanisme d’authentification :

Edit the authentication config file.

sudo nano/etc/dovecot/conf.d/10-auth.conf

Décommentez la ligne suivante.

disable_plaintext_auth = yes

Il désactivera l’authentification en clair lorsqu’il n’y a pas de cryptage SSL/TLS. Trouvez ensuite la ligne suivante,

#auth_username_format = %Lu

Décommentez-le et remplacez sa valeur par %n.

auth_username_format = %n

Par défaut, lorsque Dovecot essaie de trouver ou de livrer des e-mails pour un utilisateur, il utilise l’adresse e-mail complète. Étant donné que dans cette partie, nous configurons uniquement les utilisateurs de boîte aux lettres canoniques (en utilisant les utilisateurs du système d’exploitation comme utilisateurs de boîte aux lettres), Dovecot ne peut pas trouver l’utilisateur de la boîte aux lettres au format de domaine complet (nom d’utilisateur@votre-domaine.com), nous devons donc définir auth_username_format = %n pour supprimer la partie domaine, Dovecot devrait pouvoir trouver l’utilisateur de la boîte aux lettres. Cela nous permet également d’utiliser l’adresse e-mail complète (nom d’utilisateur@votre-domaine.com) pour vous connecter.

Ensuite, trouvez la ligne suivante.

auth_mechanisms = plain

Cette ligne active uniquement le mécanisme d’authentification PLAIN. LOGIN est un autre mécanisme d’authentification que vous souhaiterez probablement ajouter pour prendre en charge les anciens clients de messagerie.

auth_mechanisms = plain login

Enregistrez et fermez le fichier.


Configuration du chiffrement SSL/TLS :

Ensuite, modifiez le fichier de configuration SSL/TLS.

sudo nano/etc/dovecot/conf.d/10-ssl.conf

Remplacez ssl = yes par ssl = required pour appliquer le chiffrement.

ssl = required

Trouvez ensuite les lignes suivantes.

ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.key

Par défaut, Dovecot utilise un certificat TLS auto-signé. Remplacez-les par les valeurs suivantes, qui spécifient l’emplacement de votre certificat TLS et de votre clé privée Let’s Encrypt. N’oubliez pas le < caractère. Il est nécessaire.

ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem

Trouvez la ligne suivante.

#ssl_prefer_server_ciphers = no

C’est une bonne pratique de préférer l’ordre des chiffrements du serveur à celui du client. Décommentez donc cette ligne et remplacez la valeur par « yes ».

ssl_prefer_server_ciphers = yes

Si vous utilisez Ubuntu 20.04 ou Ubuntu 22.04, désactivez SSLv3, TLSv1 et TLSv1.1 non sécurisés en ajoutant la ligne suivante.

ssl_min_protocol = TLSv1.2

Si vous utilisez la version 2.2.x de Dovecot (comme dans Ubuntu 18.04), vous devez ajouter la ligne suivante pour désactiver le protocole TLS non sécurisé.

ssl_protocols = !SSLv3 !TLSv1 !TLSv1.1

Enregistrez et fermez le fichier.


Désactiver les fournisseurs FIPS dans OpenSSL sur Ubuntu 22.04

Ubuntu 22.04 est livré avec OpenSSL 3.0, qui comprend un fournisseur FIPS. Cependant, cela ne fonctionnera pas avec Dovecot. Nous devons désactiver le fournisseur FIPS.

sudo nano /etc/ssl/openssl.cnf

Trouvez la ligne suivante (ligne 54).

providers = provider_sect

Ajoutez un # caractère pour le commenter.

#providers = provider_sect

Enregistrez et fermez le fichier.

Si vous ne désactivez pas le fournisseur FIPS dans OpenSSL, Dovecot produirait l’erreur suivante.

imap-login: Error: Failed to initialize SSL server context: Can't load SSL certificate: error:25066067:DSO support routines:dlfcn_load:could not load the shared library: filename(libproviders.so)
Configuration de l’authentification SASL :

Modifiez le fichier suivant.

sudo nano /etc/dovecot/conf.d/10-master.conf

Modifiez la section d’authentification du service comme suit afin que Postfix puisse trouver le serveur d’authentification Dovecot. Veuillez faire attention à la syntaxe. Chaque parenthèse ouvrante doit se terminer par une parenthèse fermante.

service auth {
  unix_listener /var/spool/postfix/private/auth {
   mode = 0660
   user = postfix
      group = postfix
  }
}

Enregistrez et fermez le fichier.


Créer automatiquement des dossiers ‘Envoyé’ et ‘Corbeille’ :

Modifiez le fichier de configuration ci-dessous.

sudo nano/etc/dovecot/conf.d/15-mailboxes.conf

Pour créer automatiquement un dossier, ajoutez simplement la ligne suivante dans la section boîte aux lettres.

auto = create

Par exemple:

 mailbox Trash {
  auto = create
  special_use = \Trash
 }

Certains dossiers courants que vous souhaiterez créer incluent : Brouillons, Junk, Corbeille et Envoyé. Le dossier Envoyé sera créé sous le répertoire personnel de l’utilisateur lorsque celui-ci enverra le premier e-mail. Le dossier Corbeille sera créé lorsque l’utilisateur supprimera un e-mail pour la première fois, etc. Après avoir enregistré et fermé tous les fichiers de configuration ci-dessus, redémarrez Postfix et Dovecot.

sudo systemctl restart postfix dovecot

Dovecot écoutera sur le port 143 (IMAP) et 993 (IMAPS), comme on peut le voir avec :

sudo ss -lnpt | grep dovecot

S’il y a une erreur de configuration, dovecot ne redémarrera pas, c’est donc une bonne idée de vérifier si Dovecot est en cours d’exécution avec la commande suivante.

systemctl status dovecot

Configurer le client de messagerie de bureau

Ouvrez maintenant votre client de messagerie de bureau tel que Mozilla Thunderbird. Accédez à Modifier -> Paramètres du compte -> Actions du compte -> Ajouter un compte de messagerie pour ajouter un compte de messagerie.

Ou si voutre système d’exploitation est Ubuntu / Linux :

Conseil 1 : Vous pouvez également utiliser le port 993 avec le cryptage SSL/TLS pour IMAP et le port 465 avec le cryptage SSL/TLS pour SMTP. Vous ne devez PAS utiliser le port 25 comme port SMTP dans les clients de messagerie pour envoyer des e-mails sortants.

Astuce 2 : Si vous utilisez le client de messagerie Microsoft 365 Outlook, vous ne devez pas activer l’authentification par mot de passe sécurisé (SPA), qui est un protocole propriétaire de Microsoft. Votre mot de passe est déjà crypté par TLS.

Vous devriez maintenant pouvoir vous connecter à votre propre serveur de messagerie et également envoyer et recevoir des e-mails avec votre client de messagerie de bureau !

Nous utilisons des comptes Unix locaux comme adresses e-mail, comme nous l’avons fait dans la partie 1. Par exemple, si vous avez un utilisateur appelé utilisateur1 sur votre serveur Ubuntu, vous avez alors une adresse e-mail : utilisateur1@votre-domaine.com, et le mot de passe pour l’adresse e-mail est le même mot de passe pour l’utilisateur 1 utilisateur. Pour créer un compte Unix local, exécutez

sudo adduser user1

Remarque : Dovecot ne vous permet pas de vous connecter avec le compte root. Vous devez créer des comptes d’utilisateurs distincts.

Vous pouvez répertorier tous les utilisateurs de boîte aux lettres disponibles avec :

sudo doveadm user '*'

Il est recommandé de redémarrer Dovecot après avoir ajouté des utilisateurs, afin que Dovecot puisse reconnaître les nouveaux utilisateurs de la boîte aux lettres.

sudo systemctl restart dovecot

Conseils de dépannage (facultatif) :

En règle générale, vous devriez toujours vérifier le journal de messagerie (/var/log/mail.log) sur votre serveur de messagerie lorsqu’une erreur se produit. Voici une liste d’erreurs spécifiques et des conseils de dépannage.

Impossible de se connecter à partir des clients de messagerie :

Si vous ne pouvez pas vous connecter à votre serveur de messagerie à partir d’un client de messagerie de bureau, analysez votre serveur de messagerie pour déterminer si les ports (TCP 587, 465, 143 et 993) sont ouverts. Notez que vous devez exécuter la commande suivante à partir d’un autre ordinateur ou serveur Linux. Si vous l’exécutez sur votre serveur de messagerie, les ports apparaîtront toujours ouverts.

sudo nmap mail.your-domain.com

Et vérifiez si Dovecot est en cours d’exécution.

systemctl status dovecot

Vous pouvez également consulter le journal de messagerie (/var/log/mail.log), qui peut vous donner quelques indices. Si Dovecot ne démarre pas, l’erreur n’est peut-être pas consignée dans le fichier /var/log/mail.log , vous pouvez exécuter la commande suivante pour voir ce qui ne va pas.

sudo journalctl -eu dovecot

Par exemple, certaines personnes peuvent avoir l’erreur suivante dans le journal.

doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-master.conf line 78: Unknown setting

La plupart du temps, il s’agit d’une simple erreur de syntaxe, comme une accolade manquante. Ouvrez le fichier de configuration, accédez à la ligne spécifiée et corrigez l’erreur.

Si vous trouvez le message d’erreur suivant dans le journal de messagerie :

imap-login: Error: Failed to initialize SSL server context: Can't load DH parameters: error:1408518A:SSL routines:ssl3_ctx_ctrl:dh key too small

Ouvrez alors le fichier de configuration Dovecot TLS.

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Ajoutez la ligne suivante dans ce fichier.

ssl_dh = </etc/dovecot/dh.pem

Enregistrez et fermez le fichier. Générez ensuite le fichier de paramètres DH avec :

sudo openssl dhparam -out /etc/dovecot/dh.pem 4096

Redémarrez Dovecot pour que les modifications prennent effet.

DNS Cloudflare :

Comme indiqué dans l’étape 1, si vous utilisez le service DNS Cloudflare, vous ne devez pas activer la fonction CDN (proxy) lors de la création d’un enregistrement DNS A et d’un enregistrement AAAA pour le nom d’hôte de votre serveur de messagerie. Cloudflare ne prend pas en charge le proxy SMTP ou IMAP.

Relay Access Denied :

Si vous voyez l’erreur « relay access denied » lorsque vous essayez d’envoyer des e-mails à partir d’un client de messagerie, il est fort probable que vous utilisiez le port 25 comme port SMTP dans votre client de messagerie. Comme indiqué précédemment, vous devez utiliser le port 587 ou 465 comme port SMTP dans les clients de messagerie (Mozilla Thunberbird, Microsoft Outlook, etc.) pour envoyer les e-mails sortants. Le port 25 doit être utilisé pour les communications de serveur SMTP à serveur SMTP.

Si l’erreur suivante « Accès relais refusé » s’affiche dans le fichier /var/log/mail.log lorsque vous essayez d’envoyer des e-mails à partir d’autres services de messagerie tels que Gmail vers votre propre serveur de messagerie, il est probable que votredomaine.com ne figure pas dans la liste. du paramètre $mydestination .

NOQUEUE: reject: RCPT from mail-il1-f180.google.com[209.85.166.180]: 454 4.7.1 <xiao@inuxbabe.com>: Relay access denied; from=<someone@gmail.com> to=<xiao@linuxbabe.com> proto=ESMTP helo=<mail-il1-f180.google.com>

Vous pouvez afficher la valeur actuelle de $mydestination avec :

postconf mydestination

Certains domaines pourraient ne pas avoir le nom de domaine principal dans la liste comme ceci :

mydestination = $myhostname, localhost.$mydomain, localhost

Exécutez ensuite la commande suivante pour ajouter le nom de domaine principal à la liste.

sudo postconf -e "mydestination = yourdomain.com, \$myhostname, localhost.\$mydomain, localhost"

Rechargez Postfix pour que les modifications prennent effet.

sudo systemctl reload postfix
Erreur « User Doesn’t Exist » (facultatif) :

Si vous voyez le message d’erreur suivant dans le journal de messagerie (/var/log/mail.log), il est probable que vous ayez oublié de définir auth_username_format = %n dans /etc/dovecot/conf.d/10-auth.conf fichier.

mail postfix/lmtp[2256]: 68E00FC1A5: to=, relay=mail.example.com[private/dovecot-lmtp], delay=509, delays=509/0.03/0.03/0.02, dsn=5.1.1, status=bounced (host mail.example.com[private/dovecot-lmtp] said: 550 5.1.1  User doesn't exist: user1@example.com (in reply to RCPT TO command))
iOS Mail (Facultatif) :

Si vous utilisez l’application iOS Mail sur un Iphone pour vous connecter à votre serveur de messagerie et que vous rencontrez l’erreur suivante :

Vous pouvez essayer de le réparer en appliquant le cryptage SSL, à la fois pour les protocoles SMTP et IMAP.

Il semble que l’application iOS Mail ait du mal à prendre en charge STARTTLS sur le port IMAP 143, mais elle prend en charge STARTTLS sur le port de soumission 587.

Si vous rencontrez l’erreur « Aucun mot de passe fourni » dans l’application iOS Mail, il est probable que vous ayez fait une faute de frappe lors de la saisie du nom d’utilisateur dans les paramètres du compte Mail ou que vous n’ayez pas activé SSL dans les paramètres du compte Mail.

Impossible de recevoir des e-mails de Gmail, Hotmail, Yahoo Mail, etc.

Si vous ne parvenez pas à recevoir des e-mails de Gmail, Hotmail, Yahoo Mail, etc., voici les causes possibles :

Si vos serveurs SMTP ne sont pas accessibles depuis Internet, vous avez un problème dans les 4 premiers éléments. Si votre serveur SMTP est accessible depuis Internet, mais que vous ne pouvez toujours pas recevoir d’e-mails, consultez le journal de messagerie (/var/log/mail.log) pour savoir s’il y a des erreurs dans votre configuration Postfix et Dovecot.


Renouvellement automatique du Certificat TLS :

Vous pouvez créer une tâche Cron pour renouveler automatiquement le certificat TLS. Ouvrez simplement le fichier crontab de l’utilisateur root.

sudo crontab -e

Si vous utilisez le serveur Web Apache, ajoutez la ligne suivante au bas du fichier.

@daily certbot renew --quiet && systemctl reload postfix dovecot apache2

Le rechargement de Postfix, Dovecot et du serveur Web est nécessaire pour que ces programmes récupèrent le nouveau certificat et la clé privée.


Redémarrage automatique de Dovecot (Facultatif) :

Si pour une raison quelconque votre processus Dovecot est tué, vous devez exécuter la commande suivante pour le redémarrer.

sudo systemctl restart dovecot

Au lieu de saisir manuellement cette commande, nous pouvons faire en sorte que Dovecot redémarre automatiquement en modifiant l’unité de service dovecot.service systemd. Pour remplacer la configuration par défaut du service systemd, nous créons un répertoire séparé.

sudo mkdir -p /etc/systemd/system/dovecot.service.d/

Créez ensuite un fichier sous ce répertoire.

sudo nano /etc/systemd/system/dovecot.service.d/restart.conf

Ajoutez les lignes suivantes dans le fichier, ce qui fera redémarrer automatiquement Dovecot 5 secondes après la détection d’une panne.

[Service]
Restart=always
RestartSec=5s

Enregistrez et fermez le fichier. Ensuite, rechargez systemd pour que les modifications prennent effet.

sudo systemctl daemon-reload

Pour vérifier si cela fonctionnerait, tuez Dovecot avec :

sudo pkill dovecot

Vérifiez ensuite l’état de Dovecot. Vous trouverez Dovecot redémarré automatiquement.

systemctl status dovecot

Étape 3 : PostfixAdmin – Créer des boîtes aux lettres virtuelles sur Ubuntu Mail Server

-> Retour au sommaire

Dans les étapes précédentes, nous avons expliqué comment configurer votre propre serveur de messagerie sur Ubuntu à partir de zéro. Dans l’étape 1 et 2 de cette série de didacticiels, nous avons appris à configurer le serveur SMTP Postfix et le serveur IMAP Dovecot, mais jusqu’à présent, nous ne pouvons avoir que des adresses e-mail pour les utilisateurs disposant de comptes Unix locaux. Nous allons vous montrer comment créer des boîtes aux lettres virtuelles sur le serveur de messagerie avec PostfixAdmin, qui est une interface Web open source permettant de configurer et de gérer un serveur de messagerie basé sur Postfix pour de nombreux domaines et utilisateurs.

Avec les boîtes aux lettres virtuelles, nous n’avons pas besoin de créer un compte Unix local pour chaque adresse e-mail. Si vous envisagez de configurer un serveur de messagerie pour une entreprise ou une organisation, il est toujours préférable de disposer d’un moyen simple de créer des boîtes aux lettres virtuelles dans une interface Web, qui permet également aux utilisateurs de modifier leurs mots de passe. C’est là qu’intervient PostfixAdmin.

Fonctionnalités de Postfixadmin :
Conditions préalables :

Vous devez avoir suivi les étapes précédentes de cette série de didacticiels avant de continuer à lire . Si vous avez suivi des didacticiels de serveur de messagerie sur d’autres sites Web, on vous recommande de purger vos configurations (sudo apt purge postfix dovecot-core) et de recommencer avec ma série de didacticiels, afin que vous ne soyez pas confus par différents processus de configuration.

Une fois les conditions ci-dessus remplies, installons et configurons PostfixAdmin.


Étape 3.1 : Installez le serveur de base de données MariaDB/MySQL

PostfixAdmin est écrit en PHP et nécessite une base de données (MySQL/MariaDB, PostgreSQL ou SQLite). Cet article utilisera la base de données MariaDB, qui remplace MySQL. Il est développé par d’anciens membres de l’équipe MySQL qui craignent qu’Oracle ne transforme MySQL en un produit à source fermée. Entrez la commande suivante pour installer MariaDB sur Ubuntu.

sudo apt install mariadb-server mariadb-client

Astuce : Si vous préférez utiliser MySQL plutôt que MariaDB, vous pouvez l’installer avec : sudo apt install mysql-server-8.0.

Une fois installé, le serveur MariaDB devrait être automatiquement démarré. Utilisez systemctl pour vérifier son état.

sudo systemctl status mariadb

Sortie :

● mariadb.service - MariaDB 10.3.22 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 9161 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 31 (limit: 9451)
     Memory: 64.7M
     CGroup: /system.slice/mariadb.service
             └─9161 /usr/sbin/mysqld

S’il ne fonctionne pas, démarrez-le avec cette commande :

sudo systemctl start mariadb

Pour permettre à MariaDB de démarrer automatiquement au démarrage, exécutez

sudo systemctl enable mariadb

Exécutez maintenant le script de sécurité post-installation.

sudo mysql_secure_installation

Lorsqu’il vous demande de saisir le mot de passe root MariaDB, appuyez sur la touche Entrée car le mot de passe root n’est pas encore défini. Saisissez ensuite y pour définir le mot de passe root du serveur MariaDB.

Ensuite, vous pouvez appuyer sur Entrée pour répondre à toutes les questions restantes, ce qui supprimera l’utilisateur anonyme, désactivera la connexion root à distance et supprimera la base de données de test. Cette étape est une exigence de base pour la sécurité de la base de données MariaDB. (Notez que Y est en majuscule, ce qui signifie qu’il s’agit de la réponse par défaut.)


Étape 3.2 : Téléchargez PostfixAdmin sur le serveur Ubuntu

PostfixAdmin est inclus dans le référentiel Ubuntu par défaut. Cependant, on ne le recommande pas pour les raisons suivantes :

On vais donc vous montrer comment installer la dernière version de PostfixAdmin. Accédez à la page PostfixAdmin Gitbub pour télécharger la dernière version. Vous pouvez utiliser l’outil wget pour le télécharger à partir de la ligne de commande. Le lien de téléchargement est toujours disponible dans le format ci-dessous. Si une nouvelle version sort, remplacez simplement 3.3.11 par le nouveau numéro de version.

sudo apt install wget

sudo wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.11.tar.gz

Une fois téléchargée, extrayez l’archive dans le répertoire /var/www/ et renommez-la en postfixadmin.

sudo mkdir -p /var/www/

sudo tar xvf postfixadmin-3.3.11.tar.gz -C /var/www/

sudo mv /var/www/postfixadmin-postfixadmin-3.3.11 /var/www/postfixadmin

Étape 3.3 : Configurer les autorisations

PostfixAdmin nécessite un répertoire templates_c et le serveur Web a besoin d’un accès en lecture et en écriture à ce répertoire, alors exécutez les commandes suivantes.

sudo mkdir -p /var/www/postfixadmin/templates_c

sudo apt install acl

sudo setfacl -R -m u:www-data:rwx /var/www/postfixadmin/templates_c/

À partir de Dovecot 2.3.11, l’utilisateur du serveur Web a besoin d’une autorisation pour lire le certificat Let’s Encrypt TLS afin de hacher le mot de passe. Exécutez les deux commandes suivantes pour accorder des autorisations.

sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Étape 3.4 : Créer une base de données et un utilisateur pour PostfixAdmin

Connectez-vous au shell MySQL/MariaDB en tant que root avec la commande suivante.

sudo mysql -u root

Une fois connecté, créez une base de données pour PostfixAdmin à l’aide de la commande suivante. On a nommé la base de données ‘postfixadmin’, mais vous pouvez utiliser le nom de votre choix. (N’oubliez pas le point-virgule à la fin de chaque commande.)

create database postfixadmin;

Entrez ensuite la commande ci-dessous pour créer un utilisateur de base de données pour PostfixAdmin. Remplacez postfixadmin_password par votre mot de passe préféré. Notez que le mot de passe ne doit pas contenir le caractère # , sinon vous ne pourrez peut-être pas vous connecter ultérieurement.

create user 'postfixadmin'@'localhost' identified by 'postfixadmin_password';

Accorde tous les privilèges de la base de données postfixadmin à l’utilisateur.

grant all privileges on postfixadmin.* to 'postfixadmin'@'localhost';

Videz la table des privilèges pour que les modifications prennent effet, puis sortez du shell MariaDB.

flush privileges;

exit;

Étape 3.5 : Configurer PostfixAdmin

Le fichier de configuration par défaut de PostfixAdmin est config.inc.php. Nous devons créer un fichier config.local.php et ajouter des configurations personnalisées.

sudo nano /var/www/postfixadmin/config.local.php

Ajoutez les lignes suivantes dans le fichier, afin que PostfixAdmin puisse se connecter à la base de données MySQL/MariaDB. Remplacez postfixadmin_password par le véritable mot de passe PostfixAdmin créé à l’étape 4.

<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_port'] = '3306';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixadmin_password';
$CONF['database_name'] = 'postfixadmin';
$CONF['encrypt'] = 'dovecot:ARGON2I';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5";
if(@file_exists('/usr/bin/doveadm')) { // @ to silence openbase_dir stuff; see https://github.com/postfixadmin/postfixadmin/issues/171
    $CONF['dovecotpw'] = "/usr/bin/doveadm pw -r 5"; # debian
}

Enregistrez et fermez le fichier. Notez que nous utiliserons le schéma de mot de passe ARGON2I. Par défaut, PostfixAdmin et Dovecot utilisent MD5-CRYPT, qui est un schéma de mot de passe faible. Vous pouvez répertorier les schémas de mot de passe disponibles dans Dovecot avec la commande suivante.

sudo doveadm pw -l

Sortie :

SHA1 SSHA512 BLF-CRYPT PLAIN HMAC-MD5 OTP SHA512 SHA RPA DES-CRYPT CRYPT SSHA MD5-CRYPT SKEY PLAIN-MD4 PLAIN-MD5 SCRAM-SHA-1 LANMAN SHA512-CRYPT CLEAR CLEARTEXT ARGON2I ARGON2ID SSHA256 NTLM MD5 PBKDF2 SHA256 CRAM-MD5 PLAIN-TRUNC SHA256-CRYPT SMD5 DIGEST-MD5 LDAP-MD5

Étape 3.6 : Créer un hôte virtuel Apache pour PostfixAdmin

Si vous utilisez le serveur Web Apache, créez un hôte virtuel pour PostfixAdmin.

sudo nano /etc/apache2/sites-available/postfixadmin.conf

Mettez le texte suivant dans le fichier. Remplacez postfixadmin.example.com par votre vrai nom de domaine et n’oubliez pas de définir un enregistrement DNS A pour celui-ci.

<VirtualHost *:80>
  ServerName postfixadmin.example.com
  DocumentRoot /var/www/postfixadmin/public

  ErrorLog ${APACHE_LOG_DIR}/postfixadmin_error.log
  CustomLog ${APACHE_LOG_DIR}/postfixadmin_access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/postfixadmin/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>

Enregistrez et fermez le fichier. Activez ensuite cet hôte virtuel avec :

sudo a2ensite postfixadmin.conf

Rechargez Apache pour que les modifications prennent effet.

sudo systemctl reload apache2

Vous devriez maintenant pouvoir voir l’assistant d’installation Web de PostfixAdmin à l’adresse http://postfixadmin.example.com/setup.php.


Étape 3.7 : Installer les modules PHP requis et recommandés

Exécutez la commande suivante pour installer les modules PHP requis ou recommandés par PostfixAdmin.

sudo apt install php8.1-fpm php8.1-imap php8.2-imap php8.1-mbstring php8.2-mbstring php8.1-mysql php8.1-curl php8.1-zip php8.1-xml php8.1-bz2 php8.1-intl php8.2-mysql php8.2-curl php8.2-zip php8.2-xml php8.2-bz2 php8.1-gmp php8.1-redis php8.2-bz2 php8.2-intl php8.2-gmp php8.2-redis 

Si vous utilisez Apache, vous devez également installer le package libapache2-mod-php.

sudo apt install libapache2-mod-php

Redémarrez ensuite Apache.

sudo systemctl restart apache2

Étape 3.8 : Activer HTTPS

Pour chiffrer le trafic HTTP, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let’s Encrypt. Exécutez la commande suivante :sur le serveur Ubuntu.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d postfixadmin.example.com

Le certificat devrait maintenant être obtenu et installé automatiquement, ce qui est indiqué par le message ci-dessous.


Étape 3.9 : Activer les statistiques dans Dovecot

PostfixAdmin doit lire les statistiques de Dovecot. Modifiez le fichier de configuration Dovecot.

sudo nano /etc/dovecot/conf.d/10-master.conf

Ajoutez les lignes suivantes à la fin de ce fichier.

service stats {
    unix_listener stats-reader {
    user = www-data
    group = www-data
    mode = 0660
}

unix_listener stats-writer {
    user = www-data
    group = www-data
    mode = 0660
  }
}

Enregistrez et fermez le fichier. Ajoutez ensuite le serveur Web au groupe ‘Dovecot’.

sudo gpasswd -a www-data dovecot

Redémarrez le service ‘Dovecot’.

sudo systemctl restart dovecot

Accordez des autorisations à l’utilisateur www-data.

sudo setfacl -R -m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer

Étape 3.10 : terminer l’installation dans le navigateur Web

Accédez à postfixadmin.example.com/setup.php pour exécuter l’assistant de configuration Web. Tout d’abord, vous devez créer un mot de passe de configuration pour PostfixAdmin.

Après avoir créé le hachage du mot de passe, PostfixAdmin affichera une ligne comme ci-dessous.

$CONF['setup_password'] = '$2y$10$58fIawuOb5y538RMBol/DOoqv2bJ7zhPRzRO.4Xq7MLeQJHmaFwF2';

Vous devez ouvrir le fichier config.local.php.

sudo nano /var/www/postfixadmin/config.local.php

Ajoutez la ligne affichée sur la page de configuration de PostfixAdmin à la fin du fichier comme ci-dessous.

Après avoir enregistré le fichier, vous devez actualiser la page de configuration de PostfixAdmin et saisir à nouveau le mot de passe de configuration, puis créer le compte administrateur. Veuillez ne pas utiliser une adresse e-mail Gmail, Yahoo Mail ou Microsoft pour le compte administrateur, sinon vous ne pourrez peut-être pas vous connecter ultérieurement. Utilisez une adresse e-mail sur votre propre domaine. Vous pouvez créer l’adresse e-mail plus tard dans PostfixAdmin.

Si vous rencontrez l’erreur suivante lorsque vous essayez de créer un compte superadmin,

Password Hashing - attempted to use configured encrypt backend (dovecot:ARGON2I) triggered an error: /usr/bin/doveadm pw -r 5 failed, see error log for details

ou :

can’t encrypt password with dovecotpw, see error log for details

C’est parce que l’utilisateur www-data n’a pas l’autorisation de lire le certificat Let’s Encrypt TLS. Pour résoudre ce problème, exécutez la commande suivante pour accorder des autorisations.

sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Parfois, vous devrez peut-être également exécuter la commande suivante pour corriger cette erreur.

sudo setfacl -R -m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer

Une fois le compte superadmin créé, vous pouvez vous connecter à PostfixAdmin via votre navigateur internet à l’adresse : postfixadmin.example.com/login.php.


Étape 3.11 : Vérification des tables dans la base de données (facultatif) :

Le processus de configuration de PostfixAdmin remplit la base de données postfixadmin avec certaines tables par défaut. Il nous est utile de connaître les noms et la structure des tables. Connectez-vous à la console MySQL/MariaDB.

sudo mysql -u root

Sélectionnez la base de données postfixadmin.

USE postfixadmin;

Lister toutes les tables de cette base de données.

SHOW TABLES;

Sortie :

+------------------------+
| Tables_in_postfixadmin |
+------------------------+
| admin                  |
| alias                  |
| alias_domain           |
| config                 |
| domain                 |
| domain_admins          |
| fetchmail              |
| log                    |
| mailbox                |
| quota                  |
| quota2                 |
| vacation               |
| vacation_notification  |
+------------------------+
13 rows in set (0.001 sec)

Les 3 tables les plus importantes sont :

Si vous êtes intéressé, vous pouvez vérifier les colonnes que contient chaque table. Par exemple, la commande suivante nous montrera les colonnes de la table de domaine.

DESCRIBE domain;

Sortie :

+-------------+--------------+------+-----+---------------------+-------+
| Field       | Type         | Null | Key | Default             | Extra |
+-------------+--------------+------+-----+---------------------+-------+
| domain      | varchar(255) | NO   | PRI | NULL                |       |
| description | varchar(255) | NO   |     | NULL                |       |
| aliases     | int(10)      | NO   |     | 0                   |       |
| mailboxes   | int(10)      | NO   |     | 0                   |       |
| maxquota    | bigint(20)   | NO   |     | 0                   |       |
| quota       | bigint(20)   | NO   |     | 0                   |       |
| transport   | varchar(255) | NO   |     | NULL                |       |
| backupmx    | tinyint(1)   | NO   |     | 0                   |       |
| created     | datetime     | NO   |     | 2000-01-01 00:00:00 |       |
| modified    | datetime     | NO   |     | 2000-01-01 00:00:00 |       |
| active      | tinyint(1)   | NO   |     | 1                   |       |
+-------------+--------------+------+-----+---------------------+-------+

Log out of MySQL/MariaDB console.

EXIT;

Étape 3.12 : Configurer Postfix pour utiliser la base de données MySQL/MariaDB

Par défaut, Postfix n’envoie des e-mails qu’aux utilisateurs disposant d’un compte Unix local. Pour lui faire livrer des e-mails aux utilisateurs virtuels dont les informations sont stockées dans la base de données, nous devons configurer Postfix pour utiliser des domaines de boîtes aux lettres virtuelles.

Tout d’abord, nous devons ajouter la prise en charge des cartes MySQL pour Postfix en installant le package postfix-mysql.

sudo apt install postfix-mysql

Modifiez ensuite le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin de ce fichier.

virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_alias_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

Explications :

Nous souhaitons utiliser Dovecot pour envoyer les e-mails entrants au magasin de messages des utilisateurs virtuels, ajoutez donc également la ligne suivante à la fin de ce fichier.

virtual_transport = lmtp:unix:private/dovecot-lmtp

Résultat :

Enregistrez et fermez le fichier. Ensuite, nous devons créer les fichiers .cf un par un. Créez le répertoire sql.

sudo mkdir /etc/postfix/sql/

Créez le fichier mysql_virtual_domains_maps.cf .

sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf

Ajoutez le contenu suivant. Remplacez ‘password’ par le mot de passe postfixadmin que vous avez défini à l’étape 2.

user = postfixadmin
password = password
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#expansion_limit = 100

Créez le fichier mysql_virtual_mailbox_maps.cf .

sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Ajoutez le contenu suivant.

user = postfixadmin
password = password
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100

Créez le fichier mysql_virtual_alias_domain_mailbox_maps.cf .

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

Ajoutez le contenu suivant.

user = postfixadmin
password = password
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

Créez le fichier mysql_virtual_alias_maps.cf .

sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf

Ajoutez le contenu suivant.

user = postfixadmin
password = password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100

Créez le fichier mysql_virtual_alias_domain_maps.cf .

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

Ajoutez le contenu suivant.

user = postfixadmin
password = password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

Créez le fichier mysql_virtual_alias_domain_catchall_maps .

sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

Ajoutez le contenu suivant.

# handles catch-all settings of target-domain
user = postfixadmin
password = password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

Étant donné que les mots de passe de la base de données sont stockés en texte brut, ils ne doivent donc être lisibles que par les utilisateurs postfix et root, ce qui se fait en exécutant les deux commandes suivantes.

sudo chmod 0640 /etc/postfix/sql/*
sudo setfacl -R -m u:postfix:rx /etc/postfix/sql/

Ensuite, nous devons modifier la valeur du paramètre mydestination dans Postfix. Afficher la valeur actuelle :

postconf mydestination

Sortie :

mydestination = $myhostname, linuxbabe.com, localhost.$mydomain, localhost

Le paramètre mydestination contient une liste de noms de domaine qui recevront les e-mails envoyés aux comptes Unix locaux. Dans la partie 1, nous avons ajouté le nom de domaine apex (comme linuxbabe.com) à mydestination. Puisque nous allons utiliser une boîte aux lettres virtuelle, nous devons supprimer le nom de domaine apex de la liste en exécutant la commande suivante.

sudo postconf -e "mydestination = \$myhostname, localhost.\$mydomain, localhost"

Maintenant, ouvrons à nouveau le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin de ce fichier.

virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 2000
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000

La première ligne définit l’emplacement de base des fichiers courrier. Les 3 lignes restantes définissent l’ID utilisateur et l’ID de groupe que Postfix utilisera lors de la livraison des e-mails entrants dans la boîte aux lettres. Nous utilisons l’ID utilisateur 2000 et l’ID de groupe 2000.

Enregistrez et fermez le fichier. Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl restart postfix

Ensuite, nous devons créer un utilisateur nommé vmail avec l’ID 2000 et un groupe avec l’ID 2000.

sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home

Créez l’emplacement de la base de messagerie.

sudo mkdir /var/vmail/

Définissez vmail comme propriétaire.

sudo chown vmail:vmail /var/vmail/ -R

Étape 3.13 : Configurer Dovecot pour utiliser la base de données MySQL/MariaDB

Nous devons également configurer le serveur Dovecot IMAP pour interroger les informations utilisateur de la base de données. Tout d’abord, exécutez la commande suivante pour ajouter la prise en charge de MySQL pour Dovecot.

sudo apt install dovecot-mysql

Modifiez ensuite le fichier 10-mail.conf.

sudo nano /etc/dovecot/conf.d/10-mail.conf

Dans la partie 2, nous avons utilisé le mail_location suivant. Les e-mails sont stockés dans le répertoire Maildir sous le répertoire personnel de chaque utilisateur.

mail_location = maildir:~/Maildir

Puisque nous utilisons maintenant le domaine de la boîte aux lettres virtuelle, nous devons activer mail_home pour les utilisateurs virtuels en ajoutant la ligne suivante dans le fichier, car les utilisateurs virtuels n’ont pas de répertoire personnel par défaut.

mail_home = /var/vmail/%d/%n/

Enregistrez et fermez le fichier. Modifiez ensuite le fichier 10-auth.conf.

sudo nano /etc/dovecot/conf.d/10-auth.conf

À l’étape 3.2, nous avons utilisé la valeur suivante pour auth_username_format.

auth_username_format = %n

Le %n supprimerait le domaine s’il était donné. Étant donné que dans la partie 2, nous utilisions un compte Unix local pour le nom d’utilisateur de chaque adresse e-mail, nous devons utiliser %n pour supprimer le domaine, afin que les utilisateurs puissent se connecter avec l’adresse e-mail complète.

Nous utilisons maintenant des domaines de boîtes aux lettres virtuelles, ce qui signifie que le nom d’utilisateur de chaque adresse e-mail inclut la partie domaine. Nous devons donc modifier le auth_username_format comme suit. %u ne supprimera pas le domaine. Cela permet aux utilisateurs de se connecter avec l’adresse e-mail complète.

auth_username_format = %u

Trouvez ensuite la ligne suivante.

#auth_default_realm =

Changez-le en

auth_default_realm = example.com

Cela permet de s’assurer que les utilisateurs qui n’ont pas saisi la partie @example.com dans le champ du nom d’utilisateur peuvent toujours se connecter. Dovecot ajoutera la partie @example.com si elle n’est pas fournie par les utilisateurs.

Ensuite, décommentez la ligne suivante à la fin de ce fichier, afin que Dovecot puisse interroger les informations utilisateur de la base de données MySQL/MariaDB.

!include auth-sql.conf.ext

Maintenant, vous ne voulez probablement pas que les utilisateurs Unix locaux envoient des e-mails sans enregistrer les adresses e-mail dans PostfixAdmin, puis commentez la ligne suivante en ajoutant le caractère # au début, afin que Dovecot n’interroge pas le local /etc/passwd ou /etc /fichier shadow.

#!include auth-system.conf.ext

Il peut être utile d’ajouter les deux lignes suivantes dans ce fichier pour déboguer les problèmes de connexion. Les erreurs de connexion seraient consignées dans le fichier /var/log/mail.log. (Une fois que les utilisateurs peuvent se connecter sans problème, vous pouvez commenter les deux lignes suivantes.)

auth_debug = yes
auth_debug_passwords = yes

Enregistrez et fermez le fichier.

Edit the dovecot-sql.conf.ext file.

sudo nano /etc/dovecot/dovecot-sql.conf.ext

Voici le contenu que vous devriez avoir dans ce fichier. Par défaut, toutes les lignes de ce fichier sont commentées, vous pouvez donc simplement les copier et les coller en bas. Remplacez password par le mot de passe postfixadmin que vous avez défini à l’étape 2.

driver = mysql

connect = host=localhost dbname=postfixadmin user=postfixadmin password=password

default_pass_scheme = ARGON2I

password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'

user_query = SELECT maildir, 2000 AS uid, 2000 AS gid FROM mailbox WHERE username = '%u' AND active='1'

iterate_query = SELECT username AS user FROM mailbox

Redémarrez Dovecot.

sudo systemctl restart dovecot

Lorsqu’un utilisateur essaie de se connecter, Dovecot utilise l’algorithme Argon2 pour générer un hachage de mot de passe à partir du mot de passe saisi par l’utilisateur, puis le compare avec le hachage de mot de passe stocké dans la base de données.


Étape 3.14 : Ajouter un domaine et des boîtes aux lettres dans PostfixAdmin

Connectez-vous à l’interface Web de PostfixAdmin en tant qu’administrateur. Cliquez sur l’onglet Liste de domaines et sélectionnez Nouveau domaine pour ajouter un domaine. Vous pouvez choisir le nombre d’alias et de boîtes aux lettres autorisés pour ce domaine.

Cliquez ensuite sur l’onglet ‘Liste virtuelle’ et sélectionnez ‘Ajouter une boîte aux lettres’ pour ajouter une nouvelle adresse e-mail pour votre domaine.

Ensuite, vous pouvez ouvrir votre client de messagerie de bureau tel que Mozilla Thunderbird et ajouter un compte de messagerie.

Conseil 1 : Vous pouvez également utiliser le port 993 avec le cryptage SSL/TLS pour IMAP et le port 465 avec le cryptage SSL/TLS pour SMTP. Vous ne devez pas utiliser le port 25 comme port SMTP dans les clients de messagerie pour envoyer des e-mails sortants.

Astuce 2 : Si vous utilisez le client de messagerie Microsoft 365 Outlook, vous ne devez pas activer l’authentification par mot de passe sécurisé (SPA), qui est un protocole propriétaire de Microsoft. Votre mot de passe est déjà crypté par TLS.

Vous devriez maintenant pouvoir vous connecter à votre propre serveur de messagerie et également envoyer et recevoir des e-mails avec votre client de messagerie de bureau ! Notez que vous ne pouvez pas utiliser de comptes Unix locaux pour vous connecter maintenant. Vous devez vous connecter avec l’utilisateur virtuel créé à partir de l’interface Web de PostfixAdmin.


Conseils de dépannage pour postfixadmin (facultatif) :

En règle générale, vous devriez toujours vérifier le journal de messagerie (/var/log/mail.log) sur votre serveur de messagerie lorsqu’une erreur se produit. Voici une liste d’erreurs spécifiques et des conseils de dépannage.

Impossible de se connecter à partir des clients de messagerie (facultatif) :

Si vous ne pouvez pas vous connecter à votre serveur de messagerie à partir d’un client de messagerie de bureau, analysez votre serveur de messagerie pour déterminer si les ports sont ouverts. Notez que vous devez exécuter la commande suivante à partir d’un autre ordinateur ou serveur Linux. Si vous l’exécutez sur votre serveur de messagerie, les ports apparaîtront toujours ouverts.

sudo nmap mail.your-domain.com

Et vérifiez si Dovecot est en cours d’exécution.

systemctl status dovecot

Vous pouvez également consulter le journal de messagerie (/var/log/mail.log), qui peut vous donner quelques indices. Si Dovecot ne démarre pas, l’erreur n’est peut-être pas consignée dans le fichier /var/log/mail.log , vous pouvez exécuter la commande suivante pour voir ce qui ne va pas.

sudo journalctl -eu dovecot

Si vous voyez l’erreur suivante dans le journal des e-mails, il est probable que vous n’ayez pas défini un mot de passe correct dans les fichiers .cf sous /etc/postfix/sql/ répertoire.

postfix/trivial-rewrite[28494]: warning: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problem
postfix/trivial-rewrite[28494]: warning: virtual_alias_domains lookup failure

Si vous voyez l’erreur suivante dans le journal de messagerie, c’est parce que vous avez oublié d’ajouter mail_location = maildir:~/Maildir dans le fichier /etc/dovecot/conf.d/10-mail.conf.

open(/var/mail/username@domain.com) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) missing +w perm: /var/mail, we're not in group 8(mail), dir owned by 0:8 mode=0775
DNS Cloudflare (facultatif) :

Comme indiqué dans l’étape 3.1, si vous utilisez le service DNS Cloudflare, vous ne devez pas activer la fonction CDN (proxy) lors de la création d’un enregistrement DNS A et d’un enregistrement AAAA pour le nom d’hôte de votre serveur de messagerie. Cloudflare ne prend pas en charge le proxy SMTP ou IMAP.

Relay Access Denied (facultatif) :

Si vous voyez l’erreur « Relay access Denied » lorsque vous essayez d’envoyer des e-mails à partir d’un client de messagerie, il est fort probable que vous utilisiez le port 25 comme port SMTP dans votre client de messagerie. Comme indiqué, vous devez utiliser le port 587 ou 465 comme port SMTP dans les clients de messagerie (Mozilla Thunberbird, Microsoft Outlook, etc.) pour envoyer les e-mails sortants. Le port 25 doit être utilisé pour les communications de serveur SMTP à serveur SMTP.

Application mobile iOS Mail (facultatif) :

Si vous utilisez l’application iOS Mail pour vous connecter à votre serveur de messagerie et rencontrez l’erreur que le serveur de mail de répond pas

Vous pouvez essayer de le réparer en appliquant le cryptage SSL, à la fois pour SMTP et IMAP.

Il semble que l’application iOS Mail ait du mal à prendre en charge STARTTLS sur le port IMAP 143, mais elle prend en charge STARTTLS sur le port de soumission 587.

Temporary Lookup Failure (facultatif) :

Si votre serveur de messagerie a fonctionné correctement pendant un certain temps, mais que vous trouvez soudainement l’erreur suivante dans le journal de messagerie,

Aug 25 20:25:24 mx postfix/trivial-rewrite[3313]: warning: virtual_alias_domains: proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problem
Aug 25 20:25:24 mx postfix/trivial-rewrite[3313]: warning: virtual_alias_domains lookup failure
Aug 25 20:25:24 mx postfix/submission/smtpd[3464]: NOQUEUE: reject: 451 4.3.0 <user@your-domain.com>: Temporary lookup failure;  proto=ESMTP
Aug 25 20:25:24 mx postfix/submission/smtpd[3464]: Temporary lookup failure

Il est probable que votre base de données MariaDB/MySQL se soit arrêtée d’une manière ou d’une autre. Vous pouvez utiliser la commande suivante pour vérifier quand votre serveur de base de données s’est arrêté.

sudo journalctl -eu mariadb

or

sudo journalctl -eu mysql

Une cause fréquente de cette situation est que votre serveur manque de mémoire. Vérifiez si votre serveur dispose de suffisamment de mémoire.

htop

or

free -m

Cette erreur peut également être causée par un trop grand nombre de connexions aux bases de données MariaDB/MySQL, de sorte qu’il ne peut pas gérer plus de requêtes. Pour résoudre ce problème, vous pouvez augmenter le nombre de connexions que MariaDB/MySQL peut gérer.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Recherchez la ligne suivante dans la section Réglage .

#max_connections = 100

Décommentez-le et changez la valeur en 500.

max_connections = 500

Si votre serveur a beaucoup de RAM, vous pouvez le changer en un nombre plus grand comme 1000.

max_connections = 1000

Enregistrez et fermez le fichier. Redémarrez ensuite MariaDB/MySQL.

sudo systemctl restart mysql
Nettoyer automatiquement le dossier indésirable et le dossier corbeille (facultatif) :

Pour supprimer les e-mails du dossier Junk pour tous les utilisateurs, vous pouvez exécuter

sudo doveadm expunge -A mailbox Junk all

Pour supprimer des e-mails dans le dossier Corbeille, exécutez

sudo doveadm expunge -A mailbox Trash all

Il est préférable de nettoyer les e-mails qui se trouvent dans le dossier Junk ou Trash depuis plus de 2 semaines, au lieu de nettoyer tous les e-mails.

sudo doveadm expunge -A mailbox Junk savedbefore 2w

Ajoutez ensuite une tâche cron pour automatiser la tâche.

sudo crontab -e

Ajoutez la ligne suivante pour nettoyer le dossier Junk and Trash tous les jours.

@daily doveadm expunge -A mailbox Junk savedbefore 2w;doveadm expunge -A mailbox Trash savedbefore 2w

Vous devez également autoriser l’utilisateur www-data à lire les fichiers de certificat en ajoutant la ligne suivante.

@daily setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/

Pour recevoir un rapport lorsqu’une tâche Cron génère une erreur, vous pouvez ajouter la ligne suivante au-dessus de toutes les tâches Cron.

MAILTO="you@your-domain.com"

Enregistrez et fermez le fichier.

Modifier le mot de passe utilisateur dans PostfixAdmin (facultatif) :

Les utilisateurs peuvent se connecter à PostfixAdmin à l’adresse https://postfixadmin.example.com/users/login.php, puis modifier leur mot de passe.

Restreindre l’accès à Sendmail :

Par défaut, n’importe quel utilisateur local peut utiliser le binaire sendmail pour envoyer des e-mails sortants. Maintenant que votre serveur de messagerie utilise des boîtes aux lettres virtuelles, vous souhaiterez peut-être restreindre l’accès au binaire sendmail aux seuls utilisateurs locaux de confiance, afin qu’un utilisateur malveillant ne puisse pas l’utiliser pour envoyer un grand volume d’e-mails afin de nuire à la réputation de votre serveur de messagerie. Modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante à la fin de ce fichier, afin que seuls l’utilisateur root, www-data et vmail  puissent envoyer des e-mails via sendmail. Vous pouvez également ajouter d’autres noms d’utilisateur.

authorized_submit_users = root,www-data,vmail

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix.

sudo systemctl restart postfix
Comment faire face à une violation de données avec un alias :

Si vous utilisez la même adresse e-mail pour enregistrer des comptes sur chaque site Web et que les données sont divulguées à des tiers pour diverses raisons, de nombreux spammeurs achèteront une base de données de courrier électronique divulguée sur le dark web et enverront du spam.

Pour éviter que votre adresse e-mail ne soit la cible de spammeurs, vous pouvez utiliser PostfixAdmin pour créer une adresse alias pour chaque site Web. Si les données sont divulguées à des tiers, vous pouvez supprimer l’alias et en créer un nouveau, afin de ne pas être spammé par ces tiers.

Comment mettre à jour PostfixAdmin (facultatif) :

Parfois, il peut y avoir des bogues dans le PostfixAdmin actuel qui peuvent être corrigés en passant à une nouvelle version. C’est très simple de mettre à jour PostfixAdmin. Lorsqu’une nouvelle version de PostfixAdmin sort, vous devez


Etape suivante :

À l’étape 4, nous allons voir comment configurer SPF et DKIM avec Postfix pour améliorer la délivrabilité des e-mails et dans un futur tutoriel, on va vous montrer comment héberger plusieurs domaines avec PostfixAdmin.

Si vous souhaitez accéder aux e-mails à partir d’un navigateur Web, on vous recommande Roundcube, qui est un client de messagerie Web open source très populaire et riche en fonctionnalités.


Étape 4 : Comment configurer SPF et DKIM avec Postfix sur Ubuntu Server

-> Retour au sommaire

After completing step 3.1 and step 3.2 we have a working Postfix SMTP server and Dovecot IMAP server. We can send and receive email using a desktop email client. Although I have correct MXA and PTR records, my emails were flagged as spam by Gmail and Outlook mail. So in this part, we are going to look at how to improve email delivery to the recipient’s inbox by setting up SPF and DKIM on Ubuntu server.

Que sont les enregistrements SPF et DKIM ?

SPF et DKIM sont deux types d’enregistrements TXT dans DNS qui vous permettent de détecter l’usurpation d’e-mails et d’aider les e-mails légitimes à être livrés dans la boîte de réception du destinataire au lieu du dossier spam. Si votre domaine est abusé par l’usurpation d’e-mails, vos e-mails risquent d’atterrir dans le dossier spam du destinataire s’il ne vous a pas ajouté au carnet d’adresses.

L’enregistrement SPF (Sender Policy Framework) spécifie quels hôtes ou adresses IP sont autorisés à envoyer des e-mails au nom d’un domaine. Vous devez autoriser uniquement votre propre serveur de messagerie ou le serveur de votre FAI à envoyer des e-mails pour votre domaine.

DKIM (DomainKeys Identified Mail) utilise une clé privée pour ajouter une signature aux e-mails envoyés depuis votre domaine. Les serveurs SMTP récepteurs vérifient la signature en utilisant la clé publique correspondante, qui est publiée dans votre gestionnaire DNS.


Étape 4.1 : Créer un enregistrement SPF dans DNS

Dans votre interface de gestion DNS, créez un nouvel enregistrement TXT comme ci-dessous.

TXT @  v=spf1 mx ~all

Explanation:

-tout signifie que les e-mails envoyés par des hôtes non autorisés doivent être rejetés, pour ne jamais atterrir dans la boîte de réception ou le dossier spam du destinataire. On le voit utilisé par facebook.com, mais nous n’avons généralement pas besoin d’une politique aussi stricte.

Certaines personnes pourraient penser que -tout sera mieux car il rejettera les e-mails d’hôtes non fiables. Eh bien, l’utilisation de -all dans votre politique SPF peut entraîner le rejet de vos propres e-mails lorsque le destinataire dispose de deux serveurs SMTP et que le serveur SMTP principal est hors ligne. Vos e-mails seront temporairement stockés sur le serveur SMTP de secours. Lorsque le serveur SMTP principal revient en ligne, l’e-mail est relayé du serveur SMTP de secours vers le serveur SMTP principal. Étant donné que vous n’avez pas répertorié le serveur SMTP de secours du destinataire dans votre politique SPF, l’e-mail sera rejeté par le serveur SMTP principal du destinataire. Vous devez donc utiliser ~all dans votre politique SPF.

Notez que certains gestionnaires DNS vous demandent d’envelopper l’enregistrement SPF avec des guillemets comme ci-dessous.

TXT @  "v=spf1 mx ~all"

Pour vérifier si votre enregistrement SPF est propagé sur l’Internet public, vous pouvez utiliser l’utilitaire dig sur votre machine Linux comme ci-dessous. (Sur Ubuntu, vous devez installer le package bind9-dnsutils pour utiliser la commande dig : sudo apt install bind9-dnsutils)

dig your-domain.com txt

L’option txt indique à dig que nous ne voulons interroger que les enregistrements TXT.

Vous pouvez utiliser dmarcian SPF surveyor pour tester la syntaxe de votre enregistrement SPF.


Étape 4.2 : Configuration de l’agent de stratégie SPF

Nous devons également indiquer à notre serveur SMTP Postfix de vérifier l’enregistrement SPF des e-mails entrants. Cela n’aide pas à garantir la livraison des e-mails sortants, mais aide à détecter les e-mails entrants falsifiés.

Tout d’abord, installez les packages requis :

sudo apt install postfix-policyd-spf-python

Modifiez ensuite le fichier de configuration du processus maître de Postfix.

sudo nano /etc/postfix/master.cf

Ajoutez les lignes suivantes à la fin du fichier, qui indiquent à Postfix de démarrer le service de stratégie SPF lorsqu’il démarre lui-même.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf

Enregistrez et fermez le fichier. Ensuite, modifiez le fichier de configuration principal de Postfix.

sudo nano/etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin du fichier. La première ligne spécifie le paramètre de délai d’expiration de l’agent de stratégie Postfix. Les lignes suivantes imposeront une restriction sur les e-mails entrants en rejetant les e-mails non autorisés et en vérifiant l’enregistrement SPF.

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix.

sudo systemctl restart postfix

La prochaine fois que vous recevrez un e-mail d’un domaine disposant d’un enregistrement SPF, vous pourrez voir les résultats de la vérification SPF dans l’en-tête brut de l’e-mail. L’en-tête suivant indique que l’expéditeur a envoyé l’e-mail à partir d’un hôte autorisé.

Received-SPF: Pass (sender SPF authorized).

Étape 4.3 : Configuration de DKIM

Tout d’abord, installez OpenDKIM qui est une implémentation open-source du système d’authentification de l’expéditeur DKIM.

sudo apt install opendkim opendkim-tools

Ajoutez ensuite l’utilisateur postfix au groupe opendkim.

sudo gpasswd -a postfix opendkim

Modifiez le fichier de configuration principal d’OpenDKIM.

sudo nano/etc/opendkim.conf

Trouvez la ligne suivante.

Syslog               yes

Par défaut, les journaux OpenDKIM seront enregistrés dans le fichier /var/log/mail.log. Ajoutez la ligne suivante pour qu’OpenDKIM génère des journaux plus détaillés pour le débogage.

Logwhy yes

Localisez les lignes suivantes.

#Domain                 example.com
#KeyFile                /etc/dkimkeys/dkim.key
#Selector               2007

Par défaut, ils sont commentés. Merci de ne pas les décommenter.

Ensuite, recherchez les lignes suivantes. Décommentez-les et remplacez simple par relaxed/simple.

#Canonicalization  simple
#Mode        sv
#SubDomains     no

Ajoutez ensuite les lignes suivantes sous #ADSPAction continue line. Si votre fichier n’a pas de ligne de continuation #ADSPAction, ajoutez simplement SubDomains  no.

AutoRestart         yes
AutoRestartRate     10/1M
Background          yes
DNSTimeout          5
SignatureAlgorithm  rsa-sha256

Ensuite, ajoutez les lignes suivantes à la fin de ce fichier. (Notez que sur Ubuntu 18.04 et 20.04, l’ID utilisateur est déjà défini sur opendkim)

#OpenDKIM user
# Remember to add user postfix to group opendkim
UserID             opendkim

# Map domains in From addresses to keys used to sign messages
KeyTable           refile:/etc/opendkim/key.table
SigningTable       refile:/etc/opendkim/signing.table

# Hosts to ignore when verifying signatures
ExternalIgnoreList  /etc/opendkim/trusted.hosts

# A set of internal hosts whose mail should be signed
InternalHosts       /etc/opendkim/trusted.hosts

Enregistrez et fermez le fichier.


Étape 4.4 : Créer une table de signature, une table de clés et un fichier d’hôtes de confiance

Créer une structure de répertoires pour OpenDKIM

sudo mkdir /etc/opendkim

sudo mkdir /etc/opendkim/keys

Changez le propriétaire de racine en opendkim et assurez-vous que seul l’utilisateur opendkim peut lire et écrire dans le répertoire des clés.

sudo chown -R opendkim:opendkim /etc/opendkim

sudo chmod go-rw /etc/opendkim/keys

Créez la table de signature.

sudo nano /etc/opendkim/signing.table

Ajoutez les deux lignes suivantes au fichier. Cela indique à OpenDKIM que si un expéditeur sur votre serveur utilise une adresse @votre-domaine.com , elle doit être signée avec la clé privée identifiée par default._domainkey.your-domain.com. La deuxième ligne indique que vos sous-domaines seront également signés par la clé privée.

*@your-domain.com    default._domainkey.your-domain.com
*@*.your-domain.com    default._domainkey.your-domain.com

Enregistrez et fermez le fichier. Créez ensuite la table de clés.

sudo nano /etc/opendkim/key.table

Ajoutez la ligne suivante, qui indique l’emplacement de la clé privée.

default._domainkey.your-domain.com   your-domain.com:default:/etc/opendkim/keys/your-domain.com/default.private

Enregistrez et fermez le fichier. Ensuite, créez le fichier d’hôtes de confiance.

sudo nano /etc/opendkim/trusted.hosts

Ajoutez les lignes suivantes au fichier nouvellement créé. Cela indique à OpenDKIM que si un e-mail provient de localhost ou du même domaine, alors OpenDKIM doit uniquement signer l’e-mail mais ne pas effectuer de vérification DKIM sur l’e-mail.

127.0.0.1
localhost

.your-domain.com

Enregistrez et fermez le fichier.

Remarque : Vous ne devez pas ajouter d’astérisque dans le nom de domaine comme ceci : *.votre-domaine.com. Il ne devrait y avoir qu’un point avant le nom de domaine.


Étape 4.5 : Générer une paire de clés privée/publique

Étant donné que DKIM est utilisé pour signer les messages sortants et vérifier les messages entrants, nous devons générer une clé privée pour la signature et une clé publique pour le vérificateur à distance. La clé publique sera publiée dans le DNS.

Create a separate folder for the domain.

sudo mkdir /etc/opendkim/keys/your-domain.com

Générez des clés à l’aide de l’outil opendkim-genkey.

sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s default -v

La commande ci-dessus créera des clés de 2048 bits. -d (domaine) spécifie le domaine. -D (répertoire) spécifie le répertoire dans lequel les clés seront stockées et nous utilisons par défaut comme sélecteur (-s), également appelé nom. Une fois la commande exécutée, la clé privée sera écrite dans le fichier default.private et la clé publique sera écrite dans le fichier default.txt.

Faites d’opendkim le propriétaire de la clé privée.

sudo chown opendkim:opendkim /etc/opendkim/keys/your-domain.com/default.private

Et modifiez l’autorisation, de sorte que seul l’utilisateur opendkim ait accès en lecture et en écriture au fichier.

sudo chmod 600 /etc/opendkim/keys/your-domain.com/default.private

Étape 4.6 : Publiez votre clé publique dans les enregistrements DNS

Afficher la clé publique

sudo cat /etc/opendkim/keys/your-domain.com/default.txt

La chaîne après le paramètre p est la clé publique.

Dans votre gestionnaire DNS, créez un enregistrement TXT, saisissez default._domainkey dans le champ du nom. Revenez ensuite à la fenêtre du terminal, copiez tout entre parenthèses et collez-le dans le champ de valeur de l’enregistrement DNS. Vous devez supprimer tous les guillemets doubles et les espaces blancs dans le champ de valeur. Si vous ne les supprimez pas, le test clé de l’étape suivante échouera probablement.


Étape 4.7 : Tester la clé DKIM (facultatif)

Entrez la commande suivante sur le serveur Ubuntu pour tester votre clé.

sudo opendkim-testkey -d your-domain.com -s default -vvv

Si tout est OK, vous verrez Clé OK dans la sortie de la commande.

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'default._domainkey.your-domain.com'
opendkim-testkey: key secure
opendkim-testkey: key OK

Notez que votre enregistrement DKIM peut avoir besoin d’un certain temps pour se propager sur Internet. Selon le bureau d’enregistrement de domaine que vous utilisez, votre enregistrement DNS peut être propagé instantanément, ou sa propagation peut prendre jusqu’à 24 heures. Vous pouvez accéder à https://www.dmarcanalyzer.com/dkim/dkim-check/, saisir default comme sélecteur et saisir votre nom de domaine pour vérifier la propagation des enregistrements DKIM.

Si vous voyez Clé non sécurisée dans la sortie de la commande, ne paniquez pas. C’est parce que DNSSEC n’est pas activé sur votre nom de domaine. DNSSEC est une norme de sécurité pour les requêtes DNS sécurisées. La plupart des noms de domaine n’ont pas activé DNSSEC. Il n’y a absolument pas besoin de s’inquiéter de la clé non sécurisée. Vous pouvez continuer à suivre ce guide.

Si vous voyez l’erreur d’expiration du délai de requête, vous devez commenter la ligne suivante dans le fichier /etc/opendkim.conf et redémarrer opendkim.service.

TrustAnchorFile       /usr/share/dns/root.key

Étape 4.8 : Connecter Postfix à OpenDKIM

Postfix peut communiquer avec OpenDKIM via un fichier socket Unix. Le fichier de socket par défaut utilisé par OpenDKIM est /var/run/opendkim/opendkim.sock, comme indiqué dans le fichier /etc/opendkim.conf. Mais le service SMTP postfix livré avec Ubuntu s’exécute dans une prison chroot, ce qui signifie que le service SMTP résout tous les noms de fichiers relatifs au répertoire de file d’attente Postfix (/var/spool/postfix). Nous devons donc modifier le fichier de socket OpenDKIM Unix.

Créez un répertoire pour contenir le fichier de socket OpenDKIM et autorisez uniquement l’utilisateur opendkim et le groupe postfixé à y accéder.

sudo mkdir /var/spool/postfix/opendkim

sudo chown opendkim:postfix /var/spool/postfix/opendkim

Modifiez ensuite le fichier de configuration principal d’OpenDKIM.

sudo nano /etc/opendkim.conf

Trouvez la ligne suivante

Socket local:/run/opendkim/opendkim.sock

Remplacez-le par la ligne suivante. (Si vous ne trouvez pas la ligne ci-dessus, ajoutez la ligne suivante.)

Socket    local:/var/spool/postfix/opendkim/opendkim.sock

Enregistrez et fermez le fichier.

Si vous pouvez trouver la ligne suivante dans le fichier /etc/default/opendkim.

SOCKET="local:/var/run/opendkim/opendkim.sock"

ou

SOCKET=local:$RUNDIR/opendkim.sock

Changez-le en :

SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"

Enregistrez et fermez le fichier.

Ensuite, nous devons éditer le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin de ce fichier, afin que Postfix puisse appeler OpenDKIM via le protocole milter.

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

Enregistrez et fermez le fichier. Ensuite, redémarrez opendkim et postfix service.

sudo systemctl restart opendkim postfix

Étape 4.9 : Vérification SPF et DKIM (facultatif)

Vous pouvez maintenant envoyer un e-mail de test depuis votre serveur de messagerie vers votre compte Gmail pour voir si les contrôles SPF et DKIM sont réussis. Sur le côté droit d’un e-mail ouvert dans Gmail, si vous cliquez sur le bouton Afficher l’original dans le menu déroulant, vous pouvez voir les résultats de l’authentification.

Votre serveur de messagerie effectuera également des vérifications SPF et DKIM sur le domaine de l’expéditeur. Vous pouvez voir les résultats dans les en-têtes des e-mails. Ce qui suit est la vérification SPF et DKIM d’un expéditeur utilisant Gmail.

Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; envelope-from=someone@gmail.com; receiver=<UNKNOWN> 
Authentication-Results: email.linuxbabe.com;
        dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="XWMRd2co";
        dkim-atps=neutral

Postfix ne peut pas se connecter à OpenDKIM (facultatif)

Si votre message n’est pas signé et que la vérification DKIM a échoué, vous pouvez vérifier le journal postfix (/var/log/mail.log) pour voir ce qui ne va pas avec votre configuration. Si vous trouvez l’erreur suivante dans le journal de messagerie de Postfix (/var/log/mail.log),

connect to Milter service local:opendkim/opendkim.sock: No such file or directory

vous devez vérifier si le service opendkim systemd est réellement en cours d’exécution.

systemctl status opendkim

Si opendkim est en cours d’exécution et que vous voyez toujours l’erreur ci-dessus, cela signifie que Postfix ne peut pas se connecter à OpenDKIM via le socket de domaine Unix (local:opendkim/opendkim.sock).

Pour corriger cette erreur, vous pouvez configurer OpenDKIM pour utiliser le socket TCP/IP au lieu du socket de domaine Unix. (Le socket de domaine Unix est généralement plus rapide que le socket TCP/IP. Si cela ne fonctionne pas sur votre serveur, vous devez utiliser le socket TCP/IP.)

sudo nano /etc/opendkim.conf

Trouvez la ligne suivante :

Socket   local:/var/spool/postfix/opendkim/opendkim.sock

Remplacez-le par :

Socket     inet:8892@localhost

Ainsi, OpenDKIM écoutera sur le socket 127.0.0.1:8892 TCP/IP. Enregistrez et fermez le fichier. Modifiez ensuite le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Trouvez la ligne suivante :

smtpd_milters = local:opendkim/opendkim.sock

Remplacez-le par :

smtpd_milters = inet:127.0.0.1:8892

Ainsi Postfix se connectera à OpenDKIM via le socket TCP/IP. Redémarrez OpenDKIM et Postfix.

sudo systemctl restart opendkim postfix

Vérification des journaux OpenDKIM (facultatif) :

Parfois, les journaux de journal OpenDKIM peuvent vous aider à découvrir ce qui ne va pas.

sudo journalctl -eu opendkim

Par exemple, on a eu une fois l’erreur suivante.

opendkim[474285]: key '1': dkimf_db_get(): Connection was killed
opendkim[474285]: 16F53B606: error loading key '1'

On a juste besoin de redémarrer OpenDKIM pour corriger cette erreur.

sudo systemctl restart opendkim

Erreur de configuration dans le client de messagerie (facultatif) :

La signature DKIM peut échouer si vous n’utilisez pas les paramètres SMTP/IMAP corrects dans votre client de messagerie.

Paramètres corrects :

ou :

Mauvais paramètres :

Le port 25 doit être utilisé pour la communication de serveur SMTP à serveur SMTP. Veuillez ne pas l’utiliser dans votre client de messagerie pour envoyer des e-mails sortants.

Vous devez sélectionner une méthode de cryptage (STARTTLS ou SSL/TLS) dans votre client de messagerie.


Test du score et du placement des e-mails (facultatif) :

Vous pouvez également accéder à https://www.mail-tester.com. Vous verrez une adresse e-mail unique. Envoyez un e-mail depuis votre domaine à cette adresse, puis vérifiez votre score. Comme vous pouvez le voir, on a obtenu un score parfait.

Mail-tester.com ne peut vous montrer qu’un score d’expéditeur. Il existe un autre service appelé GlockApps qui vous permet de vérifier si votre e-mail est placé dans la boîte de réception ou le dossier spam du destinataire, ou s’il a été rejeté. Il prend en charge de nombreux fournisseurs de messagerie populaires tels que Gmail, Outlook, Hotmail, YahooMail, iCloud mail, etc.


Comment résoudre le problème de non réception de vos e-mails aux adresses e-mail de comptes Microsoft Outlook, hotmail…etc. (facultatif):

Lors de notre test, l’e-mail a atterri dans laboîte de réception Gmail. Cependant, il est toujours étiqueté comme spam dans Outlook.com bien que SPF et DKIM soient transmis.

Microsoft utilise une liste noire interne qui bloque de nombreuses adresses IP légitimes. Si vos e-mails sont rejetés par Outlook ou Hotmail, vous devez suivre le tutoriel lié ci-dessous pour contourner la liste noire de Microsoft Outlook.


Que faire si vos e-mails sont toujours marqués comme spam ? (facultatif)

Les deux facteurs les plus importants sont la réputation du domaine et la réputation IP. Vous pouvez utiliser un service spécifique pour améliorer automatiquement votre réputation.

L’étape suivante

À l’étape 5, nous verrons comment créer un enregistrement DMARC pour protéger votre domaine contre l’usurpation d’adresses e-mail.


Étape 5 : Création d’un enregistrement DMARC pour protéger votre nom de domaine contre l’usurpation d’e-mails

-> Retour au sommaire

À l’étape 4 de la série de didacticiels sur la création de votre propre serveur de messagerie, nous avons implémenté les enregistrements SPF et DKIM pour améliorer la délivrabilité des e-mails. Dans cette partie, nous allons examiner une autre technologie d’authentification des e-mails : DMARC. Nous discuterons de la manière dont DMARC peut vous être utile, comment créer un enregistrement DMARC et interpréter le rapport DMARC.

Qu’est-ce que le DMARC ?

DMARC signifie authentification, rapport et conformité des messages basés sur le domaine. DMARC n’est pas un produit. Il s’agit d’une spécification technique disponible gratuitement et largement prise en charge sur Internet. Toute personne possédant un nom de domaine peut profiter de DMARC.

Une politique DMARC permet à un propriétaire de domaine d’indiquer que les e-mails de son domaine sont protégés par SPF et DKIM. Vous pouvez utiliser DMARC pour découvrir toutes les sources légitimes d’e-mails. DMARC s’appuie sur deux technologies existantes : SPF et DKIM.

Avantages d’avoir un enregistrement DMARC ;

Les avantages du déploiement de DMARC sont :

C’est un gros problème pour toute organisation qui s’appuie sur le courrier électronique pour ses activités quotidiennes. Si vous faites du marketing par e-mail, DMARC est un outil indispensable pour faciliter la livraison des e-mails et atteindre les clients. Presque tous les principaux fournisseurs de boîtes aux lettres destinés aux consommateurs, tels que Gmail, Yahoo et Microsoft, demandent à recevoir des e-mails conformes à DMARC pour faciliter leur travail de filtrage des e-mails.


Comment créer un enregistrement DMARC

Les politiques DMARC sont publiées sous la forme d’un enregistrement TXT dans le DNS.


Étape 5.1 : créer des enregistrements SPF et DKIM :

Avant de créer un enregistrement DMARC, vous devez créer pour votre nom de domaine exemple.com un enregistrement DNS SPF et DKIM.


Étape 5.2 : Alignement de l’identifiant et de l’adresse e-mail :

Envoyez un e-mail de test depuis votre domaine, puis vérifiez les en-têtes d’e-mail bruts dans la boîte aux lettres du destinataire. Vous voulez vous assurer que les domaines dans Return Path, From : header et d=domain dans la signature DKIM sont les mêmes. Si les 3 domaines sont identiques, alors ils sont alignés.

Si Return-Path ou DKIM d= utilise un sous-domaine au lieu du nom de domaine principal, cela s’appelle un alignement détendu. Si aucun sous-domaine n’est utilisé et que les noms de domaine principaux sont les mêmes, on parle d’alignement strict.


Étape 5.3 : Configurer l’enregistrement DMARC

Accédez à votre gestionnaire DNS et ajoutez un enregistrement TXT. Dans le champ du nom, saisissez _dmarc. Dans le champ de valeur, saisissez ce qui suit :

v=DMARC1; p=none; pct=100; rua=mailto:dmarc-reports@your-domain.com

Explication :

Vous avez le choix entre 3 politiques :

Si votre nom de domaine a déjà envoyé des e-mails, alors « p=none » est un bon début. Vous devez analyser les données pendant un certain temps pour voir s’il existe des e-mails légitimes qui ne sont pas conformes au DMARC. Une fois que vous disposez de suffisamment de données et que vous avez résolu les problèmes de diffusion, vous pouvez modifier la règle de « none » à « mettre en quarantine » ou « reject ».

Si vous avez un nouveau nom de domaine qui n’a jamais envoyé d’e-mails auparavant, vous pouvez ignorer none et mettre quarantine et définir p=reject.

Vous pouvez ajouter une autre balise à l’enregistrement DMARC : fo. Il a quatre valeurs possibles.

On recommande d’utiliser fo=1 d’abord pour générer des rapports d’échec DMARC plus complets. Lorsque vous passez à une règle plus restrictive, utilisez fo=0.

v=DMARC1; p=none; pct=100; fo=1; rua=mailto:dmarck-reports@your-domain.com

Vous pouvez vérifier votre enregistrement DMARC depuis le terminal Linux avec la commande suivante :

dig txt +short _dmarc.example.com

Vous pouvez voir qu’on a utilisé deux adresses e-mail pour recevoir le rapport DMARC, ce que nous expliquerons plus tard. Il existe un autre outil de ligne de commande (opendmarc-check) que vous pouvez utiliser pour vérifier l’enregistrement DMARC. Il est fourni par le package opendmarc.

sudo apt install opendmarc

opendmarc-check interroge le DNS pour un enregistrement DMARC pour le domaine nommé, puis traduit le contenu trouvé sous une forme lisible par l’homme.

Si vous avez un nom de domaine qui n’enverra pas d’e-mails, vous devez utiliser p=reject policy.

v=DMARC1; p=reject; pct=100;

DMARC Test (facultatif):

Un bon service pour un test DMARC est accessible à cette page https://www.mail-tester.com. Allez sur le site, vous verrez une adresse e-mail unique. Envoyez un e-mail depuis votre domaine à cette adresse, puis vérifiez votre score. (Ce site Web vérifie tous les facteurs qui affectent la délivrabilité des e-mails, pas seulement DMARC.) Si DMARC réussit, vous verrez quelque chose comme ci-dessous dans le résultat du test.

Une autre façon de tester DMARC consiste à envoyer un e-mail depuis votre domaine vers votre compte Gmail. Si DMARC est correctement configuré, vous verrez dmarc=pass dans l’en-tête authentication-results . (Pour afficher les en-têtes d’e-mail dans Gmail, cliquez sur le bouton « Show original », qui se trouve dans le menu déroulant à droite d’un e-mail ouvert.)

Pour réussir la vérification DMARC, vos e-mails doivent répondre à l’une des exigences suivantes.

Par défaut, DMARC utilise un alignement relâché. Ainsi, le domaine Return-Path ou le domaine d= dans la signature DKIM peut être un sous-domaine.


Comment interpréter le rapport DMARC (facultatif):

Il existe deux types de rapports DMARC.

Normalement, vous ne souhaitez recevoir que le rapport global. Les données produites par DMARC sont inestimables pour comprendre ce qui se passe pour un domaine de messagerie donné. Cependant, les données brutes des rapports DMARC sont extrêmement difficiles à lire et à comprendre. Heureusement, Postmark offre un service gratuit pour traiter ces rapports, vous présente un rapport beaucoup plus lisible. La bonne partie de Postmark est que vous pouvez dire aux serveurs de messagerie de réception d’envoyer des rapports XML directement à Postmark pour traitement. Ainsi, au lieu d’entrer votre adresse e-mail dans l’enregistrement DMARC, vous entrez une adresse e-mail de postmarkapp.com qui vous est propre.

v=DMARC1; p=none; pct=100; fo=1; rua=mailto:unique-to-you@dmarc.postmarkapp.com;

Vous pouvez également spécifier plusieurs adresses e-mail, séparées par des virgules.

v=DMARC1; p=none; pct=100; fo=1; rua=mailto:unique-to-you@dmarc.postmarkapp.com,mailto:dmarc-report@your-domain.com;

Une fois votre enregistrement DMARC vérifié par Postmark, vous recevrez un rapport DMARC chaque semaine tous les lundis dans votre boîte de réception. Vous n’avez pas besoin de créer un compte chez Postmark.

Dasn cet exemple, il existe également une source inconnue qui prétend être linuxbabe.com, site de la capture d’écran.

Tout d’abord, il faut traiter l’adresse IP qui n’a pas d’enregistrement DNS inversé comme un spam. Ensuite, pour identifier d’autres sources inconnues, il faut vérifier si c’est sur une liste noire d’e-mails. Le site debouncer.com dit qu’il est sur 13 listes noires. Il s’agit donc clairement d’un spammeur essayant d’usurper l’identité du nom de domaine.

Pour mieux comprendre la source inconnue et la manière dont vos domaines sont utilisés, vous pouvez choisir de recevoir un rapport médico-légal en ajoutant la balise ruf dans l’enregistrement DMARC comme ci-dessous.

v=DMARC1; p=none; pct=100; fo=1; rua=mailto:unique-to-you@dmarc.postmarkapp.com; ruf=mailto:forensic-report@your-domain.com;

Le rapport médico-légal contient les copies des e-mails qui ont échoué à la vérification DMARC. Vous pouvez voir les en-têtes des e-mails, les lignes d’objet et parfois le corps du message pour déterminer la nature des e-mails ayant échoué. Si vous reconnaissez la ligne d’objet, il est plus probable qu’il s’agisse d’un message transféré. Notez que certains serveurs de messagerie peuvent choisir de générer des rapports agrégés mais pas de rapport médico-légal en raison de problèmes de confidentialité et d’autres peuvent n’inclure que des en-têtes de courrier électronique dans le rapport médico-légal.


Que faire quand SPF ou DKIM ne fonctionne pas? (facultatif)

Un exemple typique d’échec SPF est lorsque vos e-mails sont relayés vers le serveur de messagerie de destination via un serveur tiers. Et la situation courante où DKIM échoue est lorsque vos e-mails sont envoyés via une liste de diffusion, qui ajoute souvent des en-têtes ou des phrases supplémentaires à vos e-mails. En fait, une liste de diffusion peut également provoquer une défaillance du SPF.

Il existe deux types de listes de diffusion.

Ce premier type est facile à aborder car le propriétaire du domaine est un client du fournisseur du serveur de liste de diffusion. Il est facile d’ajouter le serveur de liste de diffusion à l’enregistrement SPF. En outre, le serveur de liste de diffusion peut effectuer la signature DKIM pour les clients.

Le deuxième type de liste de diffusion est difficile à gérer pour les propriétaires de domaine dont les utilisateurs participent à des discussions dans diverses listes de diffusion. Le propriétaire du domaine ne peut pas répertorier tous les serveurs de liste de diffusion de discussion possibles dans l’enregistrement SPF, et ces listes de diffusion ne peuvent pas signer DKIM pour d’autres noms de domaine. Une solution possible consiste à ce que la liste de diffusion utilise sa propre adresse dans l’en-tête De : et ajoute l’adresse de l’expéditeur de l’e-mail d’origine dans l’en-tête Répondre à : . Plus de détails peuvent être trouvés sur cette page wiki GNU mailman. Une solution plus pratique et prometteuse est l’ARC (Authentication Received Chain), ce qui signifie essentiellement que les listes de diffusion vérifient DMARC et signent le résultat DMARC. Les serveurs de messagerie de réception peuvent faire confiance à la signature ARC et remplacer les résultats de la vérification DMARC locale.


Quand devriez-vous passer à la politique p=reject (facultatif)

Vous devez attendre suffisamment de temps pour recevoir de nombreux rapports DMARC. Ne soyez pas surpris lorsque vous voyez des faux positifs dans votre rapport DMARC. Analysez ces faux positifs et prenez des mesures pour vous assurer qu’ils peuvent passer le contrôle DMARC. Après cela, basculez votre politique DMARC sur p=quarantine et éventuellement p=reject. Ne sautez pas la quarantaine et passez directement au rejet. Lorsque vous passez à une politique DMARC plus stricte, envisagez de modifier la valeur de pct tag.

Ainsi, le processus global se déroule comme suit :

  1. p=none;              pct=100;
  2. p=quarantine;     pct=30;
  3. p=quarantine;     pct=70;
  4. p=quarantine;     pct=100;
  5. p=reject;             pct=30;
  6. p=reject;             pct=70;
  7. p=reject;             pct=100;

Pourquoi on utilise toujours la politique p=none ? (facultatif)

Tout d’abord, c’est à cause de Microsoft. les e-mails transférés à partir de la boîte aux lettres Microsoft Outlook peuvent échouer à la vérification DKIM, ce qui est mauvais. Pour cette raison, on ne peut pas définir ma politique DMARC sur quarantine ou reject.

Une autre raison est que qu’on utilise parfois l’application MailChimp pour envoyer des newsletters à des abonnés par e-mail. MailChimp utilise son propre domaine dans l’en-tête Return-Path et sa propre signature DKIM pour l’e-mail de confirmation d’inscription, ce qui provoque un échec DMARC.

La solution au premier problème est le déploiement d’ARC (Authenticated Received Chain). Jusqu’à ce que l’ARC soit mis en œuvre sur les fournisseurs de boîtes aux lettres, on ne modifiera pas ma politique DMARC.

Pour résoudre le deuxième problème, nous devons passer à une application de newsletter auto-hébergée comme Mailtrain, au lieu d’utiliser un fournisseur de services de messagerie (ESP) pour envoyer des newsletters aux abonnés par e-mail. De cette façon, on peut utiliser son propre nom de domaine dans l’en-tête Return-Path et sa propre signature DKIM dans chaque e-mail. Cependant, cela signifie également qu’on devra établir une bonne réputation pour son domaine de messagerie et l’adresse IP de son serveur de messagerie afin que les e-mails puissent atterrir dans la boîte de réception des abonnés au lieu du dossier spam. Cela peut prendre du temps et des efforts.


Observations :

Il est préférable d’avoir une règle p=none que de ne pas avoir d’enregistrement DMARC. Bien que p=none ne puisse pas empêcher l’usurpation d’e-mails, au moins les e-mails légitimes ont une meilleure chance d’être placés dans la boîte de réception.


Étape 6 : Comment contourner le blacklist d’IP de Microsoft Outlook et les autres blacklists

-> Retour au sommaire

Parfois, vos e-mails sortants peuvent être rejetés en raison du fait que l’adresse IP de votre VPS ou de votre serveur est dans un blacklist des adresses IP.

Nous allons vous montrer une solution pour contourner la liste noire IP de Microsoft Outlook. Si l’adresse IP de votre serveur de messagerie est également bloquée par d’autres listes noires, on vous montrera comment le contourner à la fin de cet article. Veuillez suivre l’intégralité du didacticiel même si votre adresse IP n’est pas sur la liste noire de Microsoft.

Microsoft Outlook Blacklist :

Microsoft Outlook renvoie généralement le message suivant si votre adresse IP est bloquée.

host eur.olc.protection.outlook.com[104.47.22.161] said:
550 5.7.1 Unfortunately, messages from [xx.xx.xx.xx] weren’t sent.
Please contact your Internet service provider since part of their network
is on our block list (S3150). You can also refer your provider to
http://mail.live.com/mail/troubleshooting.aspx#errors.
[DB8EUR06FT013.eop-eur06.prod.protection.outlook.com] (in reply to MAIL
FROM command)

Comme vous pouvez le voir, toute la plage IP est bloquée. Personnellement, on ne pense pas que cette technique anti-spam devrait être utilisée en raison des dommages collatéraux causés aux expéditeurs légitimes. En revanche, Gmail est beaucoup plus intelligent dans la gestion de la réputation IP. Vous pouvez tenter d’utiliser le formulaire de Microsoft : submit the sender information form pour tenter de résoudre ce problème. Parfois, Microsoft débloquait votre adresse IP, parfois votre demande était refusée.

Un moyen infaillible de retirer votre adresse IP de la liste noire d’Outlook consiste à faire certifier votre serveur de messagerie par Return Path. Cependant, c’est très cher.


Utilisation d’un service de relais SMTP pour contourner la Blacklist d’adresse IP par Microsoft Outlook ou de Gmail :

Vous pouvez configurer votre serveur de messagerie pour relayer les e-mails via les services de relais SMTP. Ils maintiennent une bonne réputation IP, de sorte que vos e-mails peuvent passer à travers les listes noires IP. Il existe de nombreux services de relais SMTP. Certains facturent des frais minimes, d’autres offrent des quotas gratuits tous les mois.

Vous n’avez pas besoin de configurer votre serveur de messagerie pour relayer tous vos e-mails. On va vous montrer comment configurer votre serveur SMTP Postfix pour relayer les e-mails envoyés uniquement aux adresses e-mail outlook.com, hotmail.com, live.com et msn.com, afin que vous n’utilisiez pas rapidement le quota gratuit.

Ici, on recommande le service de relais Brevo SMTP (anciennement nommé ‘Sendinblue’), qui permet d’envoyer gratuitement 9 000 e-mails/mois.


Configurer le relais SMTP Brevo / SendinBlue :

Créer un compte gratuit sur Brevo / SendinBlue. Une fois votre profil utilisateur complété, cliquez sur l’onglet transactionnel, vous obtiendrez vos paramètres SMTP.

Notez que vous devrez peut-être contacter le service client de Brevo afin d’activer le service de messagerie transactionnelle.

Connectez-vous en SSH à votre serveur de messagerie et installez le package libsasl2-modules, qui est requis pour l’authentification SASL.

sudo apt install libsasl2-modules

Ensuite, ouvrez le fichier de configuration principal de Postfix avec un éditeur de texte en ligne de commande comme Nano.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante à la fin de ce fichier.

transport_maps = regexp:/etc/postfix/transport.microsoft

Ajoutez ensuite les lignes suivantes à la fin de ce fichier.

# outbound relay configurations
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noplaintext, noanonymous
smtp_tls_security_level = may
header_size_limit = 4096000

Enregistrez et fermez le fichier. Ensuite, créez le fichier /etc/postfix/transport.microsoft.

sudo nano /etc/postfix/transport.microsoft

Ajoutez la ligne suivante dans ce fichier. Cela indique à Postfix d’utiliser le relais SMTP Brevo si le destinataire est un utilisateur de boîte aux lettres Microsoft.

/.*@(outlook|hotmail|live|msn)\..*/i             relay:[smtp-relay.brevo.com]:587

Enregistrez et fermez le fichier. Créez ensuite le fichier .db.

sudo postmap /etc/postfix/transport.microsoft

Créez ensuite le fichier /etc/postfix/sasl_passwd.

sudo nano /etc/postfix/sasl_passwd

Ajoutez l’hôte de relais SMTP et les informations d’identification SMTP à ce fichier comme ci-dessous.
Remplacez smtp_username et smtp_password par vos propres nom d’utilisateur et mot de passe fournis par Brevo / SendinBlue.
Notez qu’il y a deux-points entre le nom d’utilisateur et le mot de passe.

[smtp-relay.brevo.com]:587            smtp_username:smtp_password

Enregistrez et fermez le fichier. Créez ensuite le fichier de base de données de hachage correspondant avec postmap.

sudo postmap /etc/postfix/sasl_passwd

Vous devriez maintenant avoir un fichier /etc/postfix/sasl_passwd.db. Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl restart postfix

Par défaut, les fichiers sasl_passwd et sasl_passwd.db peuvent être lus par n’importe quel utilisateur sur le serveur. Modifiez l’autorisation à 600 afin que seul root puisse lire et écrire dans ces deux fichiers.

sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Désormais, Postfix utilisera le relais SMTP Sendinblue pour envoyer des e-mails aux utilisateurs de boîtes aux lettres Microsoft. Vous pouvez envoyer un e-mail de test à une adresse e-mail hotmail.com, outlook.com, live.com ou msn.com.

Notez que vous devez cliquer sur l’onglet Expéditeurs et adresses IP dans le tableau de bord de votre compte pour ajouter votre domaine.


Configurer l’authentification SPF/DKIM dans Brevo (ex SendinBlue) :

Dans votre tableau de bord SendinBlue, cliquez sur le nom de votre compte dans le coin supérieur droit, puis cliquez sur Expéditeurs et IP. Sélectionnez l’onglet Domaines > Gérer -> Authentifier ce domaine.

Une fenêtre contextuelle apparaît. Vous devez ajouter les 3 premiers enregistrements DNS à votre domaine.

Interface sur OvhCloud :


Conseil de dépannage (facultatif) :

Si votre serveur SMTP Postfix n’a pas réussi à envoyer l’e-mail via le relais SMTP et que vous voyez l’erreur suivante dans le journal de messagerie (/var/log/mail.log).

sasl authentication failed cannot authenticate to server no mechanism available

c’est probablement parce qu’il manque à votre système le package libsasl2-modules, qui peut être installé avec la commande suivante.

sudo apt install libsasl2-modules

Redémarrez ensuite Postfix.

sudo systemctl restart postfix

Remarque : Parfois, l’erreur ci-dessus peut être causée par un certificat TLS non valide (auto-signé ou expiré) sur le serveur de relais SMTP. Cependant, cela se produit rarement lorsque vous utilisez Sendinblue.


Comment contourner le blacklist de votre adresse IP et de votre adresse e-mail de la part de fournisseurs d’adresses d’e-mails autres que Microsoft (facultatif) :

Vous pouvez désormais envoyer des e-mails aux boîtes aux lettres Microsoft, mais il existe également d’autres listes noires tierces telles que la liste noire Proofpoint, qui est utilisée par icloud.com et de nombreux autres noms de domaine. Vous ne pouvez pas répertorier tous les noms de domaine possibles qui utilisent la liste noire Proofpoint dans le fichier de transport Postfix, alors comment pouvez-vous dire à Postfix de contourner les listes noires tierces ?

Dans ce cas, vous devez indiquer à Postfix de se rabattre sur le relais SMTP Sendinblue en cas d’échec de la livraison des e-mails. Ouvrez le fichier main.cf.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante à la fin de ce fichier.

smtp_fallback_relay = [smtp-relay.brevo.com]:587

De cette façon, Postfix essaiera de livrer l’e-mail par lui-même, et si la livraison échoue, Postfix utilisera le relais SMTP Sendinblue.

smtp_fallback_relay n’est pas parfait, car il ne fonctionne que lorsque l’e-mail est rebondi (code 4xx). Si votre e-mail sortant est bloqué (code 5xx), alors Postfix n’utilisera pas le relais de secours.

Heureusement, vous pouvez changer le code de relais SMTP de 5xx à 4xx, donc Postfix pensera que tous les e-mails rebondis sont des rebonds doux et il se rabattra sur le relais SMTP Sendinblue. Pour que cela fonctionne, ajoutez la ligne suivante au bas du fichier /etc/postfix/main.cf .

smtp_reply_filter = pcre:/etc/postfix/smtp_reply_filter

Save and close the file. Then create the /etc/postfix/smtp_reply_filter file.

sudo nano /etc/postfix/smtp_reply_filter

Ajoutez la ligne suivante dans ce fichier. Veuillez ne pas ajouter d’espace au début de cette ligne.

/^5(.*)$/ 4$1

Enregistrez et fermez le fichier. Ensuite, construisez cette table de recherche.

sudo postmap /etc/postfix/smtp_reply_filter

Installez le support de carte PCRE pour Postfix.

sudo apt install postfix-pcre

Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl restart postfix
Sortir du dossier spam (facultatif) :

Les services de relais SMTP peuvent vous aider à contourner les listes noires d’adresses IP, mais cela ne signifie pas que vos e-mails arriveront à 100 % dans la boîte de réception. Vos e-mails peuvent être placés dans le dossier spam. Si vous respectez les bonnes pratiques d’envoi d’e-mails, vos e-mails seront éventuellement placés dans le dossier de la boîte de réception.

Conseils pour rester en dehors de la blacklist de Microsoft (facultatif) :

Microsoft peut supprimer votre adresse IP de la liste noire s’il n’a trouvé aucune activité de spam provenant de votre serveur de messagerie pendant un certain temps. Voici quelques conseils pour éviter que votre adresse IP ne soit à nouveau mise sur liste noire.

Vous pouvez vous connecter auOutlook.com Smart Network Data Services pour vérifier votre réputation IP auprès de Microsoft. Si votre adresse IP envoie plus de 100 messages un jour donné, vous pouvez cliquer sur le lien Afficher les données pour afficher le trafic de messagerie et les données de spam pour votre adresse IP.

Microsoft utilise 3 couleurs pour distinguer le taux de spam de votre adresse IP :


Étape 7 : Installez Roundcube Webmail sur Ubuntu 22.04 avec Apache

-> Retour au sommaire

Roundcube est un client de messagerie Web open source gratuit et complet écrit en PHP. Un webmail est un client de messagerie dans votre navigateur. Au lieu de lire et d’envoyer des e-mails à partir d’un client de messagerie de bureau tel que Mozilla Thunderbird, vous pouvez accéder à vos e-mails à partir d’un navigateur Web. Ce tutoriel va vous montrer comment installer le webmail Roundcube sur Ubuntu 22.04 avec le serveur web Apache.

Vous accèderez à Roundcube en tapant l’adresse https://webmail.exemple.com dans la barre d’adresse de votre navigateur puis en vous connectant avec vos identifiants.

Fonctionnalités :

Étape 7.1 : Téléchargez Roundcube Webmail sur Ubuntu 22.04

Connectez-vous à votre serveur Ubuntu via SSH, puis exécutez la commande suivante pour télécharger la dernière version stable 1.6 à partir du référentiel Roundcube Github.

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.0/roundcubemail-1.6.0-complete.tar.gz

Remarque : Vous pouvez toujours utiliser le format d’URL ci-dessus pour télécharger Roundcube à partir de la ligne de commande. Si une nouvelle version sort, remplacez simplement 1.6.0 par le nouveau numéro de version. Vous pouvez vérifier s’il y a une nouvelle version sur le site de Roundcube

Extrayez l’archive tar, déplacez le dossier nouvellement créé vers la racine Web (/var/www/) et renommez-le en roundcube en même temps.

tar xvf roundcubemail-1.6.0-complete.tar.gz

sudo mkdir -p /var/www/

sudo mv roundcubemail-1.6.0 /var/www/roundcube

Allez dans le répertoire roundcube.

cd /var/www/roundcube

Faites de l’utilisateur du serveur Web (www-data) le propriétaire des répertoires temp et logs afin que le serveur Web puisse écrire dans ces deux répertoires.

sudo chown www-data:www-data temp/ logs/ -R

Étape 7.2 : Installer les extensions PHP

Exécutez la commande suivante pour installer les extensions PHP requises. PHP8.1 est entièrement pris en charge dans la version 1.6.

sudo apt install software-properties-common

sudo add-apt-repository ppa:ondrej/php

sudo apt update

sudo apt install php-net-ldap2 php-net-ldap3 php-imagick php8.1-common php8.1-gd php8.1-imap php8.1-mysql php8.1-curl php8.1-zip php8.1-xml php8.1-mbstring php8.1-bz2 php8.1-intl php8.1-gmp php8.1-redis

Étape 7.3 : Créer une base de données MariaDB et un utilisateur pour Roundcube

Connectez-vous au shell MariaDB en tant que root.

sudo mysql -u root

Créez ensuite une nouvelle base de données pour Roundcube à l’aide de la commande suivante. Ce tutoriel le nomme roundcubemail, vous pouvez utiliser le nom de votre choix pour la base de données.

CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Ensuite, créez un nouvel utilisateur de base de données sur localhost à l’aide de la commande suivante. Encore une fois, ce tutoriel le nomme roundcube, vous pouvez utiliser le nom de votre choix. Remplacez mot de passe par votre mot de passe préféré.

CREATE USER roundcube@localhost IDENTIFIED BY 'roundcube_password';

Accordez ensuite toutes les autorisations de la nouvelle base de données au nouvel utilisateur afin que plus tard le webmail Roundcube puisse écrire dans la base de données.

GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost;

Videz la table des privilèges pour que les modifications prennent effet.

flush privileges;

Quittez MariaDB Shell :

exit;

Importez les tables initiales dans la base de données roundcube.

sudo mysql roundcube < /var/www/roundcube/SQL/mysql.initial.sql

Étape 7.4 : Créer un fichier Virtualhost Apache pour Roundcube

Créez un hôte virtuel pour Roundcube.

sudo nano /etc/apache2/sites-available/roundcube.conf

Note : Si vous avez suivi le tutoriel Postfix/Dovecot, un hôte virtuel existe déjà. vous devez éditer le fichier suivant. (Supprimez le contenu existant.)

sudo nano /etc/apache2/sites-available/mail.example.com.conf

Mettez le texte suivant dans le fichier. Remplacez mail.exemple.com par votre vrai nom de domaine et n’oubliez pas de définir un enregistrement DNS A pour celui-ci.

<VirtualHost *:80>
  ServerName mail.exemple.com
  DocumentRoot /var/www/roundcube/

  ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
  CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/roundcube/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>

Enregistrez et fermez le fichier. Activez ensuite cet hôte virtuel avec :

sudo a2ensite roundcube.conf

Rechargez Apache pour que les modifications prennent effet.

sudo systemctl reload apache2

Vous devriez maintenant pouvoir voir l’assistant d’installation Web de Roundcube à l’adresse http://mail.exemple.com/installer.

Vous devriez maintenant pouvoir voir l’assistant d’installation Web de Roundcube à l’adresse http://mail.exemple.com/installer.


Étape 7.5 : Activer HTTPS

Il est fortement recommandé d’utiliser TLS pour chiffrer votre messagerie Web. Nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let’s Encrypt. Exécutez la commande suivante pour installer le client Let’s Encrypt (certbot) sur le serveur Ubuntu 22.04.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d mail.exemple.com

ou :

Le certificat devrait maintenant être obtenu et installé automatiquement.

Remarque : Si vous avez suivi notre didacticiel Postfix/Dovecot et que vous installez maintenant Roundcube sur le même serveur, certbot vous indiquera probablement qu’un certificat pour mail.example.com existe déjà, comme indiqué ci-dessous. Vous pouvez donc choisir d’installer le certificat existant. Certificat TLS dans le fichier de configuration de votre serveur Web.


Étape 7.6 : Ajout d’une entrée DNS locale

Il est recommandé de modifier le fichier /etc/hosts sur le serveur de messagerie et d’ajouter l’entrée suivante, afin que Roundcube n’ait pas à interroger le DNS public, ce qui accélérera un peu le chargement de la page Web.

127.0.0.1  localhost mail.example.com

Étape 7.7 : Configurer Roundcube

Accédez au répertoire de configuration de Roundcube.

cd /var/www/roundcube/config/

Copiez l’exemple de fichier de configuration.

sudo cp config.inc.php.sample config.inc.php

Modifiez le nouveau fichier.

sudo nano config.inc.php

Trouvez la ligne suivante, qui indique à Roundcube comment se connecter à la base de données.

$config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';

Vous devez remplacer pass par le vrai mot de passe Roundcube. Si le mot de passe contient des caractères spéciaux, vous devez utiliser le codage en pourcentage. Par exemple, si le mot de passe est mPcEIRxyJhCz8uiWIUopqWzaSTk=, la ligne ressemblera à ceci :

$config['db_dsnw'] = 'mysql://roundcube:mPcEIRxyJhCz8uiWIUopqWzaSTk%3D@localhost/roundcubemail';

Le caractère spécial = est représenté par %3D.

Trouvez ensuite les deux lignes suivantes.

$config['imap_host'] = 'localhost:143';

$config['smtp_host'] = 'localhost:587';

Remplacez la valeur comme suit :

$config['imap_host'] = 'tls://mail.example.com:143';

$config['smtp_host'] = 'tls://mail.example.com:587';

Trouvez la ligne suivante.

$config['des_key'] = 'rcmail-!24ByteDESkey*Str';

Remplacez la clé par défaut par des caractères aléatoires comme ci-dessous.

$config['des_key'] = '58kptbzEcNKi/bc9OL90//3ATnQ=';

Ensuite, trouvez les lignes suivantes

// List of active plugins (in plugins/ directory)
$config['plugins'] = [
    'archive',
    'zipdownload',
];

Par défaut, seuls deux plugins sont activés. Nous pouvons activer plus de plugins comme ci-dessous.

// List of active plugins (in plugins/ directory)
$config['plugins'] = ['acl', 'additional_message_headers', 'archive', 'attachment_reminder', 'autologon', 'debug_logger', 'emoticons', 'enigma', 'filesystem_attachments', 'help', 'hide_blockquote', 'http_authentication', 'identicon', 'identity_select', 'jqueryui', 'krb_authentication', 'managesieve', 'markasjunk', 'new_user_dialog', 'new_user_identity', 'newmail_notifier', 'password', 'reconnect', 'redundant_attachments', 'show_additional_headers', 'squirrelmail_usercopy', 'subscriptions_option', 'userinfo', 'vcard_attachments', 'virtuser_file', 'virtuser_query', 'zipdownload'];

Enfin, nous pouvons activer le correcteur orthographique intégré en ajoutant la ligne suivante à la fin de ce fichier.

$config['enable_spellcheck'] = true;

Enregistrez et fermez le fichier.

Accédez à votre domaine Webmail et connectez-vous.

Interface de messagerie Web Roundcube :

Vous devez maintenant supprimer l’intégralité du dossier d’installation de la racine du document ou vous assurer que l’option enable_installer dans le fichier config.inc.php est désactivée.

sudo rm /var/www/roundcube/installer/ -r

Ces fichiers peuvent exposer au public des données de configuration sensibles telles que les mots de passe du serveur et les clés de chiffrement. Assurez-vous que vous ne pouvez pas accéder à la page d’installation à partir de votre navigateur.


Étape 7.8 : Configurer le filtre de messages Sieve pour classer vos e-mails dans de certains dossiers selon des règles spécfifiques

Vous pouvez créer des dossiers dans le webmail Roundcube, puis créer des règles pour filtrer les messages électroniques dans différents dossiers. Pour ce faire, vous devez installer le serveur ManageSieve avec la commande suivante.

sudo apt install dovecot-sieve dovecot-managesieved

Par défaut, Postfix utilise son agent de livraison local (LDA) intégré pour déplacer les e-mails entrants vers la banque de messages (boîte de réception, envoyés, corbeille, courrier indésirable, etc.). Nous pouvons le configurer pour utiliser Dovecot pour envoyer des e-mails, via le protocole LMTP, qui est une version simplifiée de SMTP. LMTP permet un système de messagerie hautement évolutif et fiable et il est nécessaire si vous souhaitez utiliser le plugin sieve pour filtrer les messages entrants vers différents dossiers.

Installez le serveur Dovecot LMTP.

sudo apt install dovecot-lmtpd

Modifiez le fichier de configuration principal de Dovecot.

sudo nano /etc/dovecot/dovecot.conf

Ajoutez lmtp et sieve aux protocoles pris en charge.

protocols = imap lmtp sieve

Enregistrez et fermez le fichier. Modifiez ensuite le fichier Dovecot 10-master.conf .

sudo nano /etc/dovecot/conf.d/10-master.conf

Modifiez la définition du service lmtp comme suit.

service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
   group = postfix
   mode = 0600
   user = postfix
  }
}

Ensuite, éditez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin du fichier. La première ligne indique à Postfix de livrer les e-mails au magasin de messages local via le serveur LMTP dovecot. La deuxième ligne désactive SMTPUTF8 dans Postfix, car Dovecot-LMTP ne prend pas en charge cette extension de messagerie.

mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no

Enregistrez et fermez le fichier. Ouvrez le fichier /etc/dovecot/conf.d/15-lda.conf .

sudo nano /etc/dovecot/conf.d/15-lda.conf

Faites défiler jusqu’à la fin du fichier, décommentez la ligne mail_plugins et ajoutez le plug-in sieve à l’agent de distribution local (LDA).

protocol lda {
    # Space separated list of plugins to load (default is global mail_plugins).
    mail_plugins = $mail_plugins sieve
}

Enregistrez et fermez le fichier. Si vous pouvez trouver le fichier 20-lmtp.conf dans le répertoire /etc/dovecot/conf.d/ , vous devez également activer le plug-in sieve dans ce fichier, comme ci-dessous.

protocol lmtp {
      mail_plugins = quota sieve
}

Modifiez le fichier /etc/dovecot/conf.d/10-mail.conf .

sudo nano /etc/dovecot/conf.d/10-mail.conf

Les scripts Sieve sont stockés dans le répertoire personnel de chaque utilisateur. Si vous avez suivi notre tutoriel PostfixAdmin et que vous utilisez des domaines de boîtes aux lettres virtuelles, vous devez activer mail_home pour les utilisateurs virtuels en ajoutant la ligne suivante dans le fichier, car les utilisateurs virtuels n’ont pas de répertoire personnel par défaut.

mail_home = /var/vmail/%d/%n

Enregistrez et fermez le fichier.

Enfin, redémarrez Postfix et Dovecot.

sudo systemctl restart postfix dovecot

Vous pouvez maintenant accéder au webmail Roundcube, ouvrir un e-mail et cliquer sur le bouton plus et sélectionner créer des filtres pour créer des filtres de message. Par exemple, on crée un filtre qui déplace chaque e-mail envoyé depuis redhat.com vers le dossier Red Hat.

Si vous n’avez pas l’option de création de filtre, c’est probablement parce que vous n’avez pas activé le plugin managesieve. Modifiez le fichier config.inc.php.

sudo nano /var/www/roundcube/config/config.inc.php

A la fin de ce fichier, vous trouverez une liste des plugins actifs. ajoutez le plugin managesieve dans le tableau. L’ordre des plugins n’a pas d’importance.

// ----------------------------------
// PLUGINS
// ----------------------------------
// List of active plugins (in plugins/ directory)
$config['plugins'] = ['acl', 'additional_message_headers', 'archive', 'attachment_reminder', 'autologon', 'database_attachments', 'debug_logger', 'emoticons', 'enigma', 'filesystem_attachments', 'help', 'hide_blockquote', 'http_authentication', 'identicon', 'identity_select', 'jqueryui', 'krb_authentication', 'managesieve', 'markasjunk', 'new_user_dialog', 'new_user_identity', 'newmail_notifier', 'password', 'reconnect', 'redundant_attachments', 'show_additional_headers', 'squirrelmail_usercopy', 'subscriptions_option', 'userinfo', 'vcard_attachments', 'virtuser_file', 'virtuser_query', 'zipdownload'];

Enregistrez et fermez le fichier.

Notez que si vous déplacez un ensemble de filtres sieve d’un ancien serveur de messagerie vers votre nouveau serveur de messagerie, vous devez accéder à Paramètres -> Filtres, puis cliquer sur Actions et activer l’ensemble de filtres, sinon le serveur Dovecot LMTP n’exécutera pas le filtre sieve. .


Étape 7.9 : Suppression des informations sensibles des en-têtes d’un e-mail

Par défaut, Roundcube ajoutera un en-tête d’e-mail User-Agent , indiquant que vous utilisez le webmail Roundcube et le numéro de version. Vous pouvez dire à Postfix de l’ignorer afin que le destinataire ne puisse pas le voir. Exécutez la commande suivante pour créer un fichier de vérification d’en-tête.

sudo nano /etc/postfix/smtp_header_checks

Mettez les lignes suivantes dans le fichier.

/^User-Agent.*Roundcube Webmail/            IGNORE

Enregistrez et fermez le fichier. Modifiez ensuite le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante à la fin du fichier.

smtp_header_checks = regexp:/etc/postfix/smtp_header_checks

Enregistrez et fermez le fichier. Exécutez ensuite la commande suivante pour reconstruire la table de hachage.

sudo postmap /etc/postfix/smtp_header_checks

Rechargez Postfix pour que le changement prenne effet.

sudo systemctl reload postfix

Désormais, Postfix n’inclura plus User-Agent : Roundcube Webmail dans les en-têtes lors de l’envoi d’e-mails sortants.


Étape 7.10 : Configurer le plugin de choix du mot de passe par l’utilisateur dans Roundcube

Roundcube inclut un plug-in de mot de passe qui permet aux utilisateurs de modifier leurs mots de passe à partir de l’interface de messagerie Web. Modifiez le fichier config.inc.php.

sudo nano /var/www/roundcube/config/config.inc.php

Assurez-vous que le plug-in de mot de passe figure dans la liste des plug-ins à la fin de ce fichier. L’ordre des plugins n’a pas d’importance.

$config['plugins'] = array('acl', 'additional_message_headers', 'password', .....);

Enregistrez et fermez le fichier.

Cependant, nous devons configurer ce plugin avant qu’il ne fonctionne. Exécutez la commande suivante pour copier le fichier de configuration du plug-in de mot de passe distribué dans un nouveau fichier.

sudo cp /var/www/roundcube/plugins/password/config.inc.php.dist /var/www/roundcube/plugins/password/config.inc.php

Modifiez le fichier de configuration du plug-in de mot de passe.

sudo nano /var/www/roundcube/plugins/password/config.inc.php

Trouvez la ligne suivante :

$config['password_db_dsn'] = 'exemple.com';

Ce paramètre est utilisé pour indiquer au plugin de mot de passe où les mots de passe des utilisateurs sont stockés. Par défaut, la valeur est vide et interroge la base de données roundcube, qui ne stocke pas les mots de passe des utilisateurs. Si vous avez suivi notre didacticiel PostfixAdmin, les mots de passe des utilisateurs sont stockés dans la table postfixadmin.mailbox. Nous devons donc modifier la valeur :

$config['password_db_dsn'] = 'mysql://postfixadmin:postfixadmin_database_password@127.0.0.1/postfixadmin';

Indique au plug-in de mot de passe de se connecter à la base de données postfixadmin. Si vous ne vous souvenez pas de votre mot de passe de base de données postfixadmin, vous pouvez le trouver dans le fichier /etc/dovecot/dovecot-sql.conf.ext . Si votre mot de passe PostfixAdmin contient un guillemet simple, vous pouvez utiliser une barre oblique inverse (\’) pour l’échapper.

Trouvez ensuite la ligne suivante.

$config['password_query'] = 'SELECT update_passwd(%c, %u)';

Remplacez-le par ce qui suit.

$config['password_query'] = 'UPDATE mailbox SET password=%P,modified=NOW() WHERE username=%u';

On recommande d’activer un vérificateur de force de mot de passe pour empêcher les utilisateurs de définir des mots de passe faibles. Allez au début de ce fichier, vous pouvez trouver la ligne suivante.

$config['password_strength_driver'] = null;

Nous pouvons utiliser le pilote de force de mot de passe zxcvbn, alors changez-le en :

$config['password_strength_driver'] = 'zxcvbn';

Ajoutez la ligne suivante dans ce fichier pour autoriser uniquement les mots de passe forts.

$config['password_zxcvbn_min_score'] = 5;

Remarque : Le paramètre $config[‘password_minimum_score’] ne fonctionne pas avec le pilote zxcvbn, alors laissez-le tel quel.

Vous pouvez également définir une longueur minimale pour le mot de passe. Trouvez la ligne suivante.

$config['password_minimum_length'] = 0;

Changez-le en :

$config['password_minimum_length'] = 8;

Rappelez-vous que nous avons utilisé le schéma de mot de passe ARGON2I dans le tutoriel PostfixAdmin, nous devons donc également configurer le plugin de mot de passe pour utiliser ARGON2I. Recherchez les lignes suivantes dans le fichier.

$config['password_algorithm'] = 'clear';

Par défaut, le mot de passe sera stocké en texte clair, modifiez la valeur comme suit pour utiliser l’algorithme de mot de passe intégré de Dovecot.

$config['password_algorithm'] = 'dovecot';

Recherchez ensuite la ligne suivante, qui indique où se trouve le générateur de hachage de mot de passe de Dovecot.

$config['password_dovecotpw'] = '/usr/local/sbin/dovecotpw'; // for dovecot-1.x

Remplacez-le par ce qui suit.

$config['password_dovecotpw'] = '/usr/bin/doveadm pw -r 5';

Trouvez ensuite la ligne suivante, qui indique quel schéma de mot de passe sera utilisé.

$config['password_dovecotpw_method'] = 'CRAM-MD5';

Changez-le en :

$config['password_dovecotpw_method'] = 'ARGON2I';

Trouvez la ligne suivante.

$config['password_dovecotpw_with_method'] = false;

Remplacez faux par vrai. Cela ajoutera un préfixe {ARGON2I} au mot de passe haché, ainsi vous reconnaîtrez quel schéma de mot de passe est utilisé.

$config['password_dovecotpw_with_method'] = true;

Enregistrez et fermez le fichier. Étant donné que ce fichier contient le mot de passe de la base de données, nous ne devons autoriser que l’utilisateur www-data à lire et à écrire dans ce fichier.

sudo chown www-data:www-data /var/www/roundcube/plugins/password/config.inc.php
sudo chmod 600 /var/www/roundcube/plugins/password/config.inc.php

Désormais, les utilisateurs devraient pouvoir modifier leurs mots de passe dans l’interface de messagerie Web Roundcube.


Comment configurer les messages de vacances/absence du bureau (facultatif) :

Nous pouvons utiliser le filtre de tamis pour créer des messages de vacances/d’absence du bureau. Accédez à Roundcube Paramètres -> Filtres. Cliquez ensuite sur le bouton Créer pour créer un filtre.

Lorsque vous êtes de retour au bureau, vous pouvez activer le bouton « Filtre désactivé » et cliquer sur le bouton Enregistrer pour désactiver ce filtre.


Augmenter la limite de taille du fichier de téléchargement

Si vous utilisez PHP-FPM pour exécuter des scripts PHP, les fichiers tels que les images, les fichiers PDF téléchargés sur Roundcube ne peuvent pas dépasser 2 Mo. Pour augmenter la taille limite de téléchargement, modifiez le fichier de configuration PHP.

sudo nano /etc/php/8.1/fpm/php.ini

Trouvez la ligne suivante (ligne 846).

upload_max_filesize = 2M

Modifiez la valeur comme ci-dessous. Notez que cette valeur ne doit pas être supérieure à la limite de taille de pièce jointe définie par le serveur SMTP de Postfix.

upload_max_filesize = 50M

Trouvez ensuite la ligne suivante (ligne 694).

post_max_size = 8M

Modifiez la taille maximale des données POST que PHP acceptera.

post_max_size = 50M

Enregistrez et fermez le fichier. Vous pouvez également exécuter les deux commandes suivantes pour modifier la valeur sans ouvrir manuellement le fichier.

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /etc/php/8.1/fpm/php.ini

sudo sed -i 's/post_max_size = 8M/post_max_size = 50M/g' /etc/php/8.1/fpm/php.ini

Redémarrez ensuite PHP-FPM.

sudo systemctl restart php8.1-fpm




Il existe 3 plugins dans Roundcube pour le téléchargement de pièces jointes/fichiers :

Roundcube ne peut utiliser qu’un seul plugin pour les téléchargements de pièces jointes/fichiers. On a constaté que le plug-in database_attachment peut être source d’erreurs et vous causer des problèmes. Pour le désactiver, modifiez le fichier de configuration Roundcube.

sudo nano /var/www/roundcube/config/config.inc.php

Faites défiler jusqu’à la fin de ce fichier. Vous verrez une liste des plugins actifs. Supprimez ‘database_attachments’ de la liste. Notez que vous devez activer au moins un autre plug-in de pièce jointe, par exemple filesystem_attachments.

// ----------------------------------
// PLUGINS
// ----------------------------------
// List of active plugins (in plugins/ directory)
$config['plugins'] = ['acl', 'additional_message_headers', 'archive', 'attachment_reminder', 'autologon', 'debug_logger', 'emoticons', 'enigma', 'filesystem_attachments', 'help', 'hide_blockquote', 'http_authentication', 'identicon', 'identity_select', 'jqueryui', 'krb_authentication', 'managesieve', 'markasjunk', 'new_user_dialog', 'new_user_identity', 'newmail_notifier', 'password', 'reconnect', 'redundant_attachments', 'show_additional_headers', 'squirrelmail_usercopy', 'subscriptions_option', 'userinfo', 'vcard_attachments', 'virtuser_file', 'virtuser_query', 'zipdownload'];

Enregistrez et fermez le fichier.


Configuration de plusieurs domaines de messagerie (facultatif) :

Pour héberger plusieurs domaines de messagerie, veuillez lire l’article suivant :


Conseils de dépannage (facultatif) :

Si vous rencontrez des erreurs, vous pouvez consulter les journaux d’erreurs du serveur Web à l’adresse /var/log/apache2/roundcube_error.log et également les journaux d’erreurs Roundcube dans le répertoire /var/www/roundcube/logs/ .

Connection to Storage Server Failed (facultatif) :

Si vous voyez l’erreur Échec de la connexion au serveur de stockage lorsque vous essayez de vous connecter à RoundCube, c’est probablement parce que

Vous pouvez également essayer d’ajouter une entrée DNS personnalisée dans le fichier /etc/hosts comme décrit à l’étape 7.8 sur le serveur Roundcube, afin que Roundcube puisse résoudre correctement le nom d’hôte du serveur de messagerie.

Impossible de charger le message du serveur (facultatif) :

Si vous voyez l’erreur « Erreur interne : impossible de charger le message du serveur », c’est probablement parce que vous essayez d’ouvrir un e-mail supprimé (URL non valide). Essayez d’accéder au domaine racine de messagerie (mail.example.com) pour voir si cela fonctionne.

Le filtre de messages Sieve ne fonctionne pas ? (facultatif) :

Si vous avez suivi l’étape 3.8 pour configurer le filtre tamis à la lettre, mais que vous n’arrivez toujours pas à le faire fonctionner, vous pouvez activer le débogage dans Dovecot pour découvrir ce qui ne va pas.

sudo nano /etc/dovecot/dovecot.conf

Ajoutez la ligne suivante à la fin de ce fichier pour activer le débogage dans Dovecot.

mail_debug=yes

Enregistrez et fermez le fichier. Redémarrez ensuite Dovecot.

sudo systemctl restart dovecot

Ensuite, envoyez un e-mail de test à l’adresse e-mail de votre domaine et ouvrez le fichier journal de messagerie.

sudo nano /var/log/mail.log

Vous pouvez trouver des informations de débogage pour le filtre de messages Sieve. Par exemple, on a constaté que Dovecot était incapable d’exécuter notre script Sieve.

Jan 10 11:35:24 mail dovecot: lmtp(xiao@linuxbabe.com) Debug: sieve: Aborted running script `/var/vmail/linuxbabe.com/xiao/.dovecot.svbin'

Il s’avère que le filtre Sieve a trop de règles et certaines d’entre elles sont en conflit les unes avec les autres. On supprime ces règles contradictoires et cela fonctionne à nouveau.

Échec de la recherche temporaire (Code : 451) (facultatif) :

Si vous rencontrez cette erreur lorsque vous essayez d’envoyer un e-mail dans Roundcube, il s’agit probablement d’un problème avec votre configuration Postfix. Par exemple, certaines personnes peuvent avoir l’erreur suivante dans le fichier /var/log/mail.log .

warning: connect to pgsql server localhost: connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL: password authentication failed for user "postfixadmin"?connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL: password authentication failed for user "postfixadmin"?

Cela signifie que votre authentification par mot de passe pour la base de données Postfixadmin ne fonctionne pas.


Comment mettre à jour Roundcube (facultatif) :

C’est très simple. Par exemple, voici comment passer à Roundcube 1.5.3 après sa sortie.

Téléchargez la dernière version de Roundcube dans votre répertoire personnel.

cd ~

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.2/roundcubemail-1.6.2-complete.tar.gz

Extraire l’archive.

tar xvf roundcubemail-1.6.2-complete.tar.gz

Remplacez le propriétaire par www-data.

sudo chown www-data:www-data roundcubemail-1.6.2/ -R

Exécutez ensuite le script d’installation.

sudo roundcubemail-1.6.2/bin/installto.sh /var/www/roundcube/

Une fois que c’est fait, connectez-vous au webmail Roundcube et cliquez sur le bouton À propos pour vérifier quelle version de Rouncube vous utilisez.


Étape 8 : …7 conseils pour empêcher vos e-mails d’être marqués comme spam

-> Retour au sommaire

Dans les articles précédents, nous avons expliqué comment configurer facilement votre propre serveur de messagerie . Cependant, de nombreuses personnes ne peuvent pas envoyer leurs e-mails dans la boîte de réception de Gmail, Hotmail ou Yahoo mail, malgré un score de 10/10 sur mail-tester.com. Dans cet article, nous allons vous montrer tous les conseils que nous avons qui peuvent faire sortir votre e-mail du dossier spam des destinataires.

Remarque : Cet article est destiné aux expéditeurs d’e-mails légitimes et non aux spammeurs. Si vous envoyez du spam, votre e-mail finira par être placé dans le dossier spam, quels que soient vos efforts.


Il existe 6 types d’e-mails

Tout d’abord, vous devez comprendre quel type d’e-mail vous envoyez. Pour les besoins de cet article, on va diviser les messages électroniques en 6 catégories :

Les e-mails personnels sont généralement envoyés par une personne à ses amis, aux membres de sa famille, à ses collègues, etc. Il n’y a souvent qu’un seul destinataire.

Les e-mails transactionnels sont envoyés à partir de sites Web ou d’applications Web à leurs utilisateurs. Par exemple, un visiteur reçoit un e-mail après avoir créé un compte sur un site Web ou demande la réinitialisation du mot de passe. Il n’y a qu’un seul destinataire par email.

Marketing email/newsletter is sent by website owners to their subscribers to inform them about new blog posts, webinars, or promote products and services. There are many recipients per email. A subscriber can only reply to the list owner, but can not send emails to other subscribers.

Les e-mails de discussion de groupe sont couramment rencontrés dans le développement de logiciels open source à l’aide du logiciel de liste de diffusion Mailmain. Par exemple, la liste de diffusion du noyau Linux permet à ses abonnés de discuter du développement du noyau Linux. Un abonné peut envoyer un e-mail à tous les autres abonnés de la liste de diffusion.

Les e-mails froids et les spams sont tous deux des e-mails non sollicités. La différence est que les e-mails froids sont souvent destinés à un groupe spécifique de personnes pour vendre un service et l’expéditeur fournira un véritable service si le destinataire répond. Les spams sont envoyés à des personnes aléatoires et ce sont souvent des escroqueries.

Les spammeurs refusent toujours d’admettre qu’ils envoient du spam. La définition technique du spam est celle des e-mails en masse non sollicités. Si vous envoyez des e-mails en masse à des personnes qui ne vous ont jamais autorisé à envoyer des e-mails, vous êtes un spammeur aux yeux des fournisseurs de boîtes aux lettres. Certaines personnes utilisent plusieurs domaines pour envoyer des e-mails en masse. Il est très probable qu’il s’agisse de spammeurs, car les expéditeurs légitimes d’e-mails n’ont pas besoin d’utiliser plusieurs domaines.


Les trois grands fournisseurs d’adresse e-mail :

Les fournisseurs de boîtes aux lettres sont également appelés fournisseurs de services de boîte de réception. Parfois, les gens les appellent ISP (Internet Service Provider). En fait, les fournisseurs de haut débit et les hébergeurs peuvent également être appelés FAI. Les fournisseurs de messagerie les plus utilisés sont :


3 facteurs de délivrabilité des e-mails :

Il existe principalement 3 facteurs que les fournisseurs de boîtes aux lettres examinent lorsqu’ils décident si votre e-mail est un spam ou non.

Nous vous donnerons des astuces pour sortir du dossier spam, en respectant ces 3 facteurs. Notez qu’il faut du temps pour améliorer la réputation de votre adresse IP et de votre domaine, alors soyez patient.


Conseil n° 1 : Configurez l’authentification par e-mail et obtenez une note de 10/10

L’obtention d’une note de 10/10 mail-tester.com augmentera considérablement les chances que votre e-mail atterrisse dans la boîte de réception.

Si vos enregistrements SPF, DKIM et DMARC sont cassés, les fournisseurs de boîtes aux lettres ne peuvent pas vérifier que l’e-mail provient réellement de votre domaine. Il est très probable que votre e-mail sera placé dans le dossier spam. Même s’il est placé dans le dossier de la boîte de réception, il est courant que les fournisseurs de boîtes aux lettres affichent un avertissement aux destinataires comme ci-dessous, il est donc très important de passer la vérification SPF, DKIM et DMARC.


Conseil n° 2 : utilisez le service de relais SMTP

Si votre serveur de messagerie n’a jamais envoyé d’e-mails auparavant, votre adresse IP n’a pas de réputation (bonne ou mauvaise) et les principaux fournisseurs de boîtes aux lettres sont plus susceptibles de placer votre e-mail dans le dossier spam. Ne pas être sur une liste noire ne signifie pas que votre adresse IP a une bonne réputation, et si un bloc d’adresses IP contient de très mauvais spammeurs, cela peut affecter d’autres personnes dans le voisinage de ce bloc IP.

Les services de relais SMTP maintiennent une bonne réputation IP. Ils arrêtent les mauvais expéditeurs et développent les bons, donc l’utilisation du service de relais SMTP augmentera les chances d’atteindre la boîte de réception.


Conseil n°3 : utilisez un hébergement VPS géré par un prestataire

Si vous souhaitez utiliser votre propre serveur plutôt que des services de relais SMTP pour envoyer des e-mails, il est très important d’avoir des adresses IP propres pour envoyer des e-mails en masse légitimes. Malheureusement, les grands fournisseurs de VPS bien connus comme DigitalOcean et Vultr sont abusés par les spammeurs, et ils abuseront de tous les fournisseurs de VPS qu’ils pourront trouver. Sachez qu’il existe deux types de VPS :

Au lieu d’utiliser un VPS autogéré, il est préférable d’utiliser un VPS géré pour faire fonctionner votre serveur de messagerie. En effet, le VPS géré est configuré par le personnel de support technique de la société d’hébergement et si le client envoie du spam, il sera arrêté très rapidement, de sorte que l’adresse IP du VPS géré ne sera pas mise sur liste noire.

Le VPS géré est légèrement plus cher que le VPS autogéré, mais il reste très bon marché par rapport aux services de relais SMTP et il est vraiment rentable si vous vous souciez d’envoyer des e-mails légitimes en masse.

Un VPS ‘géré’ c’est d’ailleurs ce que propose la plateforme Juris-Tyr à travers les abonnements proposé mais notre installation et gestion est orientée pour les cabinet d’avocats ou pour les entreprises délivrant principalement des prestations de services.


Conseil n°4 : Ajoutez votre adresse IP à une liste blanche

dnswl.org est la liste blanche de messagerie publique la plus connue. Vous pouvez accéder à la page en libre-service et créer un compte sur le site Web, puis ajouter les informations de votre serveur de messagerie. Si vous êtes chanceux, l’adresse IP de votre serveur de messagerie peut être ajoutée à la liste blanche.

Après avoir créé un compte chez DNSWL, vous devez cliquer sur l’onglet DNSWL IDS pour créer un identifiant. Entrez votre nom de domaine et vérifiez la propriété du domaine. Ajoutez ensuite l’adresse IP de votre serveur de messagerie à votre ID DNSWL.

Votre adresse IP ne sera pas immédiatement ajoutée à votre ID DNSWL. Vos demandes de modification doivent être approuvées par les administrateurs DNSWL. Une fois approuvée, votre adresse IP apparaîtra dans votre ID DNSWL, ce qui signifie que l’adresse IP de votre serveur de messagerie est ajoutée à la liste blanche.

Remarque : Vous devez suivre les meilleures pratiques d’envoi d’e-mails et ne jamais envoyer de spam, sinon votre adresse IP sera supprimée de la liste blanche dnswl.org.

dnswl.org a 4 scores/fiabilité pour une adresse IP. Un score plus élevé est meilleur.

Les scores entre parenthèses sont les scores SpamAssassin qui seront appliqués à vos emails. Dans SpamAssassin, un score inférieur est meilleur.

Par défaut, votre adresse IP aura un score de 0 / aucun de fiabilité. Si vous utilisez ScalaHosting et suivez strictement les meilleures pratiques d’envoi d’e-mails décrites dans cet article, au fil du temps, votre adresse IP aura des scores/fiabilité plus élevés sur dnswl.org.

Vous pouvez vérifier votre score actuel à l’aide de la commande suivante, où 78.56.34.12 est la notation inverse de votre adresse IP.

host 78.56.34.12.list.dnswl.org

Par exemple, l’adresse IP de notre serveur de messagerie est 130.51.180.110, on exécute donc la commande suivante pour vérifier le score actuel.

host 110.180.51.130.list.dnswl.org

Le dernier chiffre de l’adresse retournée est le score dnswl. Comme vous pouvez le constater, notre score DNSW est 1.

Il n’est pas facile d’obtenir un score de 2 ou 3 sur dnswl.org. Vous aurez besoin d’années d’expérience pour y parvenir.


Conseil n° 5 : Configurez un site Web et créez des signaux d’engagement positifs

La réputation du nom de domaine est le facteur ultime qui influence les décisions des fournisseurs de boîtes aux lettres. Si votre nom de domaine jouit d’une grande réputation parmi les fournisseurs de boîtes aux lettres, vos e-mails atterriront dans la boîte de réception du destinataire, même si vous ne respectez pas strictement les normes de messagerie ou si votre adresse IP a mauvaise réputation.

Remarque : on ne suggère pas que vous devriez ignorer la construction d’une réputation IP élevée. C’est quand même important.

Les outils Gmail postmaster montrent que le nom de domaine linuxbabe.com a une excellente réputation.

Si vous avez un nouveau nom de domaine ou si vous n’avez jamais envoyé d’e-mails depuis votre nom de domaine, les grands fournisseurs de messagerie ne vous connaissent pas. Votre nom de domaine n’a aucune réputation (bonne ou mauvaise). Alors, comment faites-vous pour améliorer la réputation de votre nom de domaine ?

Il y a principalement deux éléments liés à la réputation de votre nom de domaine : la qualité du site Web et l’engagement des destinataires d’e-mails.


Qualité du site Web :

Premièrement, votre site Web peut affecter la réputation de votre nom de domaine. Ce qui suit réduira votre score de réputation.

Et les éléments suivants augmenteront votre score de réputation.


Engagement du destinataire de l’e-mail :

L’autre facteur plus important qui peut affecter la réputation de votre domaine est l’engagement des destinataires avec vos e-mails. Plus l’engagement est positif, plus la réputation de votre nom de domaine sera élevée. L’engagement positif comprend :

-L’ouverture de votre messagerie.
-En cliquant sur les liens dans votre e-mail.
-Réponse à votre e-mail.
-Ajout de votre adresse e-mail à la liste de contacts (signal d’engagement très positif)
-Déplacer votre e-mail du dossier spam vers la boîte de réception (signal d’engagement très positif)

L’engagement négatif comprend le faite de :
-Supprimer votre e-mail sans l’ouvrir.
-Cliquersur le lien de désabonnement dans votre e-mail.
-Signaler votre e-mail comme spam (signal d’engagement très négatif)

Mais vous pouvez vous demander : si mon e-mail ne parvient pas à entrer dans la boîte de réception, comment puis-je créer un engagement positif ?
Eh bien, il existe différentes manières pour différents expéditeurs d’e-mails.
On divise les expéditeurs d’e-mails en deux groupes.
-Ceux qui envoient des emails transactionnels
-Ceux qui n’envoient pas d’emails transactionnels

Si vous envoyez un e-mail transactionnel :

Si vous envoyez un e-mail transactionnel, il est très facile d’avoir un engagement positif avec le destinataire, car le destinataire s’attend à ce que vous lui envoyiez un e-mail. Sur votre site Web, vous pouvez dire au destinataire de vérifier le dossier spam et de marquer votre e-mail comme non spam. Ils sont beaucoup plus susceptibles d’ouvrir votre e-mail et de cliquer sur des liens dans l’e-mail. Au fil du temps, votre e-mail atterrira automatiquement dans la boîte de réception.
Notez que l’e-mail de confirmation d’inscription à la liste de diffusion est un e-mail transactionnel, donc si vous avez un formulaire d’inscription à la newsletter sur votre site Web, vous pouvez également dire au destinataire de vérifier le dossier spam et d’ajouter votre adresse e-mail à la liste de contacts. Les destinataires sont très susceptibles de cliquer sur le lien de confirmation dans l’e-mail.

Si vous n’envoyez pas d’e-mail transactionnel :

Si vous utilisez un serveur de messagerie auto-hébergé pour un usage personnel uniquement, il vous est plus difficile de créer l’engagement positif initial, mais vous pouvez :

ENfin, vous pouvez utiliser un service d’échauffement par e-mail pour améliorer automatiquement votre réputation !

Si vous envoyez des e-mails froids, vous devez faire très attention à la manière dont vous approchez vos destinataires. Ils ne vous ont pas demandé votre e-mail et si vous leur envoyez encore et encore des e-mails, ils sont très susceptibles de signaler votre e-mail comme spam. Ne soyez pas insistant. Si le destinataire ne répond pas après 2 ou 3 e-mails, arrêtez de lui envoyer des e-mails.


Astuce #6 : Ne changez pas le nom d’hôte de votre serveur de messagerie ou le nom de domaine initial

Si vous modifiez une seule lettre dans le sous-domaine, les filtres de messagerie des fournisseurs de messagerie vous traiteront différemment et vous perdrez la réputation de domaine que vous avez bâtie. Les sous-domaines héritent d’une partie de la réputation de votre domaine apex (un domaine qui ne contient pas de sous-domaine), mais pas de la totalité. Chaque sous-domaine a sa propre réputation. Notez que chaque adresse e-mail d’un même nom de domaine a également sa propre réputation.


Astuce #7 : N’envoyez jamais de spam

Enfin et surtout, vous ne devez jamais envoyer de spam. Si vous envoyez du spam, votre e-mail finira par être placé dans le dossier spam et même carrément rejeté, quels que soient vos efforts. Et l’adresse IP de votre serveur sera sur liste noire. La réputation de votre domaine sera également endommagée. Certaines personnes ne savent pas qu’elles envoient du spam alors qu’elles le font réellement.

Le spam est également connu sous le nom d’e-mails en masse non sollicités. Ce sont deux conditions pour le spam.

Un exemple d’e-mail en masse légitime est lorsque vous utilisez un formulaire de double opt-in sur votre site Web pour créer une liste de diffusion. Le visiteur devra cliquer sur le lien de confirmation pour s’inscrire à votre liste de diffusion.


Conseils pour les expéditeurs d’e-mails de newsletter/marketing :

Outre les conseils généraux ci-dessus, voici quelques conseils spécifiques pour les expéditeurs d’e-mails de newsletter/marketing.


Limitation du débit SMTP (facultatif) :

Nous pouvons utiliser un service de stratégie Postfix appelé policyd-rate-limit.

sudo apt install policyd-rate-limit

Modifiez le fichier de configuration.

sudo nano /etc/policyd-rate-limit.yaml

Trouvez les lignes suivantes.

limits:
    - [10, 60] # limit to 10 mails by minutes
    - [150, 86400] # limits to 150 mails by days

Les limites par défaut sont trop restrictives. On utilise le paramètre suivant, donc notre serveur SMTP Postfix peut envoyer jusqu’à 20 000 e-mails par heure.

limits:
    - [333, 60] # limit to 333 mails per minute

Recherchez également les deux lignes suivantes.

limit_by_sender: False
limit_by_ip: False

Et changez la valeur en True.

limit_by_sender: True
limit_by_ip: True

Enregistrez et fermez le fichier. Ensuite, modifiez le fichier utils.py.

sudo nano /usr/lib/python3/dist-packages/policyd_rate_limit/utils.py

Trouvez la ligne suivante. (Ligne 88)

self._config = yaml.load(f)

Dans Python 3, l’appel de la fonction yaml.load() sans Loader=… est obsolète, nous devons donc le remplacer par :

self._config = yaml.load(f, Loader=yaml.SafeLoader)

Enregistrez et fermez le fichier. Modifiez ensuite le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Dites à Postfix d’utiliser le service de limitation de débit avec le paramètre suivant. Le check_policy_service devrait être la première restriction.

smtpd_recipient_restrictions =
    check_policy_service { unix:ratelimit/policy, default_action=DUNNO },
    permit_mynetworks,
    permit_sasl_authenticated,
    ...
    ...

Enregistrez et fermez le fichier. Modifiez ensuite le fichier Postfix master.cf.

sudo nano /etc/postfix/master.cf

Recherchez la section soumission et smtps . Changez :

-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

en :

-o smtpd_sender_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix et le serveur de politique.

sudo systemctl restart postfix policyd-rate-limit

Envoyez maintenant un e-mail de test à partir de votre client de messagerie et vérifiez le journal du policy-rate-limit.

sudo journalctl -eu policyd-rate-limit

Si tout fonctionne, vous devriez voir que policd-rate-limit a trouvé le sasl_username et insère un identifiant pour le sasl_username.

Taux de spam Gmail contre taux de placement de dossiers de spam (facultatif) :

Le taux de spam Gmail correspond au pourcentage d’e-mails marqués comme spam par les utilisateurs par rapport aux e-mails envoyés dans la boîte de réception des utilisateurs actifs.

Gmail spam rate = le nombre d’e-mails marqués comme spam par les utilisateurs / le nombre d’e-mails qui atterrissent dans le dossier Boîte de réception

Spam folder placement rate = le nombre d’e-mails qui atterrissent dans le dossier spam / le nombre total d’e-mails envoyés aux utilisateurs

Le taux de spam Gmail est le meilleur outil pour évaluer l’engagement des utilisateurs. Si le taux de spam de Gmail est faible (moins de 1 %), la réputation de votre domaine augmentera automatiquement. S’il est élevé comme 4%, la réputation de votre domaine diminuera. Les spammeurs ont des taux de spam horribles (6 % ~ 20 %), comme le montre la capture d’écran suivante.

Données sur le taux de spam pour la campagne de courrier électronique d’un spammeur

Si vous êtes un spammeur, veuillez arrêter. Vous n’obtiendrez jamais de bons résultats et vous tomberez probablement en dépression.


Étape 9 : Configurer Amavis et ClamAV sur le serveur de messagerie (facultatif)

-> Retour au sommaire

Amavis (A Mail Virus Scanner) est une interface hautes performances entre un agent de transfert de messages (MTA) tel que Postfix et des filtres de contenu. Un filtre de contenu est un programme qui analyse les en-têtes et le corps d’un message électronique et prend généralement des mesures en fonction de ce qu’il trouve. Les exemples les plus courants sont le scanner de virus ClamAV et SpamAssassin.

Amavis parle le protocole SMTP standard et peut également utiliser l’interface Sendmail milter. Il est couramment utilisé pour

Conditions préalables :

Vous devez avoir terminé au moins l’étape 1 (instllation du serveur SMTP Postfix) et l’étape 2 (installation du serveur Dovecot IMAP).

Attention : Amavis et ClamAV nécessitent une bonne quantité de RAM. Assurez-vous d’avoir au moins 1,3 Go de RAM libre sur votre serveur avant d’installer Amavis et ClamAV. L’ensemble de la pile de serveurs de messagerie (Postfix, Dovecot, Amavis, ClamAV, SpamAssassin, OpenDKIM, MySQL/MariaDB, PostfixAdmin et Roundcube Webmail) nécessite au moins 3 Go de RAM pour fonctionner correctement. Si votre RAM est épuisée, vous allez avoir des problèmes comme le serveur de messagerie qui se déconnecte ou ne répond pas.


Étape 9.1 : Installer Amavis sur Ubuntu

Amvis est disponible à partir du référentiel Ubuntu par défaut, exécutez donc la commande suivante pour l’installer.

sudo apt install amavisd-new -y

Une fois installé, il démarre automatiquement. Vous pouvez vérifier son état avec :

systemctl status amavis

Sortie :

● amavis.service - LSB: Starts amavisd-new mailfilter
     Loaded: loaded (/etc/init.d/amavis; generated)
     Active: active (running) since Fri 2020-08-07 15:43:40 HKT; 1min 1s ago
       Docs: man:systemd-sysv-generator(8)
      Tasks: 3 (limit: 9451)
     Memory: 75.4M
     CGroup: /system.slice/amavis.service
             ├─1794260 /usr/sbin/amavisd-new (master)
             ├─1794263 /usr/sbin/amavisd-new (virgin child)
             └─1794264 /usr/sbin/amavisd-new (virgin child)

S’il ne fonctionne pas, vous pouvez le démarrer avec :

sudo systemctl start amavis

Activer le démarrage automatique au démarrage.

sudo systemctl enable amavis

Par défaut, il écoute sur 127.0.0.1:10024, comme on peut le voir avec :

sudo netstat -lnpt | grep amavis

Et il s’exécute en tant qu’utilisateur amavis. Pour vérifier le numéro de version, exécutez

amavisd-new -V

Sortie :

amavisd-new-2.11.0 (20160426)

Pour vérifier les journaux d’Amavis, vous pouvez exécuter

sudo journalctl -eu amavis

Les virus se propagent généralement sous forme de pièces jointes aux messages électroniques. Installez les packages suivants pour Amavis afin d’extraire et d’analyser les fichiers d’archive dans les e-mails tels que .7z, .cab, .doc, .exe, .iso, .jar et .rar.

sudo apt install arj bzip2 cabextract cpio rpm2cpio file gzip lhasa nomarch pax rar unrar p7zip-full unzip zip lrzip lzip liblz4-tool lzop unrar-free

Notez que si votre serveur n’utilise pas un nom de domaine complet (FQDN) comme nom d’hôte, Amavis peut ne pas démarrer. Et le nom d’hôte du système d’exploitation peut changer, il est donc recommandé de définir un nom d’hôte valide directement dans le fichier de configuration Amavis.

sudo nano /etc/amavis/conf.d/05-node_id

Trouvez la ligne suivante.

#$myhostname = "mail.example.com";

Supprimez le caractère de commentaire (#) et remplacez mail.example.com par votre véritable nom d’hôte (mail.exemple.com).

$myhostname = "mail.exemple.com";

Enregistrez et fermez le fichier. Redémarrez Amavis pour que les modifications prennent effet.

sudo systemctl restart amavis

Étape 9.2 : Intégrer le serveur SMTP Postfix avec Amavis

Amavisfonctionne comme un proxy SMTP. Le courrier électronique lui est acheminé via SMTP, traité et renvoyé au MTA via une nouvelle connexion SMTP.

Modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante à la fin du fichier. Cela indique à Postfix d’activer le filtrage de contenu en envoyant chaque e-mail entrant à Amavis, qui écoute sur 127.0.0.1:10024.

content_filter = smtp-amavis:[127.0.0.1]:10024

Ajoutez également la ligne suivante.

smtpd_proxy_options = speed_adjust

Cela retardera la connexion de Postfix au filtre de contenu jusqu’à ce que l’intégralité de l’e-mail ait été reçue, ce qui peut empêcher les filtres de contenu de faire perdre du temps et des ressources aux clients SMTP lents.

Enregistrez et fermez le fichier. Modifiez ensuite le fichier master.cf.

sudo nano /etc/postfix/master.cf

Ajoutez les lignes suivantes à la fin du fichier. Cela indique à Postfix d’utiliser un composant client SMTP spécial appelé smtp-amavis pour envoyer les messages électroniques à Amavis. Veuillez autoriser au moins un caractère d’espacement (tabulation ou barre d’espace) avant chaque -o. Dans les configurations postfixées, un caractère d’espacement précédent signifie que cette ligne est la continuation de la ligne précédente.

smtp-amavis   unix   -   -   n   -   2   smtp
    -o syslog_name=postfix/amavis
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20
    -o smtp_tls_security_level=none

Ajoutez ensuite les lignes suivantes à la fin du fichier. Cela indique à Postfix d’exécuter un service smtpd supplémentaire en écoutant 127.0.0.1:10025 pour recevoir les messages électroniques d’Amavis.

127.0.0.1:10025   inet   n    -     n     -     -    smtpd
    -o syslog_name=postfix/10025
    -o content_filter=
    -o mynetworks_style=host
    -o mynetworks=127.0.0.0/8
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o strict_rfc821_envelopes=yes
    -o smtp_tls_security_level=none
    -o smtpd_tls_security_level=none
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_end_of_data_restrictions=
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

Enregistrez et fermez le fichier. Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl restart postfix

Étape 9.3 : Intégrer Amavis à ClamAV

Maintenant que Postfix peut transmettre les e-mails entrants à Amavis, nous devons installer le scanner de virus ClamAV et l’intégrer à Amavis, afin que les e-mails entrants puissent être analysés par ClamAV.

Installez ClamAV sur Ubuntu.

sudo apt install clamav clamav-daemon

Il y aura deux services systemd installés par ClamAV :

Tout d’abord, vérifiez l’état de clamav-freshclam.service.

systemctl status clamav-freshclam

Comme vous pouvez le voir, il est actif (en cours d’exécution) et utilise 217,6 Mo de RAM sur le serveur de messagerie. Vérifiez ensuite le journal/journal.

sudo journalctl -eu clamav-freshclam

Sortie :

Astuce : si la commande ci-dessus ne se ferme pas immédiatement, appuyez sur la touche Q pour la faire quitter.

Nous pouvons voir que freshclam a téléchargé 3 bases de données virales. CVD signifie ClamAV Virus Database.

Cependant, clamd n’a pas été averti car freshclam ne peut pas se connecter à clamd via /var/run/clamav/clamd.ctl. Vérifiez l’état de clamav-daemon.service.

systemctl status clamav-daemon

Sortie :

Comme vous pouvez le voir, il n’a pas pu démarrer car une condition n’était pas remplie. Dans le fichier /lib/systemd/system/clamav-daemon.service , il y a deux conditions :

ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc}
ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc}

Le clamav-daemon.service n’a pas pu démarrer car main.cvd et daily.cvd n’ont pas encore été téléchargés au démarrage. Il nous suffit donc de redémarrer ce service.

sudo systemctl restart clamav-daemon

Maintenant, il devrait fonctionner. Au fait, il utilise 731,4 Mo de RAM sur notre serveur de messagerie. Si votre serveur de messagerie ne dispose pas de suffisamment de RAM, le service échouera.

systemctl status clamav-daemon.service

Le clamav-freshclam.service vérifiera les mises à jour de la base de données virale ClamAV une fois par heure.

Nous devons maintenant activer la vérification des virus dans Amavis.

sudo nano /etc/amavis/conf.d/15-content_filter_mode

Décommentez les lignes suivantes pour activer la vérification antivirus.

#@bypass_virus_checks_maps = (
# \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

Enregistrez et fermez le fichier. Le fichier /etc/amavis/conf.d/15-av_scanners contient de nombreux analyseurs antivirus. ClamAV est la valeur par défaut. Amavis appellera ClamAV via le socket Unix /var/run/clamav/clamd.ctl. Nous devons ajouter l’utilisateur clamav au groupe amavis.

sudo adduser clamav amavis

Redémarrez ensuite les démons Amavis et ClamAV pour que les modifications prennent effet.

sudo systemctl restart amavis clamav-daemon

Vérifiez les journaux (facultatif) :

sudo journalctl -eu amavis

Vous pouvez voir qu’Amavis utilise maintenant ClamAV pour analyser les virus.

Aug 08 17:26:19 mail.linuxbabe.com amavis[1233432]: Using primary internal av scanner code for ClamAV-clamd
Aug 08 17:26:19 mail.linuxbabe.com amavis[1233432]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan

Maintenant, si vous envoyez un e-mail à partir d’autres serveurs de messagerie comme Gmail à votre propre serveur de messagerie et vérifiez les en-têtes d’e-mail, vous pouvez trouver une ligne comme ci-dessous, qui indique que cet e-mail a été scanné par Amavis.

X-Virus-Scanned: Debian amavisd-new at linuxbabe.com

Vous devriez également vérifier le journal de messagerie (/var/log/mail.log) pour trouver s’il y a des erreurs.


Étape 9.4 : Utilisez un port dédié pour les soumissions par e-mail

ClamAV peut désormais analyser les e-mails entrants et sortants. Amavis écoute sur le port 10024 les messages électroniques entrants et sortants. Cependant, il est recommandé d’utiliser un port différent, tel que 10026, pour les envois par e-mail d’utilisateurs authentifiés. Modifiez le fichier de configuration Amavis.

sudo nano /etc/amavis/conf.d/50-user

Les paramètres personnalisés doivent être ajoutés entre use strict ; et 1; doubler. Par défaut, Amavis n’écoute que sur le port 10024. Ajoutez la ligne suivante pour qu’il écoute également sur le port 10026.

$inet_socket_port = [10024,10026];

Ajoutez ensuite la ligne suivante, qui définit la stratégie « ORIGINATING » pour le port 10026.

$interface_policy{'10026'} = 'ORIGINATING';

Ensuite, ajoutez les lignes suivantes, qui définissent la politique « ORIGINATING ».

$policy_bank{'ORIGINATING'} = {  # mail supposedly originating from our users
  originating => 1,  # declare that mail was submitted by our smtp client
  allow_disclaimers => 1,  # enables disclaimer insertion if available

  # notify administrator of locally originating malware
  virus_admin_maps => ["virusalert\@$mydomain"],
  spam_admin_maps  => ["virusalert\@$mydomain"],
  warnbadhsender   => 1,

  # force MTA conversion to 7-bit (e.g. before DKIM signing)
  smtpd_discard_ehlo_keywords => ['8BITMIME'],
  bypass_banned_checks_maps => [1],  # allow sending any file names and types
  terminate_dsn_on_notify_success => 0,  # don't remove NOTIFY=SUCCESS option
  $undecipherable_subject_tag = '***Encrypted Message***',
};

Enregistrez et fermez le fichier. Redémarrez Amavis.

sudo systemctl restart amavis

Vérifiez son état pour voir si le redémarrage a réussi (facultatif) :

systemctl status amavis

Ensuite, éditez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/master.cf

Ajoutez la ligne suivante au service de soumission, afin que les e-mails des clients SMTP authentifiés soient transmis à Amavis écoutant sur le port 10026. Cette ligne remplacera (-o) le paramètre content_filter dans le fichier /etc/postfix/main.cf que nous avons ajouté dans étape 2.

 -o content_filter=smtp-amavis:[127.0.0.1]:10026

Comme ça:

Si vous avez activé le service smtps pour les utilisateurs de Microsoft Outlook, vous devez également ajouter cette ligne au service smtps.

Enregistrez et fermez le fichier. Redémarrez Postfix pour que les modifications prennent effet.

sudo systemctl restart postfix

Vérifiez son état pour voir si le redémarrage a réussi.

systemctl status postfix

Étape 9.5 : Recevoir une alerte en cas de découverte de virus

Vous devez créer une adresse e-mail virusalert@votre-domaine.com pour recevoir les alertes de virus de ClamAV. Notez que vous devez créer une véritable adresse e-mail au lieu de créer un alias. ClamAV contournera Postfix et soumettra les e-mails d’alerte directement à Dovecot, qui n’est pas configuré pour interroger les alias dans la base de données PostfixAdmin.

Filtrage anti-spam dans Amavis :

Remarque : Si vous avez installé ou suivi ce tutoriel SpamAssassin , vous n’avez pas besoin d’activer la vérification des spams dans Amavis. Si vous l’activez, chaque email sera vérifié deux fois par SpamAssassin.

Pour activer la vérification des spams dans Amavis, installez SpamAssassin et les packages associés.

sudo apt install spamassassin libnet-dns-perl libmail-spf-perl pyzor razor

Modifier le fichier de configuration.

sudo nano /etc/amavis/conf.d/15-content_filter_mode

Décommentez les lignes suivantes pour activer la vérification anti-spam.

#@bypass_spam_checks_maps = (
#   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Enregistrez et fermez le fichier. Redémarrez ensuite Amavis.

sudo systemctl restart amavis
DKIM via Amavis:

OpenDKIM et Amavis sont deux logiciels courants capables de signer et de vérifier DKIM sous Linux. Nous préférons utiliser OpenDKIM parce que ça fonctionne mieux avec OpenDMARC. Nous n’expliquerons donc pas comment signer votre e-mail avec DKIM dans Amavis.

Par défaut, Amavis peut vérifier la signature DKIM des messages électroniques entrants. Si vous avez OpenDKIM en cours d’exécution sur votre serveur de messagerie, vous pouvez désactiver la vérification DKIM dans Amavis.

sudo nano /etc/amavis/conf.d/21-ubuntu_defaults

Recherchez la ligne suivante et remplacez 1 par 0, afin qu’Amavis ne vérifie pas les signatures DKIM.

$enable_dkim_verification = 1;

Enregistrez et fermez le fichier. Redémarrez ensuite Amavis.

sudo systemctl restart amavis

Lors de la réception d’e-mails entrants, Postfix appellera OpenDKIM via l’interface sendmail milter pour vérifier les signatures DKIM, puis transmettra l’e-mail à Amavis pour la vérification des virus. Lors de l’envoi d’e-mails sortants, Postfix appellera OpenDKIM pour signer les e-mails, puis les transmettra à Amavis pour la vérification des virus.

Améliorer les performances d’Amavis (facultatif) :

Par défaut, Amavis exécute 2 processus. Si vous voyez les lignes suivantes dans le journal de messagerie (/var/log/mail.log), cela signifie qu’Amavis ne peut pas traiter les e-mails assez rapidement.

postfix/qmgr[1619188]: warning: mail for [127.0.0.1]:10024 is using up 4001 of 4008 active queue entries
postfix/qmgr[1619188]: warning: you may need to reduce smtp-amavis connect and helo timeouts
postfix/qmgr[1619188]: warning: so that Postfix quickly skips unavailable hosts
postfix/qmgr[1619188]: warning: you may need to increase the main.cf minimal_backoff_time and maximal_backoff_time
postfix/qmgr[1619188]: warning: so that Postfix wastes less time on undeliverable mail
mail postfix/qmgr[1619188]: warning: you may need to increase the master.cf smtp-amavis process limit
mail postfix/qmgr[1619188]: warning: please avoid flushing the whole queue when you have
mail postfix/qmgr[1619188]: warning: lots of deferred mail, that is bad for performance

Pour améliorer les performances, modifiez le fichier de configuration Amavis.

sudo nano /etc/amavis/conf.d/50-user

Ajoutez la ligne suivante dans le fichier entre use strict ; et 1; doubler. Cela obligera Amavis à exécuter 4 processus. Si vous avez 10 cœurs de processeur, vous pouvez passer de 4 à 10. Notez que l’exécution de plus de 10 processus Amavis a peu d’effet sur les performances.

$max_servers = 4;

Enregistrez et fermez le fichier. Modifiez ensuite le fichier de configuration maître Postifx.

sudo nano /etc/postfix/master.cf

Recherchez la définition de service smtp-amavis et modifiez la limite de processus de 2 à 4.

smtp-amavis   unix   -   -   n   -   4   smtp
    -o syslog_name=postfix/amavis
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20
    -o smtp_tls_security_level=none

Enregistrez et fermez le fichier. Redémarrez ensuite Amavis et Postfix pour que les modifications prennent effet.

sudo systemctl restart amavis postfix

Exécutez maintenant la commande suivante. Vous devriez voir qu’il y a maintenant 4 processus Amavis.

sudo amavisd-nanny

Appuyez sur Ctrl+C pour arrêter amavisd-nanny.

Ignorer la vérification des virus pour vos newsletters (facultatif) :

Si vous utilisez votre serveur de messagerie pour envoyer des newsletters et que vous activez Amavis et ClamAV, de nombreuses ressources CPU et RAM seront utilisées pour la vérification antivirus lorsque vous envoyez des newsletters à vos abonnés. Cela pourrait empêcher votre serveur de messagerie de répondre. Vous pouvez ignorer la vérification antivirus de vos newsletters en utilisant la méthode ci-dessous.

Edit the Postfix master configuration file.

sudo nano /etc/postfix/master.cf

Ajoutez les lignes suivantes au début de ce fichier. Cela activera smtpd sur le port 2525 de l’hôte local et pourra accepter les connexions client initiées à partir du même serveur. Si un autre processus écoute sur le port 2525, vous pouvez remplacer 127.0.0.1:2525 par autre chose, comme 127.0.0.1:2552. Notez que le paramètre content_filter est défini sur aucun, ce qui signifie que les e-mails ne seront pas analysés par ClamAV.

127.0.0.1:2525      inet  n       -       -       -       1       smtpd
  -o syslog_name=postfix/2525
  -o postscreen_greet_action=ignore
  -o content_filter=

Ajoutez ensuite les lignes suivantes à la fin de ce fichier. Remplacez 12.34.56.78 par l’adresse IP publique du serveur de messagerie. Cela créera un autre service de soumission Postfix écoutant sur le port 10587. Ceci est pour les connexions client d’un autre serveur.

12.34.56.78:10587     inet     n    -    y    -    -    smtpd
  -o syslog_name=postfix/10587
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o content_filter=

Enregistrez et fermez le fichier. Ensuite, redémarrez postfix.

sudo systemctl restart postfix

Si votre application de newsletter s’exécute sur le serveur de messagerie, spécifiez 127.0.0.1:2525 comme hôte SMTP, sans authentification SMTP. Si votre application de newsletter s’exécute sur un autre serveur, spécifiez 12.34.56.78:10587 comme hôte SMTP, avec authentification SMTP.

Erreurs (facultatif) :

Si votre serveur SMTP Postfix ne peut pas envoyer d’e-mails sortants et que vous trouvez le message d’erreur suivant dans le journal de messagerie (/var/log/mail.log),

relay=none, delay=239, delays=239/0.04/0/0, dsn=4.3.0, status=deferred (server unavailable or unable to receive mail)

il se peut qu’amavis ne soit pas en cours d’exécution, vous devez donc vérifier son statut :

sudo systemctl status amavis

Vous pouvez le redémarrer avec :

sudo systemctl restart amavis

Une autre cause de cette erreur est que vous appliquez la connexion TLS pour Postfix lors de l’envoi d’e-mails sortants avec le paramètre suivant dans le fichier /etc/postfix/main.cf.

smtp_tls_security_level = enforce

Étant donné que Postfix ne peut pas établir de connexion TLS à Amavis, l’e-mail est donc différé. Vous devez utiliser le paramètre suivant.

smtp_tls_security_level = may

Redémarrez ensuite Postfix.


Utilisation de ClamAV pour analyser les virus pour le système de fichiers Linux :

Bien que le sujet principal de cet article soit l’analyse antivirus des e-mails, puisque ClamAV est installé sur le serveur, pourquoi ne pas l’utiliser pour analyser les virus pour d’autres fichiers ?

Tout d’abord, éditez le fichier de configuration ClamAV.

sudo nano /etc/clamav/clamd.conf

Trouvez la ligne suivante :

MaxDirectoryRecursion 15

Les répertoires de profondeur maximale par défaut analysés par ClamAV sont de 15, vous voudrez probablement le changer en un nombre plus grand pour éviter l’avertissement « limite de récursivité des répertoires atteinte ».

MaxDirectoryRecursion 30

Trouvez ensuite les deux lignes suivantes.

MaxScanSize 100M
MaxFileSize 25M

La taille d’analyse maximale par défaut est de 100 Mo et la taille de fichier maximale est de 25 Mo. Il est probable que votre serveur contienne des fichiers de plus de 100 Mo. La configuration par défaut produira les erreurs suivantes lorsque la taille du fichier dépasse la limite.

LibClamAV Warning: PNG: Unexpected early end-of-file.
LibClamAV Warning: cli_scanxz: decompress file size exceeds limits - only scanning 27262976 bytes

Vous pouvez augmenter la taille de l’analyse comme :

MaxScanSize 2048M
MaxFileSize 2048M

Linux contient de nombreux fichiers spéciaux dans les répertoires  /proc/,  /sys/,  /run/,  /dev/,  /snap/  et  /var/lib/lxcfs/cgroup/  qui ne doivent pas être analysés. Vous devez donc les exclure de ClamAV. en ajoutant les lignes suivantes à la fin de ce fichier.

ExcludePath ^/proc
ExcludePath ^/sys
ExcludePath ^/run
ExcludePath ^/dev
ExcludePath ^/snap
ExcludePath ^/var/lib/lxcfs/cgroup

Enregistrez et fermez le fichier. Redémarrez ensuite clamav-daemon.service pour que les modifications prennent effet.

sudo systemctl restart clamav-daemon

Attendez quelques secondes que clamav-daemon.service termine le redémarrage. Ensuite, vous pouvez commencer à numériser avec :

sudo clamdscan --fdpass /

Cela analysera l’intégralité du système de fichiers Linux, à l’exclusion des répertoires mentionnés précédemment. Pour que ClamAV analyse automatiquement le système de fichiers, modifiez le fichier crontab de l’utilisateur root.

sudo crontab -e

Ajoutez la ligne suivante à ce fichier. ClamAV analysera l’intégralité du système de fichiers à 5h10 tous les jours.

10 5 * * * /usr/bin/clamdscan --fdpass /

Enregistrez et fermez le fichier.

Remarque n° 1 : Il existe un autre utilitaire appelé clamscan qui peut également être utilisé pour l’analyse antivirus. Cependant, clamscan n’utilise pas la base de données de définitions de virus déjà chargée en mémoire. Il chargera à nouveau une copie distincte de la base de données de définitions de virus dans la mémoire, gaspillant les ressources du serveur.clamscan est également plus lent que clamdscan, donc on ne le recommande pas.

Remarque n°2 : S’il y a un grand nombre de fichiers sur votre serveur, clamdscan utilisera beaucoup de ressources CPU.


Bravo ! Vous venez de terminer le chapitre le plus complexe de ce tutoriel !


Passer à la phase 8 : Installation du logiciel de facturation InvoiceNinja


L’installation vous semble un peu complexe ou longue à réaliser ?

Consultez nos propositions :

Vous avez un peu de temps et vous souhaitez apprendre comment installer un serveur ?

On continue !


Passer à la phase 8 : Installation de InvoiceNinja

© L’auteur de ce didacticiel est Timo RAINIO.
Une partie de ce didacticiel a été réalisée en reprenant certains tutoriels publiés sur les sites linuxbabe.com, linuxlink.com en les traduisant en langue française et en les adaptant pour l’installation selon la configuration de la plateforme Juris-Tyr (Ubuntu 22.04, LAMP) , ainsi que depuis les sites de la documentation officielle des logiciels opensource concernés (Nextcloud) (InvoiceNinja) et/ou de Github (pdf signature). Ce didacticiel peut être repris en intégralité seulement, et à condition d’indiquer sur le contenu repris la source : https://juris-tyr.com et de nous informer préalablement par e-mail.


Des observations ou des questions ?

Laisser un commentaire

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