Si on utilise un serveur SMTP personnel, il arrive souvent que les mails envoyés soient considérés comme des spams. Voici quelques astuces pour éviter cela :
Outil
J'utilise un site qui permet de déterminer ce qui ne fonctionne pas. Ce site propose gratuitement d'effectuer 3 tests par jour : https://www.mail-tester.com
Configuration du DNS
Pour le domaine "toto.ovh" , adresse du serveur SMTP 1.2.3.4, il faut au minimum les lignes suivantes :
DOMAINE TTL TYPE CIBLE toto.ovh. 0 NS dns101.ovh.net. toto.ovh. 0 MX 100 toto.ovh. toto.ovh. 0 A 1.2.3.4 toto.ovh. 600 SPF "v=spf1 a mx ip:1.2.3.4 ~all" _dmarc.toto.ovh 0 TXT "v=DMARC1;p=none" dkim._domainkey.toto.ovh 0 TXT "v=DKIM1;k=rsa;p=MIqG....A34B;"
SPF (Sender Policy Framework) indique quels sont les machines du domaine qui sont autorisés à envoyer des mails, ici :
- Le serveur MX
- Les machines qui ont un enregistrement A
- La machine avec l'adresse IPv4 1.2.3.4 (s'il y a un relais, on indique à la place l'adresse du relais)
- Les autres sont interdites (~all).
DMARC (Domain-based Message Authentication, Reporting and Conformance) permet d'indiquer la conduite à tenir si l'authentification échoue :
- "p=none" laisse passer les messages
DKIM (DomainKeys Identified Mail) permet l'authentification par clés publique/privée :
- "k=rsa" type de cryptage
- "p=MIqG....A34B" clé publique d'opendkim
Configuration de POSTFIX
Eviter d'envoyer trop de mail en même temps
Dans /etc/postfix/main.cf :
default_destination_concurrency_limit = 2 default_destination_rate_delay = 7s default_extra_recipient_limit = 5
Postfix se connecte au maximum avec 2 connexions par domaine, avec un délai de 7 secondes entre chaque message du même domaine. Si le message est destiné à plus de 5 destinataires, il sera découpé en plusieurs envois.
Installation et configuration de DKIM pour Postfix
Sur le même serveur que postfix :
- apt-get install opendkim opendkim-tools
- Modification du fichier /etc/opendkim.conf :
AutoRestart yes AutorestartRate 5/1h UMask 002 Syslog yes SyslogSuccess yes LogWhy yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:17789@localhost
- Modification du fichier /etc/default/opendkim
SOCKET="inet:17789@localhost"
- Modification du fichier /etc/postfix/main.cf (ajouter à la fin les lignes suivantes)
######## # DKIM # ######## milter_protocol = 2 milter_default_action = accept smtpd_milters = inet:localhost:17789 non_smtpd_milters = inet:localhost:17789
- Créer le dossier /etc/opendkim/keys/toto.ovh
- Création du fichier /etc/opendkim/TrustedHosts, 178.18.0.20/16 est l'adresse locale du serveur mail (peut être facultatif ?)
127.0.0.1 localhost 172.18.0.50/16 *.toto.ovh
- Création du fichier /etc/opendkim/KeyTable
toto.ovh toto.ovh:dkim:/etc/opendkim/keys/toto.ovh/mail.private
- Création du fichier SigningTable
*@toto.ovh toto.ovh
- Dans le dossier /etc/opendkim/keys/toto.ovh :
- opendkim-genkey -s mail -d toto.ovh
- chown opendkim:opendkim mail.private
- La clé publique est dans le fichier mail.txt
- Réglez correctement le DNS
- Puis relancez les services postfix et opendkim