configurer SPF et DKIM
Pour ne pas être considéré comme un spammeur, il va falloir configurer votre serveur aux petits oignons, et montrer pattes blanches...
configurer SPF
SPF (Sender Policy Framework) est simple à mettre en place, il suffit d'une entrée dans le DNS:
Le SPF est une méthode pour empêcher la falsification des adresses email des expéditeurs. SPF permet aux administrateurs de spécifier les hôtes autorisés à envoyer des email au nom d'un domaine donné en créant un enregistrement SPF (ou enregistrement TXT) spécifique dans le système de noms de domaine (DNS).
$TTL 1H
example.com. IN SOA ns3022121.ip-123-123-123.eu. email.wanadoo.fr. (
2019030904 ; Serial
1H ; Refresh
15M ; Retry
2W ; Expire
3M ; Minimum TTL
)
example.com. IN NS ns3022121.ip-123-123-123.eu.
example.com. IN NS ns.kimsufi.com.
example.com. IN A 123.123.123.123
example.com. IN MX 10 mail.example.com.
www IN A 123.123.123.123
mail IN A 123.123.127.123
@ IN TXT "v=spf1 a ~all"
;@ IN TXT "v=spf1 ip4:123.123.123.123 ~all" ; identique
TXT : Le type d'enregistrement de la zone DNS; Les enregistrements SPF sont écrits en tant qu'enregistrements TXT
@ : Dans un fichier DNS, le symbole "@" est un espace réservé utilisé pour représenter "le domaine actuel".
v=spf1 : Identifie l'enregistrement TXT en tant qu'enregistrement SPF, à l'aide de SPF Version 1
a : Autorise le ou les hôtes identifiés dans les enregistrements A du domaine à envoyer un courrier électronique.
ip4 : Spécifie une adresse IPv4 unique ou une plage d'adresses IPv4 acceptable. Un masque de / 32 est supposé si aucune longueur de préfixe n'est incluse. Exemple: "v = spf1 ip4: 192.168.0.1/16 ~all"
~all : Indique que cette liste est exhaustive et qu'aucun autre serveur n'est autorisé à envoyer un courrier électronique.
configurer DKIM
Selon Wikipedia: « 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. En effet, DKIM fonctionne par signature cryptographique du corps du message et d'une partie de ses en-têtes.
Une signature DKIM vérifie donc l'authenticité du domaine expéditeur et garantit l'intégrité du message. »
DKIM est utilisé par plusieurs opérateurs de messagerie, comme Google. Elle permet de filtrer les emails valides (ou plutôt les serveurs de mails envoyeurs). Un peu plus complexe que SPF, elle se trouve facilité avec l'outil OpenDKIM.
apt-get install opendkim opendkim-tools
Bon...premièrement, après avoir galérer quelques heures, j’avais ça dans mes logs : "SASL authentication failure: No worthy mechs found", et pourtant tout me paraissait vraiment bien configuré, il a fallu que je rajoute le paquet suivant :
apt-get libsasl2-modules
Ne me demandez pas pourquoi...
Commençons par le fichier de configuration principal:
Syslog yes
UMask 002
OversignHeaders From
AutoRestart Yes
AutoRestartRate 10/1h
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:12301@localhost
ExternalIgnoreList: spécifie les hôtes externes pouvant envoyer des messages via le serveur comme l'un des domaines de signature sans informations d'identification.
InternalHosts: définit une liste d'hôtes internes dont le courrier ne doit pas être vérifié mais signé
KeyTable: mappe les noms de clé sur les clés de signature
SigningTable: répertorie les signatures à appliquer à un message en fonction de l'adresse trouvée dans le champ From: de l'en-tête de l'email:
Ajoutez la ligne SOCKET="inet:12301@localhost" au fichier /etc/default/opendkim
SOCKET="inet:12301@localhost"
Assurez-vous que ces deux lignes sont présentes dans le fichier /etc/postfix/main.cf ne sont pas commentées:
# Postfix ≥ 2.6 milter_protocol = 6, Postfix ≤ 2.5 milter_protocol = 2
milter_protocol = 2
milter_default_action = accept
rajoutez:
# Postfix ≥ 2.6 milter_protocol = 6, Postfix ≤ 2.5 milter_protocol = 2
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
Vous devrez peut être ajuster la variable milter_protocol selon votre version de postfix, pour connaitre votre version:
postconf mail_version
Créez les répertoire pour the trusted hosts, key tables, signing tables et crypto keys:
mkdir /etc/opendkim
mkdir /etc/opendkim/keys
Spécifiez les hôtes de confiance
127.0.0.1
localhost
123.123.123.123/24
*mon-site.fr
*example.com
#*.mon-site.fr
#*.example.com
123.123.123.123 est l'ip du serveur
* permet de spécifier comme valide tous les sous domaine
# est un commentaire
créer une key table:
mail._domainkey.mon-site.fr mon-site.fr:mail:/etc/opendkim/keys/mon-site.fr/mail.private
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
Créez une signing table:
*@mon-site.fr mail._domainkey.mon-site.fr
*@example.com mail._domainkey.example.com
Générer les clés publiques et privées
Accédez au répertoire des clés:
cd /etc/opendkim/keys
Créez un dossier séparé pour que le domaine contienne les clés:
mkdir example.com
cd example.com
Générez les clés:
opendkim-genkey -s mail -d example.com
-s spécifie le sélecteur et -d le domaine. Cette commande crée deux fichiers, mail.private est notre clé privée et mail.txt contient la clé publique.
Changez le propriétaire de la clé privée en opendkim:
chown opendkim:opendkim mail.private
Ajouter la clé publique aux enregistrements DNS du domaine
Ouvrez mail.txt:
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for example.com
La clé publique est définie sous le paramètre p. N'utilisez pas l'exemple de clé ci-dessous, il ne s'agit que d'une illustration et ne fonctionnera pas sur votre serveur.
Ajoutez cette clef dans votre enregistrement DNS
$TTL 1H
example.com. IN SOA ns3022121.ip-123-123-123.eu. email.wanadoo.fr. (
2019030904 ; Serial
1H ; Refresh
15M ; Retry
2W ; Expire
3M ; Minimum TTL
)
example.com. IN NS ns3022121.ip-123-123-123.eu.
example.com. IN NS ns.kimsufi.com.
example.com. IN A 123.123.123.123
example.com. IN MX 10 mail.example.com.
www IN A 123.123.123.123
mail IN A 123.123.127.123
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" )
@ IN TXT "v=spf1 a ~all"
;@ IN TXT "v=spf1 ip4:123.123.123.123 ~all" ; identique
Veuillez noter que les modifications DNS peuvent prendre quelques heures à se propager.
Redémarrez Postfix et OpenDKIM:
service postfix restart
service opendkim restart
La configuration peut être testée en envoyant un email vide à [email protected] et une réponse sera reçue. Si tout fonctionne correctement, vous devriez voir:
SPF check: pass
DKIM check: pass