5.4 KiB
Executable File
PowerMTA — Guide Expert Complet
Architecture PowerMTA
PowerMTA est un MTA (Mail Transfer Agent) haute performance conçu pour l'envoi de masse. Il se distingue des MTAs classiques (Postfix, Sendmail) par sa capacité à gérer des millions d'emails avec un contrôle fin par IP, domaine et ISP.
Composants
- pmtad : Le daemon principal qui gère les queues et l'envoi
- pmta : CLI pour interagir avec pmtad
- pmtahttpd : Interface web de monitoring (par défaut port 8080)
- pickup : Directory monitoring pour injection de fichiers
Fichier de configuration principal
/etc/pmta/config — fichier monolithique qui contient TOUTE la configuration.
Concepts clés
Virtual MTA (VMTA) : Un canal d'envoi virtuel associé à une IP source et un domaine HELO. Chaque VMTA peut avoir ses propres règles de throttling, DKIM, et backoff.
<virtual-mta mta-gmail>
smtp-source-host 1.2.3.4 mail.mondomaine.com
<domain gmail.com>
max-smtp-out 5 # 5 connexions simultanées max
max-msg-per-connection 10 # 10 messages par connexion
max-msg-rate 100/h # 100 emails/heure max
bounce-after 4d12h # Arrêter les retries après 4.5 jours
retry-after 60m # Réessayer après 60 minutes
</domain>
</virtual-mta>
VirtualMTA Pool : Groupe de VMTAs pour distribuer le trafic.
<virtual-mta-pool pool-warmup>
virtual-mta mta-ip1
virtual-mta mta-ip2
virtual-mta mta-ip3
</virtual-mta-pool>
Domain Configuration : Règles par ISP de destination.
<domain hotmail.com,outlook.com,live.com>
max-smtp-out 3
max-msg-per-connection 5
max-msg-rate 50/h
retry-after 30m
bounce-after 4d12h
</domain>
<domain gmail.com>
max-smtp-out 10
max-msg-per-connection 20
max-msg-rate 500/h
retry-after 15m
bounce-after 3d
</domain>
<domain yahoo.com,aol.com>
max-smtp-out 5
max-msg-per-connection 10
max-msg-rate 200/h
retry-after 30m
bounce-after 4d
</domain>
DKIM Configuration
<domain mondomaine.com>
dkim-sign yes
dkim-identity @mondomaine.com
dkim-selector s1
dkim-key /etc/pmta/dkim/mondomaine.com.s1.key
dkim-algorithm rsa-sha256
dkim-headers from:to:subject:date:message-id:mime-version:content-type
</domain>
Accounting (Logs d'envoi)
<acct-file /var/log/pmta/acct.csv>
records d,b,f,rb # delivered, bounced, feedback, remote-bounce
record-fields d timeQueued,timeImpacted,dsnAction,dsnStatus,dsnMta,dsnDiag,bounceCat,srcMta,dlvSourceIp,dlvDestinationIp,dlvEsmtpAvailable,dlvSize,vmta,orig,rcpt,dlvType,jobId,envId,header_subject
move-to /var/log/pmta/archive/
move-interval 1h
delete-after 7d
</acct-file>
Commandes essentielles
# Status global
pmta show status
# Status par queue
pmta show queue
# Status par VMTA
pmta show vmtas
# Pause un VMTA
pmta pause queue --vmta mta-ip1
# Resume
pmta resume queue --vmta mta-ip1
# Voir les bounces
pmta show bounce
# Forcer le reload de config
pmta reload
# Voir les connexions actives
pmta show connections
# Stats par domaine de destination
pmta show topdomain
# Purger une queue
pmta delete queue --vmta mta-ip1 --domain gmail.com
IP Warming Schedule (Best Practice)
| Jour | Emails/IP/jour | Cible ISP | Action si bounce > 5% |
|---|---|---|---|
| 1 | 50 | Gmail uniquement | STOP immédiat |
| 2 | 100 | Gmail + Outlook | Réduire volume |
| 3 | 250 | Gmail + Outlook | Analyser logs |
| 4 | 500 | Tous ISPs | Vérifier seed tests |
| 5 | 1,000 | Tous ISPs | |
| 6 | 2,000 | Tous ISPs | |
| 7 | 3,500 | Tous ISPs | |
| 8-10 | 5,000 | Tous ISPs | |
| 11-14 | 10,000 | Tous ISPs | |
| 15-21 | 25,000 | Tous ISPs | |
| 22-30 | 50,000 | Tous ISPs | |
| 30+ | 100,000+ | Tous ISPs | Volume de croisière |
Règle d'or : Ne JAMAIS doubler le volume d'un jour à l'autre. Augmentation max de 50-75%.
Bounce Categories (PowerMTA)
- 10 : Hard bounce (adresse invalide) → SUPPRIMER immédiatement
- 20 : Soft bounce (mailbox full, temp error) → Réessayer 3 fois puis supprimer
- 30 : Block bounce (IP/domain bloqué) → URGENT : vérifier réputation
- 40 : Technical bounce (DNS, connexion) → Vérifier infrastructure
- 50 : Content bounce (spam filter) → Revoir le contenu
- 60 : Policy bounce (rate limit, auth) → Ajuster throttling
- 70 : Protocol bounce → Vérifier configuration SMTP
Troubleshooting courant
Problème: Gmail met tout en spam
- Vérifier Google Postmaster Tools → reputation check
- Vérifier SPF/DKIM/DMARC alignment
- Réduire le volume drastiquement (retour à jour 1)
- Améliorer engagement (segmenter contacts actifs uniquement)
- Vérifier contenu : pas de raccourcisseurs URL, pas d'images seules, ratio texte/HTML
Problème: Outlook 421 4.7.0 throttling
- Réduire max-smtp-out à 2-3
- Réduire max-msg-rate à 30/h
- Augmenter retry-after à 60m
- Enregistrer sur SNDS (Smart Network Data Services)
- Vérifier Return-Path alignment
Problème: Yahoo deferring
- Yahoo utilise le Complaint Feedback Loop → s'inscrire
- Réduire volume
- Vérifier CFL (complaint rate) < 0.1%
- Yahoo décommissionne les IPs avec complaint > 0.3%