Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
pratique:informatique:mail_dns [25/07/2023 09:06] – créée Zatalyz | pratique:informatique:mail_dns [21/09/2023 17:56] (Version actuelle) – [DMARC] Zatalyz | ||
---|---|---|---|
Ligne 20: | Ligne 20: | ||
===== SPF ===== | ===== SPF ===== | ||
+ | |||
+ | On peut indique des ip, des noms de domaine... Je trouve le nom de domaine plus versatile et ça suffit. | ||
+ | |||
+ | @ IN TXT 10800 " | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * ''?'' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * Le mieux est de commencer avec '' | ||
+ | |||
+ | Si l' | ||
+ | |||
+ | < | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | example.org. | ||
+ | |||
+ | Attention, c'est des exemples, une seule de ces lignes dans votre zone DNS ou ça va créer des soucis ! | ||
+ | |||
+ | Plus de doc chez [[https:// | ||
+ | |||
===== DKIM ===== | ===== DKIM ===== | ||
+ | DKIM est LE point compliqué : cela demande de générer une clé sur le serveur de relai. Donc, DKIM dépend entièrement du bon vouloir du service. | ||
+ | |||
+ | Gandi et Infomaniak permettent de gérer DKIM très simplement. Par contre, en 2023, OVH a toujours du mal avec le concept. Donc OVH n'est pas un bon choix pour le relai de mail ! | ||
+ | |||
+ | ==== En passant par le relai des autres ==== | ||
+ | <WRAP center round todo 60%> | ||
+ | infos à transférer | ||
+ | </ | ||
+ | |||
+ | ==== Quand on a son propre relai ==== | ||
+ | DKIM m'aura filé des boutons... Espérons que tout est noté proprement. | ||
+ | |||
+ | Je préfère passer par Opendkim plutôt que Rspamd. Ce dernier gère trop de choses, plante, a une configuration bien touffue, bref j'ai eu vraiment des soucis, donc on va séparer un peu ; ce serait abusé de dire qu'on va vers du KISS vu la complexité des bouzins mais... on essaie un peu. | ||
+ | |||
+ | <WRAP center round info 100%> | ||
+ | Pour la génération de la clé, comme indiqué [[https:// | ||
+ | |||
+ | Il est aussi possible de générer une clé ed25519, mais elle n'est pas prise en compte chez plein de fournisseurs mails et fera donc échouer la vérification DKIM ([[https:// | ||
+ | |||
+ | Oui, c'est ridicule, mais... L' | ||
+ | |||
+ | Au passage, il faudra que je vérifie, de mon côté, que j' | ||
+ | </ | ||
+ | |||
+ | Avant tout : on va mettre toute la configuration dans un dossier. | ||
+ | sudo mkdir -p / | ||
+ | |||
+ | On créera autant de dossier que de domaines. Oui c'est un peu lourd mais ça simplifiera la gestion plus tard. | ||
+ | sudo mkdir / | ||
+ | |||
+ | Et s' | ||
+ | |||
+ | sudo chown -R opendkim: / | ||
+ | |||
+ | On va commencer par générer la clé, en tant qu' | ||
+ | |||
+ | sudo -u opendkim opendkim-genkey -D / | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Générez autant de clés que de domaines autorisés à envoyer des mails en leur nom. | ||
+ | |||
+ | S' | ||
+ | sudo chmod 640 / | ||
+ | sudo chmod 644 / | ||
+ | |||
+ | On va ensuite modifier ''/ | ||
+ | <WRAP center round todo 60%> | ||
+ | Là je vais copier ma version, commentée, ne me souvenant plus de ce que c' | ||
+ | </ | ||
+ | <code bash / | ||
+ | # Active les logs. L' | ||
+ | Syslog | ||
+ | SyslogSuccess | ||
+ | # | ||
+ | |||
+ | # Comment les mails sont signés. Ma politique n'est pas des plus strictes mais dans mon cas ça devrait être adapté. | ||
+ | Canonicalization | ||
+ | Mode sv | ||
+ | SubDomains | ||
+ | OversignHeaders | ||
+ | |||
+ | # La partie à adapter et modifier ! La plus importante ! Mais... On va avoir du multidomaine, | ||
+ | Domain | ||
+ | Selector | ||
+ | # | ||
+ | |||
+ | # Permissions et user ; ne pas bidouiller sans savoir | ||
+ | UserID | ||
+ | UMask 007 | ||
+ | |||
+ | # Cette partie est si on a plusieurs domaines. On va avoir des fichiers à parser pour voir la concordance clé/ | ||
+ | # L' | ||
+ | # Fichier qui indiquera où sont les clés | ||
+ | KeyTable | ||
+ | # Fichier pour dire comment utiliser ces clés | ||
+ | SigningTable | ||
+ | |||
+ | # Hôtes pour qui les mails seront signés. Là, il y a une subtilité ; on va donc les déclarer dans un fichier annexe. | ||
+ | InternalHosts | ||
+ | |||
+ | # Pour qu'on ne signe pas des trucs qui ne viennent pas du bon endroit ? | ||
+ | ExternalIgnoreList | ||
+ | |||
+ | # Socket pour le MTA, Postfix dans notre cas, qui marche avec celui-ci. | ||
+ | Socket | ||
+ | PidFile | ||
+ | |||
+ | # The trust anchor enables DNSSEC. In Debian, the trust anchor file is provided | ||
+ | # by the package dns-root-data. | ||
+ | TrustAnchorFile | ||
+ | |||
+ | # permettre un redémarrage automatique, | ||
+ | AutoRestart | ||
+ | AutoRestartRate | ||
+ | |||
+ | </ | ||
+ | |||
+ | Par défaut Opendkim a sans doute généré ''/ | ||
+ | |||
+ | Chez moi ça ressemble à ça (j'ai gardé les ip locales par défaut aussi...) : | ||
+ | < | ||
+ | 192.168.0.0/ | ||
+ | 10.0.0.0/8 | ||
+ | 172.16.0.0/ | ||
+ | # IP sur le réseau local | ||
+ | 192.168.1.85/ | ||
+ | # IP publique | ||
+ | 109.190.XXX.XXX | ||
+ | |||
+ | </ | ||
+ | |||
+ | === Multidomain === | ||
+ | Si on a déclaré quelques fichiers... il va falloir les remplir. | ||
+ | <code txt / | ||
+ | dkim23._dkim.example.org example.com: | ||
+ | </ | ||
+ | Ajouter autant de ligne que de domaines, potentiellement en adaptant la partie selector (et évidement le nom de domaine). | ||
+ | |||
+ | Puis l' | ||
+ | <code txt / | ||
+ | *@example.org dkim23._dkim.example.org | ||
+ | bob@example2.com dkim23._dkim.example2.com | ||
+ | </ | ||
+ | |||
+ | Enfin, dans ce cas, mieux vaut encore affiner TrustedHosts. Les domaines déclarés ici, puisqu' | ||
+ | |||
+ | <WRAP center round help 60%> | ||
+ | Un petit doute si c'est pertinent... Je sens qu'on va avoir des trucs bizarres avec ça. | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Finitions === | ||
+ | |||
+ | |||
+ | On recharge : | ||
+ | service opendkim restart | ||
+ | |||
+ | Et on configure postfix en ajoutant ceci : | ||
+ | |||
+ | <code bash / | ||
+ | #Antispam et DKIM | ||
+ | milter_default_action = accept | ||
+ | smtpd_milters = inet: | ||
+ | non_smtpd_milters = $smtpd_milters | ||
+ | milter_protocol = 6 | ||
+ | milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen} | ||
+ | internal_mail_filter_classes = bounce | ||
+ | |||
+ | </ | ||
+ | On recharge : | ||
+ | service postfix restart | ||
+ | |||
+ | Ensuite, la zone DNS. Toutes les infos sont avec '' | ||
+ | |||
+ | La clé publique devrait renvoyer quelque chose comme ça : | ||
+ | dkim23._domainkey IN TXT ( " | ||
+ | " | ||
+ | |||
+ | Et l' | ||
+ | dkim23._domainkey IN TXT " | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | On peut déclarer plus de choses dans le DKIM. Et ça serait sans doute mieux. Mais, là, ça me gonfle, alors ça ira jusqu' | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Bien attendre la propagation du DNS avant de s' | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Et on s' | ||
+ | |||
+ | |||
+ | Sources : | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
===== DMARC ===== | ===== DMARC ===== | ||
+ | Après les options compliquées à comprendre avec SPF et DKIM, DMARC parait facile. Oui mais... pour qu'il marche bien, il faut que les deux autres soient fonctionnels, | ||
+ | |||
+ | Les autres fournisseurs de mail envoient un rapport quotidien de vos échanges avec eux. Cela fait pas mal de bruit et on pourrait être tenté d' | ||
+ | |||
+ | Le champ dmarc va ressembler à ça si on est strict : | ||
+ | |||
+ | _dmarc 10800 IN TXT " | ||
+ | |||
+ | Et ceci si on ne veux pas trop de soucis dans un premier temps : | ||
+ | _dmarc 10800 IN TXT " | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Voir https:// | ||
+ | |||
+ | ==== Lire les rapports ==== | ||
+ | C'est du xml et un peu obtus, comme ça. | ||
+ | |||
+ | Je teste [[https:// | ||
+ | |||
+ | ===== Champs DNS en plus ===== | ||
+ | Google entre autre veut un enregistrement txt rien que pour lui | ||