23 años desde Estocolmo
Notas del operador · Desde Estocolmo

PowerMTA — routing, IP pools y stream design básicos para construir operación seria desde el primer día

Por Wilfred Teague · Publicado el 30 de octubre de 2018 · Lectura aproximada 5 min

PowerMTA tiene reputación de ser difícil de configurar bien. La verdad es más matizada: configurar PowerMTA de manera funcional (que envíe emails) es razonablemente directo. Configurar PowerMTA aprovechando sus features distintivas (vMTAs, IP pools sofisticados, smart routing por receptor) requiere entender 4-5 conceptos centrales que la documentación cubre pero que el operador nuevo necesita ver con propósito claro. Este post cubre esos conceptos con propósito operativo, no como referencia exhaustiva.

Los 5 conceptos fundamentales en orden de uso

Para operación seria, hay cinco conceptos centrales en config.cfg que se usan continuamente:

  • vMTA (Virtual MTA): instancia lógica de envío independiente con configuración propia.
  • Domain pool: grupo de receptores externos con tratamiento similar (gmail.com + googlemail.com como pool "google").
  • Source IP / smart_source_routes: qué IP de origen usar para qué tipo de tráfico.
  • Sched / queue directives: parámetros de queueing y throttling por destino.
  • Bounce categorization: clasificación de errores SMTP en categorías procesables.

Estos cinco juntos definen el comportamiento operativo de PowerMTA. Las features avanzadas (event tracking, web monitor, FBL processor) son construcciones encima de estos fundamentos.

vMTAs — la unidad de configuración

Un vMTA es la unidad lógica básica de PowerMTA. Cada vMTA puede tener su propio source IP, su propio HELO name, su propio rate limiting, su propia configuración de retry. Una instalación de PowerMTA típicamente opera varios vMTAs simultáneamente — uno por flujo o por cliente en caso de ESP multi-tenant.

Configuración típica de un vMTA en config.cfg:


    smtp-source-host  198.51.100.10  trans-mta1.su-empresa.com
    smtp-source-host  198.51.100.11  trans-mta2.su-empresa.com
    queue-to  trans-pool@*
    deliver-only-after-job-completion  false
    max-rcpt-per-message  100

Esto define un vMTA llamado "transactional-pool" con dos IPs source distintas (rotará entre ellas), HELO names específicos por IP, queue para mensajes con tag "trans-pool", y configuración específica de delivery.

Para arquitectura multi-flujo típica, definir vMTAs separadas: transactional-pool, marketing-pool, cold-pool, alerts-pool. Cada una con sus IPs, HELO, throttling. Esta separación es base de la arquitectura.

Domain pools — agrupar receptores con tratamiento similar

Los receptores externos tienen perfiles distintos. Gmail tolera ciertos volúmenes, Microsoft tiene rate limiting más estricto, Yahoo greylista agresivamente. PowerMTA permite agrupar receptores en pools y aplicar configuración diferenciada por pool.

Configuración de domain pool:


    domain-key  *.gmail.com
    domain-key  *.googlemail.com
    domain-key  *.google.com
    max-smtp-out  20
    max-msg-rate  500/h
    queue-to  google-pool



    domain-key  *.outlook.com
    domain-key  *.hotmail.com
    domain-key  *.live.com
    domain-key  *.msn.com
    max-smtp-out  10
    max-msg-rate  200/h
    queue-to  microsoft-pool



    domain-key  *.yahoo.com
    domain-key  *.aol.com
    max-smtp-out  10
    max-msg-rate  300/h
    queue-to  yahoo-pool

Esto agrupa los dominios principales en pools y aplica throttling específico: 500 mensajes/hora a Google con hasta 20 conexiones SMTP simultáneas, 200/hora a Microsoft con 10 conexiones, 300/hora a Yahoo con 10 conexiones. Estos números son ejemplos — los reales se ajustan según observación de aceptación de cada receptor para el sender específico.

El beneficio operativo: PowerMTA respeta estos límites automáticamente. Si Microsoft empieza a rechazar por rate limiting, PowerMTA reduce el ritmo dinámicamente. Si Gmail acepta más, PowerMTA puede aumentar dentro de los límites configurados. Sin esto, throttling es responsabilidad del sender.

smart_source_routes — qué IP usa qué tráfico

smart_source_routes define las reglas de qué source IP se usa para cada tipo de tráfico. Permite separación arquitectónica: transaccional crítico siempre desde IPs específicas, marketing desde otras, cold desde otras.

Configuración:


    helo-name  trans-mta1.su-empresa.com
    job-category  transactional-critical



    helo-name  marketing-mta1.su-empresa.com
    job-category  marketing-optin

Combinado con job-category en el envelope (campo X-Job o equivalente que la aplicación pone en el mensaje), PowerMTA dirige cada mensaje a la IP correcta automáticamente. La aplicación marca el mensaje con su categoría; PowerMTA aplica la regla.

