Aujourd’hui, les fournisseurs de boîtes mail ont tous des anti-spams. Certains se contentent de déplacer le mail dans un dossier « spam » mais d’autres suppriment purement et simplement le mail. Pour contrer ce problème, les serveurs d’envoi doivent montrer patte blanche.

Prérequis :

  • Un serveur VPS Linux avec accès à internet
  • Un nom de domaine

Ici, nous utiliserons un VPS Debian 7 et un domaine OVH.

Installation de Postfix et de mailutils

Postfix sera notre serveur d’envoi de mail.

Installer Postfix

sudo apt-get install postfix

Pendant l’installation, on nous demande quel type de configuration on souhaite mettre en place. Choisir « Internet Site » qui est une configuration basique sans redirection vers d’autres serveurs. Puis il nous est demandé le nom de domaine du serveur.

Configuration de Postfix

Installer & Utilisation de mailutils

sudo apt-get install mailutils

Ce paquet permet d’envoyer des mails via commande. Pour envoyer un mail :

echo "Contenu du mail" | mail -s "sujet du mail" [email protected]

Configuration

Tout d’abord il est nécessaire de dire au VPS sur quel domaine il se trouve, pour cela taper la commande :

sudo echo "domaine.com" > /etc/hostname

Redémarrer le service en tapant la commande :

sudo service hostname.sh start

Pour vérifier la prise en compte de la configuration taper la commande :

hostname

SPF

Qu’est-ce que SPF ?

SMTP ne possède pas de dispositif permettant de s’assurer de l’identité de l’expéditeur. SPF (Sender Policy Framework) vise donc à réduire les usurpations d’identité, en publiant dans le DNS un enregistrement de type TXT qui indique les adresses IP autorisées à utiliser le serveur SMTP. SPF est donc un système de vérification de l’expéditeur. Développé pour réduire les spams, il permet de vérifier qu’une adresse mail n’est pas usurpée.

Schéma du fonctionnement de SPF

Mise en place de SPF

La mise en place de SPF se fait dans le gestionnaire du nom de domaine. Pour OVH, il faut se rendre dans la partie « Zone DNS », cliquer sur le bouton « Ajouter une entrée », sélectionner le champ DNS de type SPF et entrer dans le champ « a » le nom de domaine. Une nouvelle entrée est alors ajoutée ayant pour valeur :

v=spf1 a a:domaine.com -all

DKIM

Qu’est-ce que DKIM ?

DKIM (DomainKeys Identified Mail) est une norme d’authentification fiable du nom de domaine de l’expéditeur d’un courrier électronique. Elle constitue une protection efficace contre le spam et l’hameçonnage. DKIM utilise une signature cryptographique pour vérifier l’authenticité du domaine expéditeur.

Le serveur d’envoi dispose d’une paire de clés RSA et utilise la clé privée pour signer les emails sortants. La clé publique est diffusée via DNS à quiconque veut vérifier la signature d’un email venant de ce serveur d’envoi. Le destinataire d’un email signé via DKIM ne verra pas la différence avec un email classique.

Schéma du fonctionnement de DKIM

Mise en place de DKIM

Tout d’abord, il faut installer le paquet OpenDKIM grâce à la commande :

sudo apt-get install opendkim opendkim-tools

Ensuite, nous allons indiquer quel port utilisera OpenDKIM à Postfix. Taper la commande :

sudo vi /etc/postfix/main.cf

et ajouter les lignes :

milter_default_action = accept

milter_protocol = 2

smtpd_milters = inet:localhost:12345

non_smtpd_milters = inet:localhost:12345

Pour indiquer le port que devra utiliser OpenDKIM, on ouvre le fichier « /etc/default/opendkim » et y remplace le contenu par cette ligne :

SOCKET="inet:12345@localhost"

Celle-ci permet d’indiquer à OpenDKIM quel port il doit utiliser.

Créer le dossier « opendkim » à l’aide de la commande « mkdir /etc/opendkim », ce dossier contiendra certains fichiers de configuration et les clés d’OpenDKIM.

Puis il faut indiquer les hôtes de confiance dans le fichier « sudo vi /etc/opendkim/TrustedHosts » pour cela, ajouter la ligne :

*.domaine.com

Nous allons maintenant indiquer à OpenDKIM quel fichier clé doit être utilisé pour notre domaine, pour cela ouvrir le fichier « /etc/opendkim/KeyTable » à l’aide de la commande « sudo vi /etc/opendkim/KeyTable » et y ajouter la ligne : « mail._domainkey.domaine.com domaine.com:mail:/etc/opendkim/keys/domaine.com/mail.private ».

Nous allons assurer la liaison de chaque adresse e-mail vers son domaine correspondant, pour cela il faut ouvrir le fichier « sudo vi /etc/opendkim/SigningTable » et y entrer la ligne :

