========================================================================= KANYRO — VERIFICATION DE LA CHAINE DE MESSAGERIE Sections 1 a 9 : relevees le 26/08/2026 a 20:00 sur le serveur, alors nomme mail.kanyro.tech. Section 10 : controle externe du 20/09/2026, apres la bascule du service vers kanyro.fr. Toutes les sorties ci-dessous sont reelles et reproductibles. ========================================================================= 1. ETAT DES SERVICES ------------------------------------------------------------------------- $ systemctl is-active postfix dovecot opendkim caddy postfix active dovecot active opendkim active caddy active 2. PORTS EN ECOUTE ------------------------------------------------------------------------- $ ss -ltn 0.0.0.0:143 LISTEN 0.0.0.0:25 LISTEN 0.0.0.0:993 LISTEN 0.0.0.0:587 LISTEN *:443 LISTEN [::]:143 LISTEN *:80 LISTEN [::]:25 LISTEN [::]:993 LISTEN [::]:587 LISTEN 3. ENREGISTREMENTS DNS PUBLIES ------------------------------------------------------------------------- $ dig +short MX kanyro.tech # MX du domaine 10 mail.kanyro.tech. $ dig +short A mail.kanyro.tech # A de l'hote mail 45.133.178.165 $ dig +short AAAA mail.kanyro.tech # AAAA de l'hote mail 2a02:4780:28:cc48::1 $ dig +short TXT kanyro.tech # SPF "v=spf1 mx ~all" $ dig +short TXT _dmarc.kanyro.tech # DMARC "v=DMARC1; p=none; rua=mailto:contact@kanyro.tech" $ dig +short TXT mail._domainkey.kanyro.tech # cle publique DKIM "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBC [...cle RSA 2048 bits tronquee dans ce releve...] $ dig +short -x 45.133.178.165 # reverse DNS IPv4 mail.kanyro.tech. $ dig +short -x 2a02:4780:28:cc48::1 # reverse DNS IPv6 @1.1.1.1 mail.kanyro.tech. @8.8.8.8 mail.kanyro.tech. @9.9.9.9 mail.kanyro.tech. (les trois resolveurs concordent — detail en section 7) 4. VALIDITE DE LA CLE DKIM ------------------------------------------------------------------------- $ opendkim-testkey -d kanyro.tech -s mail -vvv opendkim-testkey: key OK Lecture : "key OK" = la cle privee du serveur correspond a la cle publique publiee dans le DNS. "key not secure" est informatif : il signale seulement que la reponse DNS n'est pas signee par DNSSEC. 5. CERTIFICAT TLS PARTAGE ------------------------------------------------------------------------- $ openssl s_client -starttls smtp -connect mail.kanyro.tech:25 | openssl x509 -noout -subject -issuer -dates # Postfix (STARTTLS) subject=CN = mail.kanyro.tech issuer=C = US, O = Let's Encrypt, CN = YE2 notBefore=Aug 26 12:48:38 2026 GMT notAfter=Nov 24 12:48:37 2026 GMT $ openssl s_client -connect mail.kanyro.tech:993 | openssl x509 -noout -subject -issuer -dates # Dovecot (IMAPS) subject=CN = mail.kanyro.tech issuer=C = US, O = Let's Encrypt, CN = YE2 notBefore=Aug 26 12:48:38 2026 GMT notAfter=Nov 24 12:48:37 2026 GMT Postfix et Dovecot presentent le meme certificat Let's Encrypt que Caddy obtient et renouvelle : le mecanisme de recopie fonctionne. 6. PREUVE PAR LES JOURNAUX — LA PANNE ET SA RESOLUTION ------------------------------------------------------------------------- Extraits de /var/log/mail.log. Les adresses personnelles sont masquees. a) OpenDKIM refusait de charger la cle (droits sur /etc/opendkim/keys) : 2026-08-26T12:01:59.155708+00:00 srv1917309 opendkim[297995]: mail._domainkey.kanyro.tech: key data is not secure: /etc/opendkim/keys is writeable and owned by uid 106 which is not the executing uid (0) b) Consequence : le message ne pouvait pas etre signe : 2026-08-26T12:01:59.158052+00:00 srv1917309 opendkim[297995]: 151B58B0DE: error loading key 'mail._domainkey.kanyro.tech' c) En parallele, la livraison echouait : le socket LMTP de Dovecot n'existait pas encore. Meme message, meme identifiant de file : 2026-08-26T12:04:08.377002+00:00 srv1917309 postfix/lmtp[301468]: 4B1E28B178: to=, relay=none, delay=129, delays=129/0.03/0/0, dsn=4.4.1, status=deferred (connect to mail.kanyro.tech[private/dovecot-lmtp]: No such file or directory) 2026-08-26T12:11:34.374733+00:00 srv1917309 postfix/lmtp[303207]: 4B1E28B178: to=, relay=none, delay=575, delays=575/0.03/0/0, dsn=4.4.1, status=deferred (connect to mail.kanyro.tech[private/dovecot-lmtp]: No such file or directory) d) Apres correction, le MEME message est livre (delai 800 s) : 2026-08-26T12:15:19.208166+00:00 srv1917309 postfix/lmtp[303583]: 4B1E28B178: to=, relay=mail.kanyro.tech[private/dovecot-lmtp], delay=800, delays=800/0.04/0.04/0.04, dsn=2.0.0, status=sent (250 2.0.0 kVAOCtfYjmrgoQQA77uVVg Saved) e) Plus aucune erreur OpenDKIM apres le correctif : erreurs "not secure" / "error loading key" au total : 6 derniere occurrence : 2026-08-26T12:03:08.246491+00:00 (toutes anterieures au redemarrage corrige de 12:11:31) f) Messages sortants acceptes par des operateurs tiers : 2026-08-26T13:48:08.581270+00:00 srv1917309 postfix/smtp[305800]: 2E11B8B0FC: to=<****@elio-pallois.fr>, relay=mx1.mail.ovh.net[188.165.36.237]:25, delay=6.4, delays=0.15/0.03/5.9/0.3, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 4hVQvr3GHZz1BFNX) 2026-08-26T14:44:41.799917+00:00 srv1917309 postfix/smtp[306875]: 90D398B0D8: to=<****@gmail.com>, relay=gmail-smtp-in.l.google.com[142.251.168.27]:25, delay=1.2, delays=0.43/0.02/0.24/0.52, dsn=2.0.0, status=sent (250 2.0.0 OK 1787755481 ffacd0b85a97d-482e2909949si2793037f8f.458 - gsmtp) 2026-08-26T15:11:07.915574+00:00 srv1917309 postfix/smtp[307404]: 43E398B0D8: to=<****@gmail.com>, relay=gmail-smtp-in.l.google.com[108.177.15.26]:25, delay=0.71, delays=0.13/0.02/0.14/0.42, dsn=2.0.0, status=sent (250 2.0.0 OK 1787757067 ffacd0b85a97d-482e2787dd8si3004351f8f.95 - gsmtp) Lecture : "250 2.0.0 OK" est un accuse d'acceptation par le serveur destinataire. Il prouve que le message a ete accepte, pas qu'il a ete classe en boite de reception plutot qu'en indesirables. 7. AUDIT DE LA ZONE DNS DEPUIS L'EXTERIEUR ------------------------------------------------------------------------- Chaque enregistrement est interroge depuis des resolveurs publics et non depuis le serveur : un serveur se croit toujours joignable. $ dig +short MX kanyro.tech @ 1.1.1.1 -> 10 mail.kanyro.tech. 8.8.8.8 -> 10 mail.kanyro.tech. 9.9.9.9 -> 10 mail.kanyro.tech. EVALUATION SPF PAR FAMILLE D'ADRESSES L'enregistrement publie est "v=spf1 mx ~all". Le mecanisme "mx" resout les hotes MX puis leurs adresses, et RFC 7208 §5.4 ne compare que les adresses de la MEME famille que l'IP de l'expediteur. hotes MX : mail.kanyro.tech. adresses IPv4 (A) : 45.133.178.165 adresses IPv6 (AAAA) : 2a02:4780:28:cc48::1 sortie IPv4 45.133.178.165 -> SPF PASS sortie IPv6 2a02:4780:28:cc48::1 -> SPF PASS CONFIRMATION DU REVERSE (FCrDNS) Gmail exige en IPv6 un reverse qui se confirme : le PTR doit designer un nom dont l'adresse renvoie vers la meme IP. PTR interroge sur trois resolveurs : @1.1.1.1 -> mail.kanyro.tech. @8.8.8.8 -> mail.kanyro.tech. @9.9.9.9 -> mail.kanyro.tech. AAAA : mail.kanyro.tech -> 2a02:4780:28:cc48::1 => reverse CONFIRME : le PTR designe mail.kanyro.tech, dont l'AAAA renvoie vers l'IP de depart. L'aller-retour est complet, ce qui est l'exigence de Gmail pour accepter un expediteur en IPv6. Nom annonce par Postfix en HELO : mail.kanyro.tech Il correspond desormais au nom du reverse : HELO, PTR et AAAA designent tous les trois le meme hote. 8. HISTORIQUE DES CORRECTIONS ISSUES DE CET AUDIT ------------------------------------------------------------------------- 1. Enregistrement MX absent — la reception tenait par le repli sur l'enregistrement A, mais le SPF "v=spf1 mx ~all" n'autorisait alors AUCUN hote. CORRIGE : MX @ 10 mail.kanyro.tech. 2. Hote mail sans AAAA — le SPF ne couvrait que l'IPv4 alors que Postfix emet indifferemment sur les deux familles. CORRIGE : AAAA sur mail. 3. PTR IPv6 sur le nom par defaut de l'hebergeur, incoherent avec le HELO annonce par Postfix. CORRIGE : PTR -> mail.kanyro.tech. 4. Reste ouvert, sans gravite : l'apex kanyro.tech n'a pas d'AAAA alors que www en a. L'URL canonique du site est pourtant l'apex, joignable en IPv4 seulement, tandis que www repond sur les deux familles. 9. VALIDATION PAR UN TIERS — EN-TETES D'UN MESSAGE RECU PAR GMAIL ------------------------------------------------------------------------- Message envoye le 26/08/2026 depuis contact@kanyro.tech vers une boite Gmail, puis relu via "Afficher l'original". Les en-tetes ci-dessous sont ceux ajoutes par les serveurs de Google, pas par le serveur emetteur : c'est un tiers independant qui constate le resultat. Adresse du destinataire et adresse IP du poste client masquees. Authentication-Results: mx.google.com; dkim=pass header.i=@kanyro.tech header.s=mail header.b="pV/nCeMD"; spf=pass (google.com: domain of contact@kanyro.tech designates 2a02:4780:28:cc48::1 as permitted sender) smtp.mailfrom=contact@kanyro.tech; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kanyro.tech Received-SPF: pass (google.com: domain of contact@kanyro.tech designates 2a02:4780:28:cc48::1 as permitted sender) client-ip=2a02:4780:28:cc48::1; Received: from mail.kanyro.tech (mail.kanyro.tech. [2a02:4780:28:cc48::1]) by mx.google.com with ESMTPS id ffacd0b85a97d-482e28fee7asi3751191f8f for <****@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Aug 2026 13:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kanyro.tech; s=mail; t=1787775678; h=From:Date:Subject:To; bh=574+aRWBEvi5BNSlO2dzm0tHD6rwT8t+EXu2h/GLbfU=; b=pV/nCeMDYyC8rK6Q88C4Hb7gSipaqR+Eh5DnHXmvkb+TZ2sLz1oc6R5Ec3VZk25Oi [...signature tronquee...] Received: from smtpclient.apple ([adresse IP du poste client masquee]) by mail.kanyro.tech (Postfix) with ESMTPSA id 64D148B123 for <****@gmail.com>; Wed, 26 Aug 2026 20:21:18 +0000 (UTC) CE QUE CES EN-TETES ETABLISSENT 1. Les trois mecanismes passent chez Google : dkim=pass signature verifiee contre mail._domainkey.kanyro.tech spf=pass l'IP emettrice est autorisee par l'enregistrement SPF dmarc=pass l'alignement est constate, politique p=NONE 2. Le message est parti EN IPv6 : client-ip=2a02:4780:28:cc48::1. C'est precisement le cas qui echouait avant l'ajout de l'enregistrement AAAA sur mail.kanyro.tech (voir sections 7 et 8) — la correction est donc validee en production, par un tiers, et non seulement en theorie. 3. Google resout l'IP emettrice en "mail.kanyro.tech" dans son en-tete Received : le reverse IPv6 se confirme cote destinataire. 4. Le transport est chiffre de bout en bout : ESMTPSA (soumission authentifiee sur le port 587) entre le poste client et le serveur, puis TLS 1.3 avec AES-256-GCM entre le serveur et Google. 10. CONTROLE EXTERNE DE LA BASCULE VERS KANYRO.FR ------------------------------------------------------------------------- Releve du 20/09/2026 a 13:35 UTC, effectue DEPUIS UNE AUTRE MACHINE que le serveur. Meme methode qu'en section 7 : un serveur se croit toujours joignable, et une bascule de domaine se verifie de l'exterieur. 10.1 LE SITE ET LA REDIRECTION DE L'ANCIEN DOMAINE $ curl -sI https://kanyro.fr/ HTTP/2 200 content-security-policy: default-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'; img-src 'self' data:; media-src 'self'; style-src 'self'; font-src 'self'; script-src 'self'; connect-src 'self'; upgrade-insecure-requests strict-transport-security: max-age=31536000 x-content-type-options: nosniff x-frame-options: DENY referrer-policy: strict-origin-when-cross-origin permissions-policy: accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=() (aucun en-tete "server:" : la signature du serveur est retiree) $ curl -sI https://kanyro.tech/ HTTP/2 301 location: https://kanyro.fr/ (les memes en-tetes de securite sont servis sur la redirection) 10.2 LA ZONE DU NOUVEAU DOMAINE, VUE DE TROIS RESOLVEURS PUBLICS $ for r in 1.1.1.1 8.8.8.8 9.9.9.9; do dig +short @$r ... ; done MX kanyro.fr 10 mail.kanyro.fr. les 3 concordent TXT kanyro.fr (SPF) "v=spf1 mx ~all" les 3 concordent TXT _dmarc.kanyro.fr "v=DMARC1; p=none; rua=mailto:bonjour@kanyro.fr" TXT mail._domainkey.kanyro.fr "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBg..." A mail.kanyro.fr 45.133.178.165 10.3 UN CERTIFICAT PAR NOM DE SERVEUR (SNI) Chaque connexion annonce le nom qu'elle demande ; le serveur doit repondre avec le certificat de CE nom, et non avec un seul certificat pour les deux. $ for h in mail.kanyro.fr mail.kanyro.tech; do echo | openssl s_client -connect "$h:993" -servername "$h" 2>/dev/null \ | openssl x509 -noout -subject -dates -checkhost "$h" done subject=CN = mail.kanyro.fr notBefore=Sep 20 11:09:27 2026 GMT notAfter=Dec 19 11:09:26 2026 GMT Hostname mail.kanyro.fr does match certificate subject=CN = mail.kanyro.tech notBefore=Aug 26 12:48:38 2026 GMT notAfter=Nov 24 12:48:37 2026 GMT Hostname mail.kanyro.tech does match certificate $ echo | openssl s_client -connect mail.kanyro.fr:465 -servername mail.kanyro.fr \ 2>/dev/null | openssl x509 -noout -subject -checkhost mail.kanyro.fr subject=CN = mail.kanyro.fr Hostname mail.kanyro.fr does match certificate Les deux noms repondent, chacun avec son propre certificat valide : les appareils configures avant la bascule relevent le courrier sans alerte, ceux configures apres utilisent le nouveau nom. 10.4 CE QUE CE CONTROLE MONTRE ENCORE A FAIRE $ dig +short -x 45.133.178.165 mail.kanyro.tech. -> le reverse DNS designe encore l'ancien nom. Il se change chez l'hebergeur et non dans la zone ; tant qu'il n'a pas change, Postfix doit continuer d'annoncer mail.kanyro.tech (voir section 7). $ dig +short AAAA mail.kanyro.fr (aucune reponse) $ dig +short AAAA mail.kanyro.tech 2a02:4780:28:cc48::1 -> le serveur a bien une adresse IPv6, et la section 9 prouve qu'il emet en IPv6. Le SPF de kanyro.fr est "v=spf1 mx ~all" : le mecanisme mx ne compare que les adresses de la meme famille que l'emetteur, et mail.kanyro.fr n'ayant pas d'AAAA, un message parti en IPv6 avec une enveloppe @kanyro.fr retombe sur ~all. C'est EXACTEMENT le defaut corrige en aout sur l'ancien domaine (sections 7 et 8), rouvert par la bascule. Correction a poser : un enregistrement AAAA sur mail.kanyro.fr, avant de basculer le reverse. ========================================================================= Toutes les preuves annoncees pour cette realisation sont desormais produites. Ce releve peut etre rejoue a tout moment : chaque commande y figure avec sa sortie. Les sections 1 a 9 ont ete relevees le 26/08/2026 sur kanyro.tech ; la section 10 l'a ete le 20/09/2026, depuis l'exterieur, apres la bascule vers kanyro.fr. =========================================================================