diff --git a/104a8694-4268-4e0a-99c7-e7ecfd47af1e/draft_overlay.json b/104a8694-4268-4e0a-99c7-e7ecfd47af1e/draft_overlay.json deleted file mode 100644 index 49ffbe6..0000000 --- a/104a8694-4268-4e0a-99c7-e7ecfd47af1e/draft_overlay.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "title": "Auto-héberger son serveur mail en 2026", - "slug": "auto-heberger-son-serveur-mail-en-2026", - "_updated_at": "2026-05-15 13:13:17", - "published": true, - "published_at": "2026-05-12 08:35", - "category": "homelab", - "tags": { - "tags": [ - "DMARC", - "SPF", - "DKIM", - "PTR" - ] - }, - "seo_title": "", - "seo_description": "" -} diff --git a/104a8694-4268-4e0a-99c7-e7ecfd47af1e/draft_overlay.md b/104a8694-4268-4e0a-99c7-e7ecfd47af1e/draft_overlay.md deleted file mode 100644 index 491b218..0000000 --- a/104a8694-4268-4e0a-99c7-e7ecfd47af1e/draft_overlay.md +++ /dev/null @@ -1,607 +0,0 @@ -# Auto-héberger son serveur mail en 2026 - -## Survivre aux règles de Gmail, Outlook et consorts - -> **Contexte** — Cet article de Clubic ([lien](https://www.clubic.com/dossier-612034-proton-mail-infomaniak-la-souverainete-de-vos-emails-reste-une-illusion-face-aux-regles-dictees-par-google.html)) rappelle une vérité technique : SMTP date de 1982, n'a aucune sécurité native, et toutes les "rustines" (SPF, DKIM, DMARC, MTA-STS, DANE) ont été conçues par Yahoo, Cisco, Microsoft, Google. Depuis février 2024 (Google) et mai 2025 (Microsoft), tout expéditeur dépassant 5000 mails/jour vers Gmail/Outlook doit configurer SPF + DKIM + DMARC, maintenir un taux de spam < 0,1 %, et fournir un lien de désinscription en un clic. -> -> Mais même en dessous de 5000/jour, ces règles s'appliquent en pratique : sans elles, ton mail finit en spam ou est rejeté. Ce dossier décrit comment monter son propre serveur mail tout en passant à travers ces filtres. - ---- - -## Sommaire - -1. [Avant de commencer : est-ce vraiment une bonne idée ?](#1-avant-de-commencer--est-ce-vraiment-une-bonne-idée-) -2. [Prérequis techniques](#2-prérequis-techniques) -3. [Architecture cible](#3-architecture-cible) -4. [Choix du fournisseur et de l'IP](#4-choix-du-fournisseur-et-de-lip) -5. [Configuration DNS complète](#5-configuration-dns-complète) -6. [Installation du stack mail](#6-installation-du-stack-mail) -7. [SPF, DKIM, DMARC : les rustines obligatoires](#7-spf-dkim-dmarc--les-rustines-obligatoires) -8. [MTA-STS, TLS-RPT, DANE : aller plus loin](#8-mta-sts-tls-rpt-dane--aller-plus-loin) -9. [PTR (reverse DNS) et HELO](#9-ptr-reverse-dns-et-helo) -10. [Warmup d'IP : la phase la plus délicate](#10-warmup-dip--la-phase-la-plus-délicate) -11. [Postmaster Tools, SNDS, FBL](#11-postmaster-tools-snds-fbl) -12. [Liste de désinscription en un clic (RFC 8058)](#12-liste-de-désinscription-en-un-clic-rfc-8058) -13. [Anti-spam entrant et hygiène](#13-anti-spam-entrant-et-hygiène) -14. [Monitoring, logs, alertes](#14-monitoring-logs-alertes) -15. [Que faire quand Gmail rejette quand même ?](#15-que-faire-quand-gmail-rejette-quand-même-) -16. [Checklist finale avant mise en prod](#16-checklist-finale-avant-mise-en-prod) -17. [Annexes : commandes utiles](#17-annexes--commandes-utiles) - ---- - -## 1. Avant de commencer : est-ce vraiment une bonne idée ? - -L'auto-hébergement mail est techniquement possible, mais c'est probablement le service le plus pénible à maintenir en 2026. Avant de te lancer, lis ça : - -**Ce qui marche bien en auto-hébergé :** -- Recevoir du mail (presque tout le monde te livre). -- Envoyer vers d'autres serveurs auto-hébergés ou pros bien configurés. -- Garder le contrôle sur tes données, tes alias, tes domaines. - -**Ce qui est dur :** -- Envoyer vers Gmail / Outlook / Yahoo / iCloud sans atterrir en spam. -- Sortir d'une blacklist une fois dedans. -- Maintenir un score de réputation IP correct sur la durée. -- Survivre à un changement unilatéral des règles côté gros acteurs (cf. février 2024 et mai 2025). - -**Stratégie réaliste recommandée :** -- Réception entrante : auto-hébergée à 100 %. Aucun risque, full contrôle. -- Envoi sortant : deux options, selon ton volume et ton tolérance au risque. - - **Option A — Pure auto-hébergée** : tu envoies directement depuis ton serveur. Faisable, mais demande un warmup, une IP propre, et un suivi continu. - - **Option B — Smart host sortant** : tu envoies via un relais réputé (un autre de tes serveurs avec une IP qui a déjà sa réputation, ou un service type Mailjet/Sendgrid/SMTP2GO en bas volume gratuit). Tes mails sortent depuis l'IP du relais, qui a déjà sa réputation faite. C'est un compromis : tu perds une partie de la souveraineté technique, mais tu gagnes énormément en délivrabilité. - -Le reste du dossier suit l'option A — tout en t'expliquant comment basculer en B si nécessaire. - ---- - -## 2. Prérequis techniques - -| Élément | Détail | -|---|---| -| Domaine | À toi, registrar peu importe, mais avec **DNSSEC activable** (cf. §8 pour DANE). | -| Serveur | VPS ou dédié, **2 vCPU / 4 Go RAM minimum**, Debian 12+ ou Ubuntu 24.04 LTS. | -| IP fixe v4 | Indispensable. **IP "résidentielle" ou IP de datacenter récemment recyclée = exclues**. | -| IP fixe v6 | Recommandée, mais désactivable si l'IPv6 du fournisseur est blacklistée. | -| PTR / reverse DNS | **Modifiable par toi**. Si l'hébergeur ne te le permet pas, change d'hébergeur. | -| Ports | 25, 465, 587, 993, 4190 ouverts sortants ET entrants. **Le port 25 sortant est bloqué chez beaucoup d'hébergeurs grand public** (OVH résidentiel, Free, etc.) : vérifie avant. | -| TLS | Certificat valide (Let's Encrypt suffit). | - -**Compétences attendues** : Linux en ligne de commande, DNS (champs A/AAAA/MX/TXT/SRV/CAA/TLSA), notion de TLS, lecture de logs `journalctl` et `/var/log/mail.log`. - ---- - -## 3. Architecture cible - -Un stack standard, éprouvé, en logiciels libres : - -``` - ┌─────────────────────────────────────┐ - │ Internet (mails entrants/sortants) │ - └─────────────────────────────────────┘ - │ - ▼ port 25 - ┌────────────────┐ - │ Postfix │ ← MTA (envoi/réception SMTP) - │ (SMTP / 25/587)│ - └────────────────┘ - │ │ │ - ▼ ▼ ▼ - ┌─────────┐ ┌─────────┐ ┌──────────┐ - │ Rspamd │ │OpenDKIM │ │ Dovecot │ ← IMAP/POP + LMTP - │(spam, │ │ (signe │ │ (livrai- │ - │ DKIM │ │ DKIM) │ │ son aux │ - │ verif, │ └─────────┘ │ boîtes) │ - │ DMARC) │ └──────────┘ - └─────────┘ │ - ▼ - Maildir / utilisateurs -``` - -**Composants** : - -- **Postfix** : MTA. Reçoit, route, envoie le SMTP. -- **Dovecot** : serveur IMAP/POP3, livraison locale (LMTP), authentification SASL pour Postfix, gestion Sieve (filtres). -- **Rspamd** : antispam moderne, fait aussi la **vérification SPF/DKIM/DMARC entrante**, le greylisting, et — option recommandée — la **signature DKIM sortante** (en remplacement d'OpenDKIM). -- **Let's Encrypt (certbot)** : TLS. -- **(Optionnel) Roundcube ou SnappyMail** : webmail. - -**Alternative tout-en-un** : [Mailcow](https://mailcow.email/) ou [Mailu](https://mailu.io/), basés sur Docker, qui empaquètent tout ça avec une interface admin. Si tu préfères ne pas tout configurer à la main, c'est légitime — la majorité des règles DNS et de délivrabilité de ce dossier restent identiques. - ---- - -## 4. Choix du fournisseur et de l'IP - -Le choix de l'hébergeur conditionne la moitié de ta délivrabilité. Avant de prendre un VPS : - -1. **Le port 25 sortant est-il ouvert ?** Beaucoup d'hébergeurs le bloquent par défaut pour limiter le spam (Hetzner l'ouvre sur demande, OVH l'ouvre selon le produit, Scaleway l'ouvre selon le compte). Pose la question au support **avant** de payer. -2. **Le PTR est-il configurable ?** Si non, change. -3. **L'IP a-t-elle été utilisée par un spammeur ?** Avant d'acheter le VPS, demande l'IP qu'on te donnera. Vérifie sur : - - [mxtoolbox.com/blacklists.aspx](https://mxtoolbox.com/blacklists.aspx) - - [multirbl.valli.org](https://multirbl.valli.org/) - - [talosintelligence.com](https://www.talosintelligence.com/) (Cisco) - - [senderscore.org](https://senderscore.org/) - - Si l'IP est listée sur Spamhaus, Barracuda, SORBS, SpamCop, **demande à l'hébergeur de te l'échanger** ou prends un autre VPS. Une fois listée, tu vas y passer des semaines. -4. **Réputation du subnet (`/24`)**. Même si ton IP est propre, si le `/24` est pourri (beaucoup de spammeurs voisins), Gmail va te traiter avec méfiance. Vérifie sur [senderscore.org](https://senderscore.org/) en saisissant ton IP — le score du subnet apparaît. - -**Hébergeurs réputés corrects pour le mail** : Hetzner, OVH (gamme dédiée, pas SoYouStart), Scaleway, Infomaniak (en VPS), Netcup. À éviter pour de l'envoi : DigitalOcean (subnets souvent grillés), Linode/Akamai (idem), AWS EC2 (le port 25 est limité par défaut, et la rate-limit est costaude). - ---- - -## 5. Configuration DNS complète - -Pour un domaine `exemple.fr` avec un serveur mail sur `mail.exemple.fr` à l'IP `203.0.113.10` (et `2001:db8::10` en v6) : - -```dns -;; Enregistrement du serveur mail lui-même -mail.exemple.fr. IN A 203.0.113.10 -mail.exemple.fr. IN AAAA 2001:db8::10 - -;; MX : qui reçoit les mails du domaine -exemple.fr. IN MX 10 mail.exemple.fr. - -;; SPF : qui a le droit d'envoyer pour ce domaine -exemple.fr. IN TXT "v=spf1 mx -all" - -;; DKIM (clé publique, le sélecteur ici est "mail") -mail._domainkey.exemple.fr. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhki..." - -;; DMARC -_dmarc.exemple.fr. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@exemple.fr; ruf=mailto:dmarc@exemple.fr; fo=1; adkim=s; aspf=s; pct=100" - -;; MTA-STS (cf. §8) -_mta-sts.exemple.fr. IN TXT "v=STSv1; id=20260509T000000;" -mta-sts.exemple.fr. IN A 203.0.113.10 - -;; TLS-RPT (rapports d'erreurs TLS) -_smtp._tls.exemple.fr. IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@exemple.fr" - -;; CAA : restreindre qui peut émettre des certifs pour ton domaine -exemple.fr. IN CAA 0 issue "letsencrypt.org" - -;; Autodiscover / autoconfig (pour les clients mail) -autoconfig.exemple.fr. IN CNAME mail.exemple.fr. -autodiscover.exemple.fr. IN CNAME mail.exemple.fr. -``` - -Détails dans les sections dédiées plus bas. - -**À ne pas oublier** : l'enregistrement PTR (reverse DNS) se configure **chez ton hébergeur**, pas dans ta zone DNS. Il doit pointer `203.0.113.10 → mail.exemple.fr`. C'est traité au §9. - ---- - -## 6. Installation du stack mail - -Sur Debian 12. Ce qui suit est volontairement condensé — pour une configuration ligne par ligne, suis [le tutoriel de référence de Workaround.org](https://workaround.org/ispmail/) qui est l'étalon depuis 20 ans. - -```bash -# Mise à jour -apt update && apt upgrade -y - -# Stack de base -apt install -y postfix postfix-mysql dovecot-core dovecot-imapd \ - dovecot-lmtpd dovecot-managesieved dovecot-sieve dovecot-mysql \ - rspamd redis-server mariadb-server certbot - -# Certificat TLS -certbot certonly --standalone -d mail.exemple.fr \ - -d mta-sts.exemple.fr \ - -d autoconfig.exemple.fr -d autodiscover.exemple.fr -``` - -### Postfix : configuration `main.cf` minimale-mais-saine - -```cfg -# /etc/postfix/main.cf -myhostname = mail.exemple.fr -mydomain = exemple.fr -myorigin = $mydomain -mydestination = # Vide : on utilise virtual_mailbox_domains -inet_interfaces = all -inet_protocols = all # IPv4 + IPv6 - -# TLS — chiffrement obligatoire -smtpd_tls_cert_file = /etc/letsencrypt/live/mail.exemple.fr/fullchain.pem -smtpd_tls_key_file = /etc/letsencrypt/live/mail.exemple.fr/privkey.pem -smtpd_tls_security_level = may -smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 -smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 -smtp_tls_security_level = may -smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 -smtp_dns_support_level = dnssec # Indispensable pour DANE -smtp_tls_security_level = dane # ou "may" si DANE pas encore prêt -smtp_host_lookup = dns - -# Restrictions anti-relais ouvert -smtpd_relay_restrictions = - permit_mynetworks - permit_sasl_authenticated - reject_unauth_destination - -smtpd_recipient_restrictions = - permit_mynetworks - permit_sasl_authenticated - reject_unauth_destination - reject_unknown_recipient_domain - reject_invalid_helo_hostname - reject_non_fqdn_helo_hostname - -# Limites raisonnables -message_size_limit = 52428800 # 50 Mo -mailbox_size_limit = 0 -recipient_delimiter = + - -# Intégration Rspamd -smtpd_milters = inet:localhost:11332 -non_smtpd_milters = inet:localhost:11332 -milter_protocol = 6 -milter_default_action = accept -milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen} - -# Livraison via Dovecot LMTP -virtual_transport = lmtp:unix:private/dovecot-lmtp -``` - -### Dovecot, Rspamd - -Ces composants demandent leurs propres fichiers de configuration. Renvoi explicite vers les tutos qui font autorité : - -- **Workaround.org / ISPmail** : [https://workaround.org/ispmail/](https://workaround.org/ispmail/) — référence francophone et anglophone, mise à jour à chaque version Debian. -- **Rspamd quickstart** : [https://www.rspamd.com/doc/tutorials/quickstart.html](https://www.rspamd.com/doc/tutorials/quickstart.html) -- **Dovecot wiki** : [https://doc.dovecot.org/](https://doc.dovecot.org/) - -Si tu veux gagner du temps, **Mailcow** (`docker compose`) est aujourd'hui la solution clé-en-main la plus fiable. - ---- - -## 7. SPF, DKIM, DMARC : les rustines obligatoires - -Sans ces trois enregistrements correctement configurés, **Gmail et Outlook rejetteront ou marqueront en spam** la majorité de tes messages — peu importe ton volume. - -### SPF (Sender Policy Framework) - -Déclare qui a le droit d'envoyer du mail pour ton domaine. - -```dns -exemple.fr. IN TXT "v=spf1 mx -all" -``` - -- `mx` : autorise les serveurs listés dans le MX du domaine. -- `-all` : **rejet strict** de tout le reste. Indispensable pour la réputation. Ne jamais utiliser `~all` (softfail) en prod : Gmail aujourd'hui considère `~all` comme un signal faible. - -Si tu envoies aussi via un relais externe (smart host) : ajoute son `include`, ex. `v=spf1 mx include:_spf.mailjet.com -all`. - -**Limite** : un enregistrement SPF doit tenir en **10 lookups DNS maximum**. Au-delà, il est invalide. Vérifie avec [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html). - -### DKIM (DomainKeys Identified Mail) - -Signe chaque mail sortant avec une clé privée. Le destinataire vérifie la signature via la clé publique publiée en DNS. - -**Génération de la clé** (Rspamd, sélecteur `mail`, clé 2048 bits) : - -```bash -mkdir -p /var/lib/rspamd/dkim -rspamadm dkim_keygen -s mail -d exemple.fr -k /var/lib/rspamd/dkim/exemple.fr.mail.key \ - -b 2048 > /var/lib/rspamd/dkim/exemple.fr.mail.txt -chown _rspamd:_rspamd /var/lib/rspamd/dkim/* -``` - -Le fichier `.txt` contient l'enregistrement DNS à publier : - -```dns -mail._domainkey.exemple.fr. IN TXT ( "v=DKIM1; k=rsa; " - "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." ) -``` - -Configuration Rspamd (`/etc/rspamd/local.d/dkim_signing.conf`) : - -```conf -allow_username_mismatch = true; -domain { - exemple.fr { - path = "/var/lib/rspamd/dkim/exemple.fr.mail.key"; - selector = "mail"; - } -} -``` - -Recharge : `systemctl restart rspamd`. - -**Vérification** : envoie un mail à [check-auth@verifier.port25.com](mailto:check-auth@verifier.port25.com), tu reçois un rapport complet SPF/DKIM/DMARC en retour. Ou utilise [https://www.mail-tester.com/](https://www.mail-tester.com/) (note sur 10). - -### DMARC (Domain-based Message Authentication, Reporting and Conformance) - -Dit aux serveurs distants quoi faire en cas d'échec SPF/DKIM, et **te renvoie des rapports** sur ce qui passe et ce qui rate. - -```dns -_dmarc.exemple.fr. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@exemple.fr; ruf=mailto:dmarc@exemple.fr; fo=1; adkim=s; aspf=s; pct=100" -``` - -- `p=none` : surveillance seule, **à utiliser pendant 2-4 semaines en démarrage** pour collecter les rapports sans pénaliser. -- `p=quarantine` : mise en spam des mails non authentifiés. Cible normale. -- `p=reject` : rejet pur. À atteindre en cible finale, **après** avoir vérifié 4 semaines de rapports propres. -- `rua` : adresse pour les rapports agrégés (quotidiens). -- `ruf` : rapports forensiques (par message). Optionnel. -- `adkim=s aspf=s` : alignement strict — le domaine de signature DKIM et le domaine SPF doivent **exactement** correspondre au domaine `From:`. - -**Lecture des rapports DMARC** : ils arrivent en XML, illisibles. Utilise un parseur : - -- [Postmark DMARC Monitoring](https://dmarc.postmarkapp.com/) (gratuit, agrège les rapports dans une UI). -- [parsedmarc](https://github.com/domainaware/parsedmarc) (auto-hébergeable, envoie dans Elasticsearch/Splunk/Grafana). - ---- - -## 8. MTA-STS, TLS-RPT, DANE : aller plus loin - -Ces standards sécurisent le **transport** entre serveurs (chiffrement TLS forcé). Gmail les regarde, Microsoft aussi. Pas obligatoires, mais ils boostent ta réputation. - -### MTA-STS - -Force les serveurs distants à utiliser TLS pour t'envoyer des mails. Trois éléments : - -**1. Enregistrement DNS TXT** : -```dns -_mta-sts.exemple.fr. IN TXT "v=STSv1; id=20260509T000000;" -``` - -**2. Sous-domaine `mta-sts.exemple.fr`** servant un fichier en HTTPS à `https://mta-sts.exemple.fr/.well-known/mta-sts.txt` : -``` -version: STSv1 -mode: enforce -mx: mail.exemple.fr -max_age: 604800 -``` - -`mode: enforce` est la cible. En démarrage, mets `mode: testing` pendant 1-2 semaines. - -**3. Certificat TLS valide** sur ce sous-domaine (déjà fait via certbot au §6). - -### TLS-RPT - -Demande aux serveurs distants de t'envoyer des rapports en cas d'échec TLS. - -```dns -_smtp._tls.exemple.fr. IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@exemple.fr" -``` - -### DANE (DNS-based Authentication of Named Entities) - -Encore plus solide que MTA-STS, mais nécessite **DNSSEC** activé sur ton domaine. Si ton registrar ne supporte pas DNSSEC, oublie DANE. - -DANE publie un hash du certificat TLS dans un enregistrement TLSA : - -```bash -# Générer l'enregistrement TLSA pour le port 25 -posttls-finger -t30 -T180 -P /etc/ssl/certs/ -lsecure mail.exemple.fr -``` - -Ou plus simplement avec [https://www.huque.com/bin/gen_tlsa](https://www.huque.com/bin/gen_tlsa) : - -```dns -_25._tcp.mail.exemple.fr. IN TLSA 3 1 1 ABC123... -``` - -**Vérification globale** de tout ton setup TLS+DANE : [https://internet.nl/mail/](https://internet.nl/mail/) (excellent, recommandé). - ---- - -## 9. PTR (reverse DNS) et HELO - -**Le PTR est probablement la cause la plus fréquente de rejet par Gmail/Outlook chez les nouveaux auto-hébergés.** - -Règle absolue : **`PTR(IP) == HELO == nom A/AAAA`**, et tout doit être un FQDN cohérent. - -Configure le PTR dans le panneau de ton hébergeur (chez OVH : "IP" → "Reverse DNS") : -``` -203.0.113.10 → mail.exemple.fr -2001:db8::10 → mail.exemple.fr -``` - -Vérifie : -```bash -dig -x 203.0.113.10 +short -# doit retourner : mail.exemple.fr. - -dig mail.exemple.fr A +short -# doit retourner : 203.0.113.10 -``` - -Dans Postfix, `myhostname = mail.exemple.fr` et c'est ce qui est annoncé en HELO. Cohérence garantie. - ---- - -## 10. Warmup d'IP : la phase la plus délicate - -**Une IP neuve = pas de réputation = défiance maximale des gros acteurs.** Tu ne peux pas envoyer 1000 mails le jour 1 sans te griller. - -### Plan de warmup sur 4 à 6 semaines - -| Semaine | Volume max/jour vers Gmail+Outlook | Volume max/jour total | Contenu | -|---|---|---|---| -| 1 | 20-50 | 100 | Mails à toi-même, comptes test sur Gmail/Outlook/Yahoo. Réponds-y, marque "non spam" si en spam. | -| 2 | 100 | 300 | Cercle proche qui sait répondre / interagir. | -| 3 | 300 | 1000 | Élargissement progressif. | -| 4 | 800 | 3000 | Ouvre aux usages normaux. | -| 5+ | 2000+ | volume cible | Stable. | - -**Règles d'or pendant le warmup :** -- **Pas de mailing list, pas de notifs automatiques en masse.** Privilégie des mails 1-à-1 conversationnels. -- **Demande aux destinataires de répondre** — un mail avec réponse a 100x le poids d'un mail ouvert silencieusement. -- **Aucun lien raccourci**, aucun pixel de tracking, aucune image lourde. -- **Stop net si ton score Senderscore baisse** ou si Gmail Postmaster Tools (cf. §11) montre du rouge. - -### Si tu as un volume immédiat à envoyer - -Bascule en **option B** (smart host) le temps du warmup, puis rapatrie progressivement en interne en répliquant les volumes ci-dessus. - ---- - -## 11. Postmaster Tools, SNDS, FBL - -Les gros acteurs te donnent des dashboards dédiés. **Inscris-toi à tous, dès la création du domaine.** - -| Service | Acteur | Usage | -|---|---|---| -| [Google Postmaster Tools](https://postmaster.google.com/) | Gmail | Réputation IP+domaine, taux de spam, authentification, encryption. **Indispensable.** | -| [Microsoft SNDS](https://sendersupport.olc.protection.outlook.com/snds/) | Outlook/Hotmail | Smart Network Data Services, qualité de l'IP. | -| [Microsoft JMRP](https://sendersupport.olc.protection.outlook.com/pm/) | Outlook | Junk Mail Reporting Program, FBL Microsoft. | -| [Yahoo CFL](https://senders.yahooinc.com/complaint-feedback-loop/) | Yahoo | Complaint Feedback Loop. | -| [Validity Sender Score](https://senderscore.org/) | Indépendant | Score sur 100, à surveiller. | - -Configure les feedback loops (FBL) : quand un destinataire clique "spam", tu reçois une notification. Ça te permet de désinscrire l'utilisateur **avant qu'il ne dégrade ta réputation**. - ---- - -## 12. Liste de désinscription en un clic (RFC 8058) - -**Exigence Google/Microsoft pour les expéditeurs en volume**, mais à mettre en place dès le début même en bas volume. - -Ajoute deux en-têtes à tous les mails non-strictement-personnels : - -``` -List-Unsubscribe: , -List-Unsubscribe-Post: List-Unsubscribe=One-Click -``` - -L'URL HTTPS doit accepter une requête **POST** (pas seulement GET) avec `List-Unsubscribe=One-Click` dans le corps, et désinscrire **immédiatement et silencieusement** sans demander de confirmation. - ---- - -## 13. Anti-spam entrant et hygiène - -Un serveur mail mal configuré côté entrée devient vite un relais de spam ou une cible. Configuration Rspamd minimale : - -```conf -# /etc/rspamd/local.d/actions.conf -reject = 15; -add_header = 6; -greylist = 4; -``` - -```conf -# /etc/rspamd/local.d/greylist.conf -expire = 1d; -``` - -Active aussi : -- **Vérification SPF/DKIM/DMARC entrante** (par défaut activée dans Rspamd). -- **RBL** (Realtime Blackhole Lists) : Spamhaus ZEN, Barracuda. Attention à ne pas multiplier — 2 ou 3 RBL fiables suffisent. -- **Greylisting** : refuse temporairement les premiers contacts, ce qui élimine 80% du spam basique. Ne pas activer sur un domaine à fort volume transactionnel (gêne les notifs). -- **Bayes** : laisse Rspamd apprendre via le dossier `Junk` de Dovecot (signal `IsSpam` / `IsHam`). - -Mises à jour : `unattended-upgrades` activé, redémarrage planifié, lecture des annonces sécu Postfix/Dovecot. - ---- - -## 14. Monitoring, logs, alertes - -Sans monitoring, tu découvres les problèmes par les utilisateurs. À mettre en place : - -- **Lecture des logs** : `journalctl -u postfix -f`, `tail -f /var/log/mail.log`, web UI de Rspamd sur `localhost:11334`. -- **Métriques** : exporter Postfix/Dovecot vers Prometheus + Grafana (`postfix_exporter`, `dovecot_exporter`). -- **Alertes** sur : - - File d'attente Postfix > 50 messages (`mailq | tail -1`). - - Score Senderscore qui chute. - - Apparition sur une RBL : surveillance automatisée par [https://multirbl.valli.org/](https://multirbl.valli.org/) ou via un script qui interroge plusieurs DNSBL en cron. - - Échec TLS-RPT (rapport entrant signalant une connexion non chiffrée). -- **Rapports DMARC** parsés régulièrement (cf. §7). - ---- - -## 15. Que faire quand Gmail rejette quand même ? - -Ça arrive. Diagnostic dans l'ordre : - -1. **Lis le code de rejet SMTP** dans `/var/log/mail.log`. Gmail renvoie des codes très explicites : - - `550-5.7.1 [203.0.113.10 19] Our system has detected that this message is likely unsolicited mail.` → contenu jugé spammy. Revois le contenu, ajoute du texte conversationnel, retire les liens douteux. - - `421-4.7.0 [203.0.113.10 15] Our system has detected an unusual rate of unsolicited mail.` → tu as dépassé un seuil. **Ralentis immédiatement**, attends 24-48h, reprends doucement. - - `550-5.7.26 ... DMARC ...` → ton DMARC ne passe pas. Revérifie SPF/DKIM/alignement. - - `550-5.7.1 ... blocked using Spamhaus.` → tu es sur une RBL. Va sur [spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) pour vérifier et demander la sortie. -2. **Va dans Postmaster Tools** (§11). Si "IP reputation" est rouge ou orange, regarde le contenu et le timing de tes envois récents. -3. **Test mail-tester** : envoie à une adresse fournie par [mail-tester.com](https://www.mail-tester.com/), obtiens une note sur 10. Vise 10/10. Toute case manquante doit être corrigée. -4. **Sortie de blacklist** : la plupart des RBL (Spamhaus, Barracuda) ont un formulaire de retrait. Spamhaus retire en quelques heures si tu corriges la cause. SORBS est plus lent. UCEPROTECT exige souvent de payer — ignore-la, peu de serveurs sérieux la consultent. -5. **Si rien ne marche**, change d'IP. C'est parfois la seule issue. Demande à ton hébergeur une IP fraîche, refais un warmup. - ---- - -## 16. Checklist finale avant mise en prod - -Avant d'envoyer le premier vrai mail : - -- [ ] Domaine avec DNSSEC activé. -- [ ] IP testée sur 5+ blacklists, propre. -- [ ] Port 25 sortant ouvert et testé (`telnet gmail-smtp-in.l.google.com 25`). -- [ ] PTR configuré et cohérent avec le HELO. -- [ ] MX, A, AAAA, SPF, DKIM, DMARC publiés et validés via [mxtoolbox.com](https://mxtoolbox.com/). -- [ ] MTA-STS publié (mode `testing` au démarrage). -- [ ] TLS-RPT publié. -- [ ] DANE/TLSA publié (si DNSSEC OK). -- [ ] CAA publié. -- [ ] Test envoyé à `check-auth@verifier.port25.com` : tout en `pass`. -- [ ] Test [mail-tester.com](https://www.mail-tester.com/) : 10/10. -- [ ] Test [internet.nl/mail/](https://internet.nl/mail/) : 100%. -- [ ] Inscription Postmaster Tools, SNDS, JMRP, Yahoo CFL. -- [ ] DMARC `p=none` au démarrage, parser de rapports en place. -- [ ] List-Unsubscribe + List-Unsubscribe-Post implémentés. -- [ ] Plan de warmup affiché et respecté. -- [ ] Monitoring file d'attente + RBL en place. -- [ ] Backup chiffré des Maildir. - -Au bout de 4 semaines de rapports DMARC propres : passage à `p=quarantine`. Au bout de 8-12 semaines : `p=reject`. - ---- - -## 17. Annexes : commandes utiles - -```bash -# Voir la file d'attente -mailq -postqueue -p - -# Forcer la tentative de livraison -postqueue -f - -# Vider la file (à utiliser avec précaution) -postsuper -d ALL - -# Tester la délivrabilité d'un domaine cible (DANE / TLS) -posttls-finger -t30 -T180 -P /etc/ssl/certs/ -lsecure gmail-smtp-in.l.google.com - -# Vérifier ses propres enregistrements -dig exemple.fr TXT +short -dig _dmarc.exemple.fr TXT +short -dig mail._domainkey.exemple.fr TXT +short -dig mail.exemple.fr MX +short -dig -x 203.0.113.10 +short - -# Tester l'envoi en SMTP authentifié -swaks --to test@gmail.com --from moi@exemple.fr \ - --server mail.exemple.fr --auth --auth-user moi@exemple.fr \ - --tls --port 587 - -# Voir en temps réel ce qu'il se passe -journalctl -u postfix -u dovecot -u rspamd -f -``` - -### Outils web à mettre en favoris - -- [https://www.mail-tester.com/](https://www.mail-tester.com/) — score sur 10 -- [https://internet.nl/mail/](https://internet.nl/mail/) — audit complet -- [https://mxtoolbox.com/SuperTool.aspx](https://mxtoolbox.com/SuperTool.aspx) — DNS, blacklists -- [https://dmarcian.com/dmarc-inspector/](https://dmarcian.com/dmarc-inspector/) — vérif DMARC -- [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html) — vérif SPF -- [https://postmaster.google.com/](https://postmaster.google.com/) — Google Postmaster -- [https://senderscore.org/](https://senderscore.org/) — réputation IP - -### Documentation de référence - -- **ISPmail / Workaround.org** — [https://workaround.org/ispmail/](https://workaround.org/ispmail/) — le tutoriel le plus complet et tenu à jour, par version Debian. -- **Mailcow docs** — [https://docs.mailcow.email/](https://docs.mailcow.email/) — pour la version conteneurisée clé-en-main. -- **Postfix officiel** — [https://www.postfix.org/documentation.html](https://www.postfix.org/documentation.html) -- **Rspamd docs** — [https://www.rspamd.com/doc/](https://www.rspamd.com/doc/) -- **RFCs essentielles** : 5321 (SMTP moderne), 7208 (SPF), 6376 (DKIM), 7489 (DMARC), 8461 (MTA-STS), 8460 (TLS-RPT), 7672 (DANE-SMTP), 8058 (One-Click Unsubscribe). - ---- - -L'auto-hébergement mail en 2026 reste possible, mais c'est devenu un sport : les règles changent, les gros acteurs durcissent leurs critères, et l'écosystème pousse vers la centralisation. Si tu réussis le warmup et tiens 6 mois sans incident, tu as gagné — mais ne baisse pas la garde, un changement unilatéral de Google peut survenir à tout moment, comme en février 2024. \ No newline at end of file diff --git a/104a8694-4268-4e0a-99c7-e7ecfd47af1e/meta.json b/104a8694-4268-4e0a-99c7-e7ecfd47af1e/meta.json index edba113..39ce7c2 100644 --- a/104a8694-4268-4e0a-99c7-e7ecfd47af1e/meta.json +++ b/104a8694-4268-4e0a-99c7-e7ecfd47af1e/meta.json @@ -4,9 +4,10 @@ "title": "Auto-héberger son serveur mail en 2026", "author": "cedric@abonnel.fr", "published": true, + "featured": false, "published_at": "2026-05-12 08:35", "created_at": "2026-05-12 08:38:14", - "updated_at": "2026-05-12 08:40:06", + "updated_at": "2026-05-15 13:13:18", "revisions": [ { "n": 1, @@ -63,5 +64,13 @@ "seo_title": "", "seo_description": "", "og_image": "", - "category": "informatique" + "category": "homelab", + "tags": { + "tags": [ + "DMARC", + "SPF", + "DKIM", + "PTR" + ] + } }