*@domaine.com mail._domainkey.domaine.com

mail._domainkey.domaine.com sera l’enregistrement DNS de DKIM.

Le dernier fichier d’OpenDKIM à modifier est « /etc/opendkim.conf ». Celui-ci va nous permettre de modifier les paramètres globaux d’OpenDKIM. Pour commencer, indiquer votre nom de domaine dans le champ « Domain », ensuite vérifier que le mode est bien sur « sv », le champ selector doit contenir le nom du sous-domaine DNS DKIM (pour nous « mail._domainkey »), puis modifier le champ KeyFile en :

/etc/opendkim/keys/domaine.com/private.private

Enfin, il faut indiquer à OpenDKIM où se trouvent les fichiers créés précédemment à l’aide des lignes suivantes :

# Our KeyTable and SigningTable
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable

# Trusted Hosts
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts

Génération des clés DKIM

Nous allons maintenant générer la paire de clés DKIM grâce aux commandes suivantes :

cd /etc/opendkim/keys
mkdir domaine.com
cd domaine.com
opendkim-genkey -s mail -d domaine.com
chown opendkim:opendkim mail.private
cat /etc/opendkim/keys/domaine.com/mail.txt

Les données affichées sont celles qui devront être enregistrées dans l’enregistrement DNS DKIM.

Une fois les configurations terminées, redémarrer les services OpenDKIM et Postfix à l’aide des commandes :

/etc/init.d/opendkim restart
/etc/init.d/postfix restart

Enregistrement du champ DNS

Sur le panel d’administration d’OVH, se rendre dans la zone DNS et cliquer sur le bouton « Ajouter une entrée ». Sélectionner TXT et copier le contenu entre les guillemets dans le champ valeur. Ensuite, copier le nom du sous-domaine dans le champ sous-domaine d’OVH, pour nous « mail._domainkey ». Ces informations sont disponibles dans le fichier « /etc/opendkim/keys/domaine.com/mail.txt ».

MX

Qu’est-ce que MX ?

MX (Mail eXchanger) permet de rediriger des emails en direction de votre serveur vers un autre domaine. Il s’agit donc d’un système pour la réception des emails. Néanmoins, il est conseillé de le mettre en place car il permet d’augmenter la note de confiance des anti-spams.

Mise en place de MX

Se rendre dans la zone DNS, cliquer sur « ajouter une entrée », sélectionner MX, saisir la priorité 1 (priorité la plus haute) et l’adresse cible (notre nom de domaine). Vérifier sur la liste des champs DNS que cette ligne a bien été ajoutée :

1 votredomaine.me.

Reverse DNS

Qu’est-ce que le reverse DNS ?

Le reverse DNS (ou rDNS) est un système qui permet de transformer une adresse IP en nom de domaine. Il est nécessaire de le configurer sur notre serveur SMTP car certaines messageries mail bloquent les messages envoyés depuis des serveurs sans rDNS (comme AOL).

Mise en place de reverse DNS

Installer DNSutils qui va nous permettre de tester le reverse DNS :

sudo apt-get install dnsutils

Pour mettre en place le reverse DNS il faut indiquer au VPS à quel domaine il appartient. Cela se fait dans l’interface administrateur OVH de notre VPS. Aller dans le menu « IP » en bas de la page, cliquer sur « Gérer mes IP », la liste des adresses IP du VPS nous est donnée (une IPv4 et une IPv6). Cliquer sur les roues dentées à droite de chaque IP, sélectionner le menu « modifier le reverse » et entrer le nom de domaine.

OVH, ajout d’un champ reverse DNS

Pour tester le reverse DNS, retourner sur le VPS et taper la commande :

dig -x votreIP +short

Si votre nom de domaine s’affiche, alors la configuration fonctionne.

Tester le serveur SMTP

Avant de tester le serveur SMTP, nous allons le redémarrer à l’aide de la commande :

sudo /etc/init.d/postfix restart

Pour tester la note de confiance de notre serveur SMTP, il existe le site https://www.mail-tester.com

Le test crée une adresse temporaire à laquelle envoyer un email via notre serveur SMTP. Il permet par exemple de vérifier les systèmes d’authentification du nom de domaine (DKIM et SPF), si l’email passe SpamAssassin, la composition HTML de l’email, la présence du serveur sur liste noire mais aussi la présence de liens brisés dans le message. Au final le serveur testé est noté sur 10. Gmail obtient une note de 8/10. Attention ! Les notes peuvent être variables en fonction du contenu du message, pour tester, il est donc conseillé d’envoyer un message relativement long comportant un vrai message.

Résultat mail-tester : SpamAssassin

Résultat mail-tester : Authentification

Résultat mail-tester : Listes noires

Mon serveur SMTP obtient une note de 10/10 au lieu de 1.7/10 avant la mise en place de SPF, DKIM, reverse DNS et MX.

Sources