En esta página
Qué verifica
Un monitor SMTP se conecta al host y al puerto desde cada una de sus regiones, lee el banner del servidor y envía EHLO datargo.monitor. El check se supera cuando el banner empieza por 220 y la primera línea de la respuesta al EHLO empieza por 250. Cualquier otro código, una conexión rechazada o un timeout lo hacen fallar. Con el subcheck de certificado activado, un check superado continúa hacia TLS, por STARTTLS o directamente en el puerto 465, y evalúa caducidad, emisor, sujeto y confianza.
Úsalo cuando
- Un servidor de correo debe aceptar conexiones en el 25 o el 587 y responder como servidor SMTP, no solo mantener el puerto abierto.
- Hay que vigilar el certificado detrás de STARTTLS. El check de certificado TLS solo hace un handshake directo, así que el certificado de un puerto de submission con STARTTLS se comprueba aquí.
- El correo saliente de una aplicación depende de un relay, y un relay que deja de responder debe abrir un incidente.
El check no inicia sesión, no envía mensajes y no ejecuta MAIL FROM ni RCPT TO, así que no dice nada sobre la entrega. Para SPF y DMARC del dominio, usa el check de higiene DNS. Usa el check IMAP para un servidor de buzones y su certificado, y el check de puerto TCP para un puerto sin diálogo de protocolo.

Configuración
Objetivo. Un nombre de host o una dirección IP sin esquema, ruta ni espacios (etiquetas de hasta 63 caracteres, 253 en total), más un puerto opcional de 1 a 65535. Sin puerto, el motor comprueba el puerto 25, aunque el formulario sugiere el 587. Cada dirección resuelta se valida antes de contactarla. Las direcciones de loopback, privadas, link-local y de metadatos de nube se rechazan, así que el monitor no puede llegar a una red interna.
| Campo | Obligatorio | Valores y valor por defecto | Significado |
|---|---|---|---|
hostHost | sí | Nombre de host o dirección IP | El servidor de correo al que se conecta la sonda, sin esquema ni ruta. Se aceptan literales IP. |
portPuerto | opcional | 1 a 65535, por defecto 25 si se omite. El formulario sugiere 587 | El puerto SMTP. Para el subcheck de certificado, 465 significa handshake TLS directo y cualquier otro puerto significa STARTTLS. |
interval_secondsIntervalo del check | opcional | Segundos, por defecto 300, máximo 24 h, mínimo según el plan | Cada cuánto ejecuta el check cada región. Va junto a config en la petición de creación, como en el ejemplo de abajo. Un valor por debajo del mínimo del plan se eleva a ese mínimo, no se rechaza. |
regionsRegiones | opcional | Subconjunto de na, eu, as, sa, af, oce. Si se omite: tantas como permita el plan, en este orden | Qué continentes ejecutan el check. Va junto a config, como interval_seconds. Más regiones de las que permite el plan se rechazan con 402, no se recortan. |
address_familiesFamilias IP | opcional | Lista con ipv4, ipv6 o ambas. Vacía u omitida significa ["ipv4"] | Cada dirección resuelta se conecta por separado. Con las dos familias, family_fail_severity (degraded por defecto, o failed) decide qué significa que falle una de ellas. |
Certificado TLS
Un check superado puede continuar hacia TLS y evaluar el certificado. En el puerto 465 usa un handshake directo, y en cualquier otro puerto el diálogo STARTTLS (banner, EHLO hasta su última línea, STARTTLS, 220). Sin el subcheck, el monitor sigue mostrando el certificado que vio, pero no se aplican ni política ni ventana de aviso.
| Campo | Obligatorio | Valores y valor por defecto | Significado |
|---|---|---|---|
tls_cert.enabled | opcional | true o false, por defecto false | Activa el subcheck. Está desactivado por defecto, y el formulario incluye el interruptor. |
tls_cert.port | opcional | Puerto, por defecto: el puerto del monitor | El puerto del handshake TLS. |
tls_cert.warn_days | opcional | Días, por defecto 14 | Por debajo de esta vida restante, el check lleva un aviso, y propietarios y administradores reciben cada hora un correo y un aviso en la app. El estado sigue en passed, y un certificado caducado hace fallar el check. |
tls_cert.issuer_regex | opcional | Expresión regular | El emisor debe coincidir, por ejemplo Let's Encrypt. |
tls_cert.subject_regex | opcional | Expresión regular | El nombre común del sujeto debe coincidir. |
tls_cert.allow_self_signed | opcional | false (por defecto) o true | Omite las comprobaciones de confianza, nombre de host y fecha en el handshake. La caducidad y las aserciones regex siguen aplicándose, y el formulario pide confirmación. Úsalo solo para relays internos con CA propia. |
Cómo se ejecuta un check
- Cada región a la que le toca el intervalo resuelve el host con el resolver propio del nodo.
- Cada dirección resuelta de la familia elegida se valida contra los rangos bloqueados y después se conecta por separado.
- Por dirección, la sonda lee la línea del banner, envía
EHLO datargo.monitory lee la primera línea de la respuesta. El diálogo completo debe terminar dentro del límite de 10 s. - Un banner que empieza por 220 y una respuesta al EHLO que empieza por 250 superan el check. Cualquier otro código, un error de E/S o un timeout lo hacen fallar.
- Solo un check superado con
tls_cert.enabledejecuta la política de certificado, una vez por check. Usa un handshake directo en el 465 y el diálogo STARTTLS en cualquier otro puerto. - Cada check lee el certificado que presenta el servidor para mostrarlo, con o sin el subcheck. Esta lectura nunca cambia el veredicto.
- El resultado de la región va al control plane. La política de alertas decide cuándo las regiones que fallan abren un incidente, por defecto cuando 2 regiones coinciden en 2 checks consecutivos.

