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

Relay SMTP para alertas operacionales y notificaciones de sistema — la categoría de email donde la fiabilidad pesa más que cualquier otra cosa

Por Wilfred Teague · Publicado el 17 de junio de 2021 · Lectura aproximada 6 min

Hay una categoría de email donde la fiabilidad pesa más que cualquier otra cosa: las alertas operacionales. Cuando PagerDuty manda un alert por incident crítico, cuando Datadog detecta una anomalía en producción, cuando un cron job falla y necesita avisar al equipo, cuando un sistema de seguridad detecta intrusión y debe escalar — el email de alert tiene que llegar, tiene que llegar rápido, y tiene que llegar siempre. No hay margen para "ya llegará". Este post cubre cómo configurar relay SMTP para esta categoría específica de tráfico, donde los compromisos son distintos al transaccional típico.

Por qué las alertas operacionales son categoría aparte

Tres características hacen este tráfico distinto al email transaccional convencional:

Latencia importa de verdad. Una factura que llega 2 minutos tarde es indiferente al usuario. Un alert de monitoring que llega 2 minutos tarde puede significar que el incident escaló sin que el equipo se enterara, multiplicando el tiempo de detección y resolución. Para alertas, latencia objetivo es típicamente bajo 30 segundos extremo a extremo.

Volumen es bajo pero spiky. Una operación normal puede generar 50-200 alerts diarios. Durante un incident grande puede generar 500-2.000 en pocos minutos (cascada de alerts correlacionados). El relay debe absorber spikes sin degradación de latencia ni rate limiting que retrase mensajes críticos.

El receptor es típicamente pequeño y conocido. Las alerts van a equipo técnico interno, dirección de admin@su-empresa.com, lista de oncall, integración con PagerDuty/Opsgenie. No es envío masivo a clientes. La reputación de IP a estos receptores es menos crítica (Microsoft Office 365 corporativo del propio equipo, o Gmail Workspace donde admin gestiona políticas), pero la entrega individual de cada mensaje sí lo es.

Tipos de tráfico de alertas — cada uno con su patrón

Las alertas operacionales no son un solo flujo — son varios, con perfiles distintos:

Monitoring tools: Datadog, New Relic, Prometheus Alertmanager, Grafana, Nagios, Zabbix, PRTG. Estos generan alerts cuando métricas cruzan thresholds. Volumen base bajo (decenas a cientos diarios), spikes durante incidents. Configuración SMTP típica en cada herramienta apunta al relay.

Incident management: PagerDuty, Opsgenie, VictorOps, Splunk On-Call. Reciben alerts upstream y escalan vía email a oncall, plus SMS y push. El email es path principal para confirmación y contexto detallado.

System cron jobs: backups que reportan resultado, ETL pipelines que confirman ejecución, scripts que validan integridad y notifican si algo está mal. Volumen bajísimo (decenas diarios) pero predecible.

Security alerts: SIEM (Splunk, Elastic SIEM, Sumo Logic), endpoint detection (CrowdStrike, SentinelOne), Cloud security (AWS GuardDuty, GCP Security Command Center). Tráfico variable, picos durante incidents de seguridad. Requisito de auditabilidad: cada alert debe tener trazabilidad clara.

Application errors: Sentry, Rollbar, Bugsnag, Honeybadger reportan exceptions a equipo dev. Volumen muy variable según madurez del producto (apps maduras: pocos diarios; apps en desarrollo activo: cientos).

Infrastructure events: cloud providers (AWS, GCP, Azure) envían notificaciones de cambios de instancia, advertencias de billing, mantenimiento programado. Volumen bajo pero crítico para evitar sorpresas operativas.

Requisitos específicos del relay para este tráfico

Cuatro requisitos que distinguen un relay adecuado para alertas de uno que solo "envía emails":

Latencia consistente. La métrica clave es latencia P99 (percentil 99): no la latencia promedio, sino el peor caso del 99% de mensajes. Un relay que entrega el promedio en 5 segundos pero el P99 en 90 segundos es problema operativo: 1 de cada 100 alerts llega muy tarde, exactamente cuando importa más. Buscar relays con SLA de latencia P99 bajo 30 segundos.

Sin rate limiting agresivo en cuenta. Algunos proveedores aplican rate limits por minuto u hora que tienen sentido para envío masivo pero estrangulan tráfico spiky de alerts. Durante incident grande, 1.500 alerts en 5 minutos no debe encontrar rate limit que retrase los últimos 500. Verificar política del proveedor antes de comprometerse.