Esta separación arquitectónica protege la reputación crítica. Un mal lote de marketing nunca compromete las IPs transaccionales críticas porque van por path completamente distinto.

Sched / queue directives — comportamiento de retry

Los errores SMTP transitorios (4xx) requieren retry con backoff. PowerMTA tiene comportamiento de retry sofisticado configurable por situación.

Configuración de retry para casos típicos:


    pickup-class  default-pickup
    retry-after  default-retry



    initial-retry  5m
    max-retry-time  72h
    retry-after-temporary-failure  5m, 15m, 1h, 6h, 24h, 24h
    retry-after-greylist  15m, 30m, 1h, 4h

Esto define: primer retry a 5 minutos del error 4xx inicial, luego 15 min, luego 1h, luego 6h, luego 24h dos veces. Después de 72h total acumulado, abandonar. Para greylisting específicamente (típico de algunos receptores), esquema más agresivo en los primeros intentos.

Configuración correcta de retry es importante para deliverability: retries demasiado agresivos generan rate limiting más estricto en el receptor; retries demasiado pasivos generan timeouts y pérdida de mensajes recuperables.

Bounce categorization — convertir errores SMTP en acción

PowerMTA tiene categorización built-in de bounces que convierte códigos SMTP en categorías procesables: hard_bounce (5xx permanente, suprimir), soft_bounce (4xx, retry), spam_block (rechazo por contenido), policy_bounce (rechazo por política), other.

Esta categorización se exporta vía accounting log que el sistema downstream procesa para aplicar supresión a los hard_bounces inmediatamente. Sin esta automatización, un destinatario con buzón cerrado seguiría recibiendo intentos y degradando reputación.

Configuración del accounting:


    record-type  b
    move-interval  1h
    delete-after  30d

Esto exporta todos los bounces cada hora a un CSV que el sistema downstream consume para aplicar supresión. La latencia de procesamiento de 1 hora es aceptable para hard_bounces; para casos con necesidad real-time, use webhooks vía PMTA Web Monitor o accounting via syslog en streaming.

Pattern típico para operación serie

Reuniendo los conceptos: una operación serie típica con PowerMTA tiene esta estructura:

  • 4-6 vMTAs separados por categoría: transactional-critical, transactional-bulk, marketing-optin, alerts-internal, cold-outreach (si aplica), reserve.
  • 10-20 source IPs distribuidas entre vMTAs según necesidad de aislamiento (más IPs en categorías de mayor riesgo).
  • Domain pools definidos para Gmail, Microsoft, Yahoo, principales corporativos, otros agregados.
  • Smart routing que dirige cada mensaje a la vMTA correcta según job-category del header.
  • Throttling diferenciado por (vMTA × domain pool): transactional a Gmail puede ser 1000/hora, marketing a Microsoft puede ser 200/hora.
  • Retry policies ajustadas por categoría: transactional crítico con retries más agresivos en primeros minutos, marketing con espera más conservadora.
  • Bounce processing automatizado vía accounting logs hacia sistema de supresión.

Esta estructura es la base operativa que PowerMTA habilita. Construirla en Postfix o Exim es posible pero requiere desarrollo y mantenimiento custom significativos. PowerMTA entrega los primitives directamente.

El error operativo más frecuente

Operadores nuevos en PowerMTA frecuentemente cometen el mismo error: definir un solo vMTA gigante con todas las IPs y todo el tráfico, sin separación. Operacionalmente equivale a usar PowerMTA como Postfix sofisticado — sin aprovechar las features distintivas.

El uso correcto es separar desde día 1, incluso si el volumen actual no lo justifica obviamente. La separación se mantiene fácilmente vacía hasta que crece; consolidar varias vMTAs en una más adelante es trivial. Pero romper un vMTA gigante en varias separadas con tráfico ya en producción es proyecto significativo.

El segundo error frecuente: configurar throttling agresivo "por defensa". Un vMTA con max-smtp-out 100 y max-msg-rate 5000/h funcionará para volumen alto, pero PowerMTA aceptará todos esos mensajes y luego los receptores los rechazarán por rate limiting. El throttling debe estar en límites donde el receptor acepta, no en límites generosos que generan rejection downstream.

PowerMTA bien configurado es invisible operativamente — los emails se entregan, las métricas son sanas, los receptores aceptan el ritmo. PowerMTA mal configurado consume el tiempo del operador en troubleshooting constante. La diferencia se construye en estos primeros conceptos correctamente entendidos.

¿Necesita ayuda con infraestructura email seria?

Authorize Hosting opera infraestructura email para equipos que se toman en serio sus envíos desde 2003. Relay SMTP, Email API, PowerMTA gestionado, servidores dedicados y deliverability gestionada con soporte directo en español.