From 7694fd08ab2e5e5041e3592b5cfa85bc4c933423 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Fri, 17 Mar 2023 15:09:14 +0100 Subject: =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20la=20page=20sur=20les=20ema?= =?UTF-8?q?ils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/operations/email.md | 58 ++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 19 deletions(-) (limited to 'content/operations/email.md') diff --git a/content/operations/email.md b/content/operations/email.md index 03ed149..43e5cef 100644 --- a/content/operations/email.md +++ b/content/operations/email.md @@ -55,16 +55,15 @@ _dmarc CNAME _dmarc.deuxfleurs.fr. | nom | type | valeur | signification | | --- | ---- | ------ | ------------- | -| `@` | `MX` | `12 email-in.deuxfleurs.fr` | Serveur que chercheront à joindre les gens qui veulent envoyer un courrier à une addresse `@deuxfleurs.fr` | -| `out | `MX` | `12 orion[-v6].deuxfleurs.fr` | Addresses IP pouvant envoyer des messages pour SPF (voir ci-dessous) | -| `default._domainkey` | `TXT` | `v=DKIM1; h=sha256; k=rsa; p=` | Enregistrement DKIM (voir ci-dessous) | -| `smtp._domainkey` | `TXT` | `v=DKIM1; h=sha256; k=rsa; p=` | Enregistrement DKIM (voir ci-dessous) | -| `@` | `TXT` | `"v=spf1 mx:out.deuxfleurs.fr ip4: [...] -all" | Enregistrement SPF (voir ci-dessous) | -| `_dmarc` | `TXT` | `"v=DMARC1; [...]` | Enregistrement DMARC (voir ci-dessous) | -| `email-in` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Postfix (pour l'enregistrement MX) | -| `smtp` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Postfix (pour les utilisateurs Deuxfleurs) | -| `imap` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Dovecot (pour les utilisateurs Deuxfleurs) | -| `201.80.66.82.in-addr.arpa.` | `PTR` | `orion.site.deuxfleurs.fr.` | Reverse DNS indiquant le nom de domainecorrespondant à l'IP du serveur Postfix | +| `@` | `MX` | `12 smtp.deuxfleurs.fr` | Serveur que chercheront à joindre les gens qui veulent envoyer un courrier à une addresse `@deuxfleurs.fr` | +| `smtp._domainkey` | `TXT` | `v=DKIM1; p=` | Enregistrement DKIM (voir ci-dessous) | +| `default._domainkey` | `TXT` | `v=DKIM1; p=` | Ancien enregistrement DKIM (voir ci-dessous) | +| `@` | `TXT` | `v=spf1 [...] -all` | Enregistrement SPF (voir ci-dessous) | +| `_dmarc` | `TXT` | `v=DMARC1; [...]` | Enregistrement DMARC (voir ci-dessous) | +| `smtp` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Postfix | +| `imap` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Dovecot | +| `201.80.66.82.in-addr.arpa.` | `PTR` | `orion.site.deuxfleurs.fr.` | Reverse DNS indiquant le nom de domaine correspondant à l'IP du serveur Postfix | +| `orion.site` | `A` | `82.66.80.201` | Reverse DNS indiquant le nom de domaine correspondant à l'IP du serveur Postfix | ## DKIM @@ -120,7 +119,12 @@ Cette signature contient les champs suivants : - `t` (recomandé) donne le timestamp de la signature, i.e. sa date et son heure - `c` est un paramètre additionnel de la méthode de calcul de la signature -**Chez Deuxfleurs:** L'en-tête de signature est rajouté par notre serveur Postfix. La clef privée est stockée dans Consul, et est injéctée dans le conteneur Postfix au lancement. Les enregistrements DNS sont installés manuellement. +**Chez Deuxfleurs:** + +- L'en-tête de signature est rajouté par notre serveur Postfix. +- La clef privée est stockée dans Consul, et est injectée dans le conteneur Postfix au lancement. +- Les enregistrements DNS pour DKIM sont installés manuellement. +- Pour tous les autres domaines dont le courrier est traîté par les serveurs Deuxfleurs, on utilise un enregistrement DKIM en CNAME vers `smtp._domainkey.deuxfleurs.fr` pour que la gestion des règles soit centralisée via l'enregistrement défini sur les DNS Deuxfleurs. ## SPF @@ -132,7 +136,7 @@ Références : **Exemple d'enregistrements DNS :** ``` -deuxfleurs.fr. 300 IN TXT "v=spf1 mx:out.deuxfleurs.fr ip4:82.66.80.201 -all" +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" @@ -144,7 +148,7 @@ L'enregistrement commence par `v=spf1`, puis contient un ensemble de directives - Un préfixe pouvant être `+` (résultat favorable), `?` (résultat neutre/aucune règle), `~` (entre le neutre et l'échec, utile pour déboguer), `-` (échec/défavorable). Le préfixe peut être omis, ce qui est interprété comme le préfixe `+`. - Une paire type/valeur, avec les types suivants: - - `mx` : utiliser un enregistrement DNS de type MX. L'enregistrement `MX` donne un ou plusieurs noms d'hôtes, qui sont eux-même des noms DNS. Ces noms sont ensuite résolus en `A` ou `AAAA` pour trouver les addresses correspondantes. Des `CNAME` peuvent être présents, ce qui donnerait au plus long la chaîne de résolution suivante : `MX -> CNAME -> ... -> CNAME -> A/AAAA`. + - `mx` : utiliser un enregistrement DNS de type MX. L'enregistrement `MX` donne un ou plusieurs noms d'hôtes, qui sont eux-même des noms DNS. Ces noms sont ensuite résolus en `A` ou `AAAA` pour trouver les addresses correspondantes. Attention, un enregistrement `MX` n'est pas sensé pointer sur un `CNAME`, il doit pointer directement sur des enregistrements `A` et `AAAA` ! - `ip4` : contient directement une plage d'addresses IPv4 - `ip6` : contient directement une plage d'addresses IPv6 - `a` : contient un nom d'hôte à résoudre en `A` ou `AAAA` (pouvant utiliser des `CNAME`) @@ -154,14 +158,21 @@ L'enregistrement commence par `v=spf1`, puis contient un ensemble de directives Par exemple, dans les exemples ci-dessous, voici comment interpréter les différentes règles: -- `mx:out.deuxfleurs.fr` : accepter le message si l'IP de l'expéditeur est trouvable en suivant les enregistrements `MX` associés à `out.deuxfleurs.fr`. +- `mx:deuxfleurs.fr` : accepter le message si l'IP de l'expéditeur est trouvable en suivant les enregistrements `MX` associés à `deuxfleurs.fr`. - `ip4:82.66.80.201` : accepter le message si l'IP de l'expéditeur est `82.66.80.201` - `include:mx.ovh.com` : accepter le message si il serait accepté par la règle du domaine `mx.ovh.com` (consultable en faisant `dig TXT mx.ovh.com`) - `a:ietf.org` : accepter le message si il vient de l'addresse IP de `ietf.org` (consultable en faisant `dig A ietf.org`) - `-all` : rejeter strictement tous les messages venant d'une autre addresse IP -**Chez Deuxfleurs:** L'enregistrement SPF, installé manuellement, contient `mx:out.deuxfleurs.fr`, ce qui signifie que les addresses IP sont celles présentes dans l'enregistrement `MX` pour `out.deuxfleurs.fr`. Actuellement, les valeurs sont `orion.site.deuxfleurs.fr` et `orion-v6.site.deuxfleurs.fr`. Le premier contient l'IPv4 (mise manuellement) et une IPv6 (mise automatiquement par D53, c'est celle de la machine contenant Tricot). Le second contient toutes les IPv6 possibles pour Postfix (celui-ci se ballade de machine en machine). +**Chez Deuxfleurs :** + +- L'enregistrement SPF, installé manuellement, contient `mx:deuxfleurs.fr`, ce qui signifie que les addresses IP sont celles présentes dans l'enregistrement `MX` pour `deuxfleurs.fr`. +- Cet enregistrement pointe sur le serveur `smtp.deuxfleurs.fr`, dont l'addresse est mise à jour automatiquement dans le DNS par D53 pour pointer vers l'IPv4 de la machine sur laquelle tourne Postfix. +- L'enregistrement SPF contient également `a:orion.site.deuxfleurs.fr`, qui contient également l'IPv4 de cette machine ; on garde cette règle en second recours au cas où il y aurait un problème avec la précédente. +- L'enregistrement SPF contient également l'addresse IPv4 et la plage d'addresses IPv6 de la box à Orion (site où le serveur SMTP est actuellement déployé), pour en dernier recours éviter de rejeter des mails en cas de soucis avec les règles précédentes. +- **L'enregistrement SPF doit être mis à jour manuellement en cas de reconfiguration du serveur SMTP, en particulier si celui-ci change de site ou si les addresses IP changent.** +- Pour tous les autres domaines dont le courrier est traîté par les serveurs Deuxfleurs, on utilise un enregistrement SPF `include:deuxfleurs.fr` pour que la gestion des règles soit centralisée via l'enregistrement défini sur les DNS Deuxfleurs. ## DMARC @@ -192,8 +203,21 @@ L'enregistrement peut contenir les champs suivants: - `rf` : format des rapports (`afrf` est la seule valeur officiellement supportée) - `pct` : proportion de messages à rejeter en cas d'échec +**Chez Deuxfleurs :** + +- L'enregistrement DMARC est configuré pour rejeter de manière strict tout message ne passant pas la vérification SPF ou DKIM. +- Les rapports d'erreur doivent être envoyés à l'addresse `prod-sysadmin@deuxfleurs.fr` qui est consultés par les administrateurs systèmes de Deuxfleurs. +- Pour tous les autres domaines dont le courrier est traîté par les serveurs Deuxfleurs, on utilise un enregistrement DMARC en CNAME vers `_dmarc.deuxfleurs.fr` pour que la gestion des règles soit centralisée via l'enregistrement défini sur les DNS 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,8 +225,4 @@ L'enregistrement peut contenir les champs suivants: 206.118.187.37.in-addr.arpa. 86400 IN PTR shiki.adnab.me. ``` -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. -- cgit v1.2.3