Multi-region o redundancia geográfica. Si el relay tiene un solo data center y ese data center cae, las alerts no salen — exactamente cuando hay un incident. Relays serios tienen presencia multi-region con failover automático. Para alerts críticas, esto es requisito.

Logs detallados accesibles inmediatamente. Cuando un alert no llegó al destinatario y el equipo está en post-mortem, necesita evidencia clara: ¿salió de la aplicación? ¿la aceptó el relay? ¿el receptor lo aceptó pero filtró a spam? ¿hubo error TLS? Logs detallados en dashboard accesible (no solo CSV exportado al día siguiente) son críticos para troubleshooting durante incidents.

Configuración práctica por herramienta

Prometheus Alertmanager — configuración SMTP en alertmanager.yml:

global:
  smtp_smarthost: 'relay.proveedor.com:587'
  smtp_from: 'alerts@su-empresa.com'
  smtp_auth_username: 'usuario'
  smtp_auth_password: 'contraseña'
  smtp_require_tls: true

route:
  receiver: 'oncall-team'
  group_by: ['alertname', 'cluster']
  group_wait: 10s
  group_interval: 30s
  repeat_interval: 4h

receivers:
  - name: 'oncall-team'
    email_configs:
      - to: 'oncall@su-empresa.com'
        send_resolved: true

Nagios — comando contact en commands.cfg:

define command {
    command_name notify-host-by-email
    command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendmail -F "Nagios Alerts" $CONTACTEMAIL$
}

Para que sendmail apunte al relay externo, configurar Postfix local como nullclient relayhost:

# /etc/postfix/main.cf
relayhost = [relay.proveedor.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt

System cron jobs: configurar mail relay en el crontab via MAILTO env var, y asegurar que /etc/mailname y postfix relay están bien configurados. Patrón estándar Unix.

PagerDuty: en Email Integration, configurar email rules. PagerDuty acepta emails dedicados por servicio; cualquier email a service-name@your-subdomain.pagerduty.com crea incident. La aplicación que envía alerts apunta a esa dirección via su SMTP relay, PagerDuty hace el resto.

Separación de flujos: la regla de oro

El error más caro en infraestructura de alerts: compartir IPs y reputación con el envío de marketing o transaccional alto volumen. Si la IP que envía 100.000 newsletters mensuales acaba con problema reputacional (un mal lote, complaints elevadas, blacklist incident), los alerts que comparten esa IP también degradan. Cuando el equipo necesita el alert, no llega o llega tarde por razón completamente ajena a las alerts.

La práctica correcta: dedicar una IP separada para alerts críticas. Volumen bajo (cientos diarios) significa que esa IP nunca entra en zona de stress de reputación, mantiene reputación excelente porque solo envía a destinatarios conocidos que esperan el email. Es ineficiencia económica aparente (una IP "subutilizada") pero es seguro arquitectónico real.

Para operaciones que justifican la inversión, separar más granularmente: una IP para alerts de monitoring, otra para alerts de seguridad, otra para system cron. Cada flujo en su IP, cada uno con reputación independiente. Si una falla, las otras siguen.

Monitoreo del propio canal de alerts

El meta-problema: ¿cómo se sabe si el canal de alerts está funcionando? Si el canal cae, el alert que diría "el canal cayó" no llegará. La solución estándar son heartbeats: alerts sintéticos periódicos que confirman que el pipeline funciona end-to-end.

Configuración típica: cada 5-15 minutos, una alert sintética se genera, pasa por el relay, llega al destinatario monitoreado. Si en 30 minutos no se ha recibido heartbeat esperado, otro sistema (independiente del primero) escala vía SMS o llamada telefónica. Herramientas tipo Dead Man's Snitch, Cronitor o Healthchecks.io implementan este patrón out-of-the-box.

Sin heartbeat, el canal de alerts es agujero ciego: silencioso significa "todo bien" o "el canal está caído" — indistinguible. Con heartbeat, el silencio prolongado se detecta y se escala antes de que se necesite el canal para algo crítico.

El email de alerts operacionales no es glamouroso. No mueve revenue directo, no aparece en KPIs de marketing, no genera conversaciones en juntas. Pero cuando algo va mal en producción, el sistema que lleva esos primeros segundos de información al equipo correcto es la diferencia entre 5 minutos de impacto y 5 horas. La inversión en infraestructura adecuada para este flujo paga por sí sola en el primer incident grande que se evita escalar.

¿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.