docs(courriel): faits réels du recon DNS + démarche A/B
- IP/PTR VÉRIFIÉ : mx.chezlepro.ca=69.70.26.53, FCrDNS OK, bloc Videotron contrôlé → make-or-break levé pour le primaire. - DNS public chez Namespro (pas PowerDNS) ; MX/SPF/DMARC existants à reprendre ; DKIM à (re)poser ; MX secours .55 à re-PTR s'il émet. - Phasage restructuré en deux étapes : (A) interne d'abord, (B) externe. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
1edd205d13
commit
6117e2820c
1 changed files with 59 additions and 24 deletions
|
|
@ -13,25 +13,39 @@
|
|||
| Identité | Boîtes/utilisateurs dans l'**OpenLDAP** existant (annuaire Stalwart → LDAP). Pas de comptes en double. |
|
||||
| DNS | Enregistrements publics dans la zone `chezlepro.ca` ; noms internes dans **PowerDNS**. |
|
||||
| PKI | **Deux CA distinctes** (voir §6) : Let's Encrypt pour les faces publiques, **step_ca** pour l'interne. |
|
||||
| Démarche | **Deux étapes** (voir §11) : **(A) fonctionnement INTERNE** d'abord (step_ca, LDAP, SMTP/IMAP internes, zéro dépendance publique) ; **(B) fonctionnement EXTERNE** ensuite (Namespro, Let's Encrypt, reprise du MX `.53`). |
|
||||
|
||||
Le rôle existant `serveur_sendmail` (relais sortant Postfix, sans boîtes) **reste** pour le
|
||||
courrier de notification système (via `client_smtp`/msmtp). Il ne fait pas partie de ce
|
||||
service et ne le remplace pas.
|
||||
|
||||
## 2. Prérequis BLOQUANT — l'IP publique
|
||||
## 2. Prérequis IP publique — VÉRIFIÉ (recon DNS, 2026-07-02)
|
||||
|
||||
Le full self-host **sortant** est viable seulement si :
|
||||
Le full self-host sortant exige un **PTR propre, forward-confirmed, hors blocklist**.
|
||||
C'est **déjà en place** pour le MX primaire de Chezlepro :
|
||||
|
||||
- **IP publique fixe** avec un **PTR (reverse DNS) contrôlé** pointant vers `mail1.chezlepro.ca` ;
|
||||
- IP **absente des listes noires** (Spamhaus, etc.) ;
|
||||
- ports `25 / 465 / 587 / 993 / 443 / 80` routables vers les nœuds mail ;
|
||||
- SPF/DKIM/DMARC en place + réchauffement de réputation.
|
||||
- **`mx.chezlepro.ca = 69.70.26.53`** ; PTR `→ mx.chezlepro.ca` ; **FCrDNS aller-retour OK**.
|
||||
- Bloc **`69.70.26.x` (Videotron statique)** contrôlé par Chezlepro ; PTR custom **obtenable**
|
||||
(déjà fait pour `.53`).
|
||||
|
||||
> ⚠️ **Si l'IP de sortie ne peut pas avoir un PTR propre ou est sur une blocklist grand
|
||||
> public, l'envoi vers Gmail/Outlook échouera — quelle que soit la suite.** À vérifier
|
||||
> AVANT toute implémentation.
|
||||
→ **La condition dure de délivrabilité est levée pour le primaire.** Le full self-host n'est
|
||||
pas un pari : c'est **reprendre `.53` en préservant sa réputation**.
|
||||
|
||||
**Décision ouverte : quelle IP / quel hébergement portera le mail de prod ?** (non tranché)
|
||||
Réserves :
|
||||
- **`laposte-01 = 69.70.26.55`** (MX secours) a encore le **PTR Videotron par défaut**
|
||||
(`modemcable055…`), pas `laposte-01.chezlepro.ca` — à corriger s'il doit **émettre**.
|
||||
- **DKIM** : le sélecteur `default._domainkey` est **vide** publiquement — à **(re)poser**.
|
||||
|
||||
### État de la prod Chezlepro (recon)
|
||||
| Élément | Réalité |
|
||||
|---|---|
|
||||
| DNS public | **Namespro** (`htns1/2/3.namespro.ca`) — **pas** PowerDNS. PowerDNS = interne uniquement. |
|
||||
| Bloc IP | `69.70.26.x` (Videotron statique) : `.51` apex, `.53` mx, `.55` laposte-01, `.59` git. |
|
||||
| Mail existant | MX `mx → .53` déjà en service ; SPF `-all` **correct** ; DMARC `quarantine` **correct**. |
|
||||
| Vue interne | split-horizon (NS `delaviorne.net`, IP `10.10.x`/`192.168.14.x`) — ne pas confondre avec le public. |
|
||||
|
||||
> **Conséquence** : le service mail n'est pas greenfield. Il **reprend/modernise** l'existant
|
||||
> (MX `.53`), il ne le recrée pas.
|
||||
|
||||
## 3. Topologie (2-3 nœuds)
|
||||
|
||||
|
|
@ -100,6 +114,11 @@ l'**active** avec des règles adaptées au rôle :
|
|||
|
||||
## 8. Enregistrements DNS publics (`chezlepro.ca`)
|
||||
|
||||
> **Gérés chez Namespro** (registrar/DNS public), **PAS dans PowerDNS** (qui ne sert que
|
||||
> l'interne). Un **MX** (`mx → .53`), un **SPF** (`-all`, correct) et un **DMARC**
|
||||
> (`quarantine`) existent **déjà** — à **reprendre/ajuster**, pas à recréer. Le **DKIM**
|
||||
> (`default._domainkey` vide) est à **(re)poser**.
|
||||
|
||||
```
|
||||
mail1 A <IP publique mail-01>
|
||||
mail2 A <IP publique mail-02>
|
||||
|
|
@ -126,23 +145,39 @@ _dmarc TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@chezlepro.
|
|||
- **Secrets (voûte)** : clé/mots de passe d'admin Stalwart, éventuel secret ACME, clé
|
||||
privée DKIM — via `vault_*`, câblés au rôle (comme les autres secrets).
|
||||
|
||||
## 10. Décisions ouvertes (à trancher avant l'implémentation)
|
||||
## 10. Décisions
|
||||
|
||||
1. **IP publique + PTR de prod** — le make-or-break (§2).
|
||||
2. **Emplacement du MX de secours** (§3).
|
||||
3. **Stockage** : embarqué v1 vs PostgreSQL dès le départ (§4).
|
||||
4. **Domaine(s)** desservi(s) : `chezlepro.ca` seul, ou multi-domaines (tenants) ?
|
||||
- ✅ **IP publique + PTR** — TRANCHÉ : `.53` FCrDNS OK, bloc Videotron contrôlé (§2).
|
||||
- ⬜ **Emplacement du MX de secours** (`.55` existe ; lien/PTR à cadrer) (§3).
|
||||
- ⬜ **Stockage** : embarqué v1 vs PostgreSQL dès le départ (§4).
|
||||
- ⬜ **Domaine(s)** desservi(s) : `chezlepro.ca` seul, ou multi-domaines (tenants) ?
|
||||
- ⬜ **Reprise du MX existant** : bascule directe de `.53` vers Stalwart, ou cohabitation transitoire ?
|
||||
|
||||
## 11. Phasage proposé
|
||||
## 11. Démarche en deux étapes
|
||||
|
||||
1. **Vérifier l'IP/PTR** (prérequis bloquant). Sans ça, rien.
|
||||
2. Écrire `serveur_stalwart` + le déployer sur **mail-01** dans le **bac à sable**
|
||||
(interne d'abord, ACME en mode staging/interne).
|
||||
3. Brancher **LDAP** (auth), **step_ca** (interne), **DKIM**.
|
||||
4. Ajouter **mail-02** (MX secours).
|
||||
5. Poser les **enregistrements DNS publics** + basculer l'ACME en production.
|
||||
6. Tests de bout en bout : réception, envoi vers Gmail/Outlook, SPF/DKIM/DMARC verts,
|
||||
bascule MX secours.
|
||||
### Étape A — Fonctionnement INTERNE (d'abord, sans risque)
|
||||
|
||||
But : prouver **toute la pile en interne**, en **code de prod**, dans le bac à sable.
|
||||
Aucune dépendance au public.
|
||||
|
||||
1. **Pilier identité** : `serveur_openldap` (TLS **step_ca**) validé sur un nœud du bac à sable.
|
||||
2. **`serveur_stalwart`** sur `mail-01` : TLS **step_ca** (mode `fichiers`), annuaire **LDAP**,
|
||||
DKIM interne, nftables mail.
|
||||
3. **Prouver** : réception → boîte → accès **IMAP/JMAP** → envoi **intra-écosystème**, le tout
|
||||
en TLS interne, auth LDAP.
|
||||
|
||||
*(Étape actuelle : `serveur_openldap` écrit — reste à déployer/éprouver en bac à sable.)*
|
||||
|
||||
### Étape B — Fonctionnement EXTERNE (transition prod, plus tard)
|
||||
|
||||
But : brancher sur le monde **en reprenant l'existant** (voir §2).
|
||||
|
||||
1. Basculer le TLS des faces publiques sur **Let's Encrypt** (ACME).
|
||||
2. **Reprendre `mx.chezlepro.ca` (`.53`)** — préserve PTR/réputation déjà acquis.
|
||||
3. Mettre à jour les enregistrements **chez Namespro** : MX, **DKIM** (nouveau sélecteur),
|
||||
vérifier SPF/DMARC.
|
||||
4. **MX secours `.55`** : PTR custom Videotron s'il doit émettre ; sinon réception/queue seulement.
|
||||
5. Tests bout en bout : envoi vers Gmail/Outlook, **SPF/DKIM/DMARC verts**, bascule MX secours.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue