Comprendre le fonctionnement des e-mails

Serveurs

Enregistrements DNS de la zone deuxfleurs.fr

nomtypevaleursignification
@MX12 smtp.deuxfleurs.frServeur que chercheront à joindre les gens qui veulent envoyer un courrier à une addresse @deuxfleurs.fr
smtp._domainkeyTXTv=DKIM1; p=<clef publique>Enregistrement DKIM (voir ci-dessous)
default._domainkeyTXTv=DKIM1; p=<clef publique>Ancien enregistrement DKIM (voir ci-dessous)
@TXTv=spf1 [...] -allEnregistrement SPF (voir ci-dessous)
_dmarcTXTv=DMARC1; [...]Enregistrement DMARC (voir ci-dessous)
smtpAdéfini par D53Addresse IPv4 pour parler au serveur Postfix
imapAdéfini par D53Addresse IPv4 pour parler au serveur Dovecot
201.80.66.82.in-addr.arpa.PTRorion.site.deuxfleurs.fr.Reverse DNS indiquant le nom de domaine correspondant à l'IP du serveur Postfix
orion.siteA82.66.80.201Reverse DNS indiquant le nom de domaine correspondant à l'IP du serveur Postfix

DKIM

Le mécanisme DKIM permet au serveur d'ajouter une signature sur les messages qui sortent de Deuxfleurs, pour que les destinataires puissent en attester la validité. Il s'agit d'une signature RSA basée sur une paire de clefs privée/publique. La clef publique est donée dans l'enregistrement DNS DKIM, et la clef privée est connue uniquement du serveur Postfix. La signature de chaque message est ajoutée dans un en-tête spécifique.

Référence : https://www.cloudflare.com/learning/dns/dns-records/dns-dkim-record/

Exemple d'enregistrements DNS :

default._domainkey.deuxfleurs.fr. 10800 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDB" "OCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4Wfm" "DWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB"

smtp._domainkey.deuxfleurs.fr.    1800  IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDB" "OCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4Wfm" "DWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB"

default._domainkey.adnab.me.      3600  IN TXT "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHd2zQXgGAoFX2CFaRqvWw1oBGhbUIRB5QXPxE9nvWwe/og5LjZBcnKoInPWsKYEz/f5kmpTDq4RZT3PMmjm+u5IuvyQ2LJcdIKSW6t8KWa7yztk2D87f3Lono6WJwvY8RHdGPqKS5RXfEdQFriXiSCAO5ZSQrNXQ5yiQ9T1ptGwIDAQAB; t=s"

Structure :

Application à la vérification d'une signature (exemple) :

Prenons la signature suivante :

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=deuxfleurs.fr; s=smtp;
	t=1679050854; bh=AkDk3Tm0bnC7b6dvTjRXJbThLE6h/IStsBGIYGa+q7c=;
	h=Date:To:From:Subject:From;
	b=Qll5ASi9DmD2rw9LK1vJOahE77Pd/HNDbmrkrOCt4S8Nu42WtJXXOtiwo9J3KGPzR
	 zA2Cw5oCUB0HW5ere8RkINsUj9X/nxOovxFaJw4LSrgEYxQh7unaGBs6Ecw6k2Aqc/
	 oMhNE2OVCSlLkJVUQbgzwBUcZuwndlki6yYoJXkSPMuZ4tFbhgjSaxneRgUvPocYw3
	 Vqc/yMEAbofrlaEf6nSNQZL+LSE4IEBeudsv3JodMn12OYAijhO0rrHHsinK9UkM3M
	 PEEISyatG6RzE6veh4VVv3PTyJMYouQI7fKNooLuDmlGsdSTV9HRo4UvQeOQT1SL/7
	 KvgJtR0Hqz3mQ==

Cette signature contient les champs suivants :

Chez Deuxfleurs:

SPF

L'enregistrement SPF sert à aider le serveur de destination à déterminer si le message reçu est légitime ou non, en vérifiant des contraintes sur l'addresse IP par laquelle il a été reçu. Normalement, c'est l'addresse IP du serveur SMTP de Deuxfleurs, donc on sait qu'on doit rejeter tous les messages venant d'autres addresses.

Références : https://fr.wikipedia.org/wiki/Sender_Policy_Framework

Exemple d'enregistrements DNS :

deuxfleurs.fr.  300     IN  TXT "v=spf1 mx:deuxfleurs.fr a:orion.site.deuxfleurs.fr ip4:82.66.80.201 ip6:2a01:e0a:28f:5e60::/64 -all"
adnab.me.       3600    IN  TXT "v=spf1 mx mx:adnab.me include:mx.ovh.com -all"
ietf.org.       1794    IN  TXT "v=spf1 ip4:50.223.129.192/26 ip6:2001:559:c4c7::/48 a:ietf.org mx:mail.ietf.org ip4:192.95.54.32/27 ip6:2607:5300:60:9ccf::/64 ip4:158.69.166.0/27 ip6:2607:5300:203:1b26::/64 ip4:4.31.198.32/27 ip6:2001:1900:3001:11::/64 include:_spf.google.com ~all"

Structure :

L'enregistrement commence par v=spf1, puis contient un ensemble de directives formées de la manière suivante:

Par exemple, dans les exemples ci-dessus, voici comment interpréter les différentes règles:

Chez Deuxfleurs :

DMARC

DMARC est un mécanisme qui permet de mieux contrôler la réaction des serveurs de destination en fonction des tests DKIM et SPF. Par exemple, on peut préciser que tous les messages sont authentifiés par DKIM et SPF, et si un de ces tests échoue, le message doit nécessairement être rejeté. On peut aussi demander à recevoir des rapports en cas d'échec.

Référence : https://fr.wikipedia.org/wiki/DMARC

Exemple d'enregistrements DNS :

_dmarc.deuxfleurs.fr. 300  IN TXT "v=DMARC1; p=reject; sp=reject; adkim=s; fo=1; aspf=s; ruf=mailto:prod-sysadmin@deuxfleurs.fr; rua=mailto:prod-sysadmin@deuxfleurs.fr; rf=afrf; pct=100; ri=86400"
_dmarc.adnab.me.      3600 IN TXT "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; rua=mailto:postmaster@adnab.me!10m; ruf=mailto:postmaster@adnab.me!10m; rf=afrf; pct=100; ri=86400"

L'enregistrement peut contenir les champs suivants:

Chez Deuxfleurs :

Reverse DNS

L'enregistrement reverse DNS peut être utilisé par le serveur de destination pour connaître le nom d'hôte correspondant à l'addresse IP du serveur qui a envoyé le mail. Cet enregistrement doit idéalement correspondre à un nom de domaine qui lui-même résoud à nouveau vers la même addresse IP. L'application de cette règle de filtrage est à la discrétion des différents hébergeurs mail, elle ne rentre pas dans le cadre défini par DMARC.

Exemple d'enregistrements reverse DNS :

201.80.66.82.in-addr.arpa.   86179 IN PTR orion.site.deuxfleurs.fr.
206.118.187.37.in-addr.arpa. 86400 IN PTR shiki.adnab.me.