Qué contiene un resultado
- Banner
- La línea de detalle lleva el banner que envió el servidor. Si el check falla, lleva
SMTP error: ...con la respuesta del servidor, oTimeout. - Tiempo de respuesta
- Tiempo desde la conexión hasta la respuesta al EHLO, por región y por dirección. Con varias direcciones se informa el mínimo entre ellas.
- Capa de causa
- Si el fallo estuvo en el DNS del objetivo (NXDOMAIN o NODATA) o en su aplicación, después de resolverse el nombre. Las demás causas se registran como unknown.
- Certificado
- El certificado se lee por STARTTLS o en el puerto 465. El resultado conserva su nombre común, nombres alternativos, emisor y fechas de validez, y si es autofirmado y de confianza. Con el subcheck activado, lleva el aviso en cuanto el certificado entra en su ventana de aviso.
- Región, familia, dirección
- Cada resultado lleva la región que lo midió, y un subresultado por familia IP y por dirección.
Estados y gravedad
- okEl banner empieza por 220 y la respuesta al EHLO empieza por 250. Con el subcheck activado, además se cumple la política de certificado, y un certificado dentro de su ventana de aviso mantiene este estado.
- degradadoUna familia IP falla mientras la otra responde, o fallan algunas de varias direcciones resueltas, con el
family_fail_severitypor defecto. - caídoLa conexión se rechaza, expira o se bloquea, o el host no resuelve. El check también está caído cuando el banner o la respuesta al EHLO llevan otro código. Lo mismo ocurre cuando la política de certificado falla por caducidad, por un handshake rechazado o porque no coinciden el emisor o el sujeto.
- errorLa configuración no se puede ejecutar. Cuenta como caída con gravedad critical.
Confirmado por quórum: por defecto, 2 regiones deben informar del fallo antes de que se abra un incidente. El valor por defecto de la organización pide 2 regiones y 2 checks consecutivos. Un monitor puede llevar su propia regla con número o porcentaje, checks consecutivos y duración mínima.
Planes y límites
- Intervalo mínimo
- 300 s en Free, 60 s en Pulse, 30 s en Sentinel, 15 s en Command y 10 s en Enterprise. El formulario web ofrece 30 s, 1 min, 5 min, 15 min y 1 h. Los mínimos de 15 s y 10 s solo se alcanzan por MCP.
- Regiones
- 2 de 6 en Free, 3 de 6 en Pulse y las 6 desde Sentinel.
- Monitores
- 10 en Free, 50 en Pulse, 150 en Sentinel, 500 en Command y un cupo a medida en Enterprise. Los once tipos de check de sonda comparten este cupo. Los monitores heartbeat y de agente usan cupos propios.
Desde la pipeline o un agente
La misma config sirve en el paso de despliegue, en un cliente MCP como Claude Code y en el formulario de arriba. create_monitor necesita una clave de API válida para toda la organización. Si omites regions, el plan aplica su valor por defecto.
{
"name": "Mail relay",
"type": "smtp",
"interval_seconds": 60,
"config": {
"host": "mail.example.com",
"port": 587,
"tls_cert": { "enabled": true, "warn_days": 21 }
}
}
Límites
- Sin autenticación, sin envío de mensajes y sin MAIL FROM ni RCPT TO. El check demuestra que el servidor responde, no que entrega.
- La sonda de vida lee solo la primera línea de la respuesta al EHLO. Las extensiones que anuncia el servidor no se evalúan.
- Un monitor creado sin puerto comprueba el 25, no el 587.
- SPF y DMARC del dominio no se leen aquí. Los cubre el check de higiene DNS.
- Se rechazan los objetivos en direcciones privadas, de loopback, link-local y de metadatos de nube.
- No todas las regiones sondean IPv6, así que seleccionar
ipv6restringe las regiones utilizables. El formulario ofrece IPv6 solo cuando el host resuelve a un registro AAAA o es un literal IPv6.