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.

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.

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.

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.

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.



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.