
Annotations
Formation Odoo — Module : Configuration DNS & Délivrabilité Email
Objectif du module
Configurer les DNS pour que les emails envoyés depuis Odoo arrivent dans la boîte de réception principale (pas Promotions, pas Spam). Score cible : 9/10 sur mail-tester.com.
Leçon 1 : Comprendre pourquoi vos emails n'arrivent pas
Le problème
- Les emails Odoo tombent dans l'onglet Promotions ou Spam de Gmail
- Les balises HTML s'affichent en texte brut (
au lieu de "Bonjour")Bonjour
- Un lien "unsubscribe" s'ajoute automatiquement en bas
Pourquoi ça arrive
- Gmail analyse 3 choses pour classer un email :
- Authentification — est-ce que l'email vient vraiment de ton domaine ? (SPF, DKIM, DMARC)
- Contenu — est-ce que ça ressemble à du marketing ? (HTML lourd, images, liens, unsubscribe)
- Réputation — est-ce que ton IP/domaine a déjà envoyé du spam ?
Les 3 piliers de l'authentification email
| Record | Rôle | Analogie | |--------|------|----------| | SPF | Liste des serveurs autorisés à envoyer pour ton domaine | "Voici la liste des personnes autorisées à signer en mon nom" | | DKIM | Signature cryptographique sur chaque email | "Chaque email porte mon sceau officiel" | | DMARC | Politique : que faire si SPF/DKIM échoue | "Si quelqu'un usurpe mon identité, voici quoi faire" |
Leçon 2 : Vérifier l'état actuel de vos DNS
Outil : mail-tester.com (gratuit)
- Aller sur https://www.mail-tester.com
- Copier l'adresse email affichée (ex:
test-xxxxx@srv1.mail-tester.com) - Depuis Odoo, envoyer un email à cette adresse
- Revenir sur le site et cliquer "Vérifier le score"
- Score cible : 9/10 minimum
Vérification DNS en ligne de commande
# Vérifier SPF
dig TXT mondomaine.com +short
# Chercher : v=spf1 include:_spf.odoo.com ...
# Vérifier DKIM Odoo
dig TXT odoo._domainkey.mondomaine.com +short
# Vérifier DMARC
dig TXT _dmarc.mondomaine.com +short
Outil : Google Postmaster Tools
- https://postmaster.google.com
- Ajouter et vérifier ton domaine
- Suivre : taux de spam, réputation IP, authentification
Leçon 3 : Configurer les DNS sur IONOS
Accès
- Se connecter sur IONOS
- Aller dans Domaines & SSL > ton domaine > DNS
3.1 — SPF (autoriser Odoo à envoyer)
| Type | Nom | Valeur | |------|-----|--------| | TXT | @ | v=spf1 include:_spf-eu.ionos.com include:_spf.odoo.com ~all |
Important : un seul record SPF par domaine. Si tu as déjà un SPF, ajoute include:_spf.odoo.com dedans, ne crée pas un 2ème record TXT.
3.2 — DKIM Odoo (signature cryptographique)
| Type | Nom | Valeur | |------|-----|--------| | CNAME | odoo._domainkey | odoo._domainkey.odoo.com |
Ce CNAME pointe vers la clé DKIM publique d'Odoo. Chaque email envoyé depuis Odoo sera signé automatiquement.
3.3 — DKIM IONOS (si tu utilises aussi la messagerie IONOS)
Ces records sont généralement créés automatiquement par IONOS :
| Type | Nom | Valeur | |------|-----|--------| | CNAME | s1-ionos._domainkey | s1.dkim.ionos.com | | CNAME | s2-ionos._domainkey | s2.dkim.ionos.com |
3.4 — DMARC (politique anti-usurpation)
Supprimer le CNAME par défaut d'IONOS :
CNAME _dmarc → dmarc.ionos.fr ← SUPPRIMER
Créer un record TXT à la place :
| Type | Nom | Valeur | |------|-----|--------| | TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:contact@mondomaine.com; |
p=none (défaut IONOS) = ne rien faire → faible
p=quarantine = mettre en spam les faux emails → recommandé
p=reject = rejeter complètement les faux emails → strict (à activer plus tard quand tout est stable)
rua=mailto: = adresse qui recevra les rapports DMARC (optionnel mais utile)
Leçon 4 : Configuration DNS complète — Exemple Mayagri
Voici la config DNS finale pour mayagri.com avec Odoo + IONOS :
| Type | Nom | Valeur | Rôle | |------|-----|--------|------| | MX | @ | mx00.ionos.fr | Réception email | | MX | @ | mx01.ionos.fr | Réception email (backup) | | TXT | @ | v=spf1 include:_spf-eu.ionos.com include:_spf.odoo.com ~all | SPF | | CNAME | s1-ionos._domainkey | s1.dkim.ionos.com | DKIM IONOS | | CNAME | s2-ionos._domainkey | s2.dkim.ionos.com | DKIM IONOS | | CNAME | odoo._domainkey | odoo._domainkey.odoo.com | DKIM Odoo | | TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:contact@mayagri.com; | DMARC | | CNAME | www | studiomadson.odoo.com | Site web Odoo | | A | @ | 217.160.0.28 | Redirection |
Résultat mail-tester : 9/10
- SpamAssassin ✅
- Authentification parfaite ✅ (SPF + DKIM + DMARC)
- Pas d'image ✅
- Contenu sûr ✅
- Pas d'URL raccourcie ✅
- Pas de List-Unsubscribe ✅
- 91% texte ✅
Leçon 5 : Bonnes pratiques pour la délivrabilité
Format des emails
- Texte brut > HTML formaté (les emails perso sont en texte simple)
- Pas de
,,— juste du texte avec des retours à la ligne - Pas d'images dans le corps de l'email
- Pas de liens trackés ou raccourcis
- Pas de lien "unsubscribe" (c'est un signal marketing pour Gmail)
- Signature simple : nom, entreprise, téléphone — pas de logo, pas de HTML
Contenu
- Écrire comme un humain, pas comme un robot marketing
- Personnaliser chaque email (prénom, nom de l'entreprise, contexte)
- Pas de mots spam : "gratuit", "offre limitée", "cliquez ici"
- Court et direct — 5-7 lignes max avant la signature
Volume
- Ne pas envoyer plus de 15-20 emails/jour au début
- Monter progressivement (warm-up)
- Espacer les envois de 5+ secondes entre chaque email
- Varier les heures d'envoi
Réputation
- Vérifier régulièrement sur mail-tester.com
- Surveiller Google Postmaster Tools
- Si un email bounce, retirer l'adresse immédiatement
- Ne jamais acheter de listes d'emails
Leçon 6 : Configuration Odoo pour la délivrabilité
Dans le code d'envoi (engine.py)
# Convertir texte brut en HTML minimal (juste des
)
body_as_html = body_text.replace("\n", "
")
# mail.mail — is_notification=True supprime le footer unsubscribe
mail_id = odoo("mail.mail", "create", [{
"subject": subject,
"body_html": body_as_html,
"email_from": "Madi Karim ",
"email_to": to_email,
"auto_delete": False,
"state": "outgoing",
"mail_message_id": msg_id,
"is_notification": True, # ← supprime le lien unsubscribe
}])
Dans message_post
# email_layout_xmlid: False empêche Odoo d'ajouter un template HTML
msg_id = odoo("crm.lead", "message_post", [[lead_id]], {
"body": body_as_html,
"subject": subject,
"message_type": "email",
"email_from": "Madi Karim ",
"partner_ids": [],
"email_layout_xmlid": False, # ← pas de template HTML
})
Checklist finale
- [ ] SPF inclut
_spf.odoo.com - [ ] DKIM Odoo configuré (
odoo._domainkey→odoo._domainkey.odoo.com) - [ ] DMARC en
p=quarantine(pasp=none) - [ ] Emails en texte brut (pas de HTML)
- [ ]
is_notification: Truedans mail.mail (pas de footer unsubscribe) - [ ]
email_layout_xmlid: Falsedans message_post (pas de template) - [ ] Score mail-tester ≥ 9/10
- [ ] Google Postmaster Tools configuré
- [ ] Volume d'envoi progressif (15-20/jour max au début)