guía · api de mailgun

¿Cómo debe implementar un equipo de producto la API de Mailgun de forma segura?

Implemente la API de Mailgun detrás de un worker de servidor autorizado. Verifique el dominio de envío exacto, use la credencial de API más restringida disponible, cree una tarea de envío interna duradera y envíe datos de formulario multipart al endpoint Messages con alcance por dominio. Guarde el identificador de mensaje que devuelve Mailgun, autentique las solicitudes de webhook antes de procesarlas, deduplique los eventos y aplique los rebotes, las quejas y las bajas en el momento del envío. Mantenga la aceptación por la API, el procesamiento en Mailgun, la entrega al servidor receptor y la llegada a la bandeja de entrada como estados separados.

Defina una operación de producto acotada antes de llamar a Mailgun

Empiece con un evento de producto aprobado, como la verificación de una cuenta, un recibo, una alerta de seguridad o una notificación que el destinatario haya solicitado. Coloque Mailgun detrás de un servicio de aplicación de confianza o de un worker de cola, en lugar de exponer una credencial del proveedor o un formulario de mensajes arbitrario a navegadores y clientes móviles. Autorice al llamante, el tenant, la identidad del remitente, el destinatario, la clase de mensaje y la plantilla antes de crear los campos para el proveedor. Guarde un registro saliente interno con una clave de evento estable, el tenant, la revisión de la plantilla, las direcciones aprobadas y el estado inicial. Este registro es el sistema de referencia para las decisiones; Mailgun es la dependencia de transporte. Separar la intención de negocio de los payloads del proveedor hace que los reintentos y las auditorías sean más seguros y mantiene abierta una futura migración de proveedor. El tráfico transaccional y el que depende del consentimiento deben mantenerse diferenciados en el modelo de datos, para que las preferencias de los destinatarios, las reglas de supresión y los incidentes de reputación no se conviertan en una convención informal de las plantillas.

Verifique el dominio de envío exacto y los registros DNS

Agregue un dominio que controle la organización y publique los registros DNS que Mailgun proporciona actualmente para la verificación, la autenticación, el seguimiento y las funciones de recepción que realmente se hayan seleccionado. Revise los registros SPF y DMARC existentes antes de cambiar el DNS. No cree un segundo registro SPF en un mismo nombre de host ni reemplace una política DMARC organizacional sin su responsable. Verifique la identidad From y de firma que realmente usa la carga de trabajo, no solo un dominio padre cercano. Use un subdominio específico cuando la asignación de responsables, la separación del tráfico o una migración lo justifiquen. Después de que Mailgun indique la verificación, inspeccione un mensaje recibido de forma controlada para comprobar la dirección From visible, el dominio de firma DKIM, el return path, los resultados de autenticación y el comportamiento de las respuestas. La verificación del proveedor es evidencia de que se superó su comprobación de configuración. No demuestra el consentimiento del destinatario, la aceptación por el destino, la reputación del remitente ni la llegada a la bandeja de entrada. Conserve el historial de cambios de DNS y las instrucciones de reversión fuera del panel del proveedor.

Use credenciales con alcance limitado y el endpoint regional correcto

Mailgun documenta la autenticación HTTP Basic para sus API, con credenciales de API que difieren según su autoridad y finalidad. Un worker de envío solo debe recibir la credencial necesaria para el dominio y la operación aprobados. Mantenga separadas las claves principales de la cuenta, las claves de envío por dominio, el material de firma de webhooks y las credenciales de los entornos inferiores. Guarde los secretos directamente en un almacén de secretos gestionado y expóngalos solo al proceso de servidor que los necesita. Nunca coloque credenciales en código de cliente, control de versiones, URL, registros, analíticas, plantillas, tickets ni prompts. Seleccione la URL base de la API documentada para la región de la cuenta en lugar de suponer que todos los dominios usan el mismo host. Ensaye la rotación creando un reemplazo con un alcance equivalente, actualizando el worker, verificando el tráfico y los eventos controlados, y revocando después la credencial anterior. Genere alertas ante fallos inesperados de autenticación y autorización, porque pueden indicar una revocación, una región incorrecta, una deriva del alcance o una exposición.

Construya una única solicitud duradera a la API Messages

El endpoint Messages de Mailgun con alcance por dominio acepta campos de formulario multipart para el remitente, los destinatarios, el asunto, el contenido en texto o HTML y opciones documentadas como plantillas, adjuntos, encabezados, etiquetas, variables de destinatario, seguimiento y entrega programada. Exponga solo el subconjunto que necesita el producto. Valide la sintaxis de las direcciones y la pertenencia al tenant, limite el número de destinatarios y adjuntos, rechace la inyección de saltos de línea y renderice las plantillas aprobadas con variables tipadas. No coloque secretos ni datos personales innecesarios en etiquetas, variables personalizadas o encabezados, porque los eventos y las vistas de actividad del proveedor pueden mostrar los metadatos por separado del contenido del mensaje. Envíe desde la tarea interna reclamada y guarde el identificador de mensaje que devuelve Mailgun junto con el intento exacto. Mantenga los nombres de las opciones específicas del proveedor dentro de un único adaptador. El código de negocio debe recibir un resultado acotado de aceptado, rechazado o incierto, en lugar de conocer cada campo y cada forma de error de Mailgun.

Diseñe los reintentos en torno a la aceptación y la ambigüedad

Clasifique las respuestas antes de reintentar. Corrija los campos mal formados, los dominios no autorizados, las credenciales no válidas, los fallos de permisos y los errores de política permanentes en lugar de repetirlos. Reintente los fallos de transporte que lo admitan, los errores de servidor del proveedor y las solicitudes limitadas por frecuencia con backoff exponencial, jitter, un número finito de intentos y límites de antigüedad de la cola. Una respuesta de aceptación de la API de Mailgun significa que el proveedor aceptó la solicitud de envío para procesarla; no demuestra que el servidor de destino haya aceptado el mensaje. Un tiempo de espera agotado en el cliente es ambiguo, porque Mailgun puede haber aceptado la solicitud aunque el worker no recibiera la respuesta. Mantenga esa tarea en un estado desconocido, busque los datos de correlación guardados o los eventos posteriores y aplique una regla de conciliación deliberada antes de reenviar. El transporte de Mailgun no elimina la necesidad de una clave estable del evento de la aplicación, de que un único worker reclame la tarea, de un historial de intentos ni de controles del riesgo de duplicados. Genere alertas ante fallos repetidos por credencial, dominio, plantilla, tenant y proveedor de destino.

Autentique las solicitudes de webhook antes de analizarlas

Configure un endpoint de webhook HTTPS y conserve exactamente los campos que usa el procedimiento de firma de Mailgun. Mailgun documenta una marca de tiempo, un token y una firma derivada con la clave de firma del webhook. Valide la firma con una comparación en tiempo constante y rechace las marcas de tiempo que estén fuera del margen de vigencia de la aplicación antes de aceptar el evento. Haga seguimiento de los tokens o de los identificadores de eventos según sea necesario para resistir las repeticiones. Mantenga la clave de firma del webhook separada de las credenciales de envío y rótela mediante un proceso probado. Aplique límites de tamaño a las solicitudes y no confíe en las URL, los destinatarios, las etiquetas ni los campos del evento solo porque el cuerpo se analice correctamente. Tras la autenticación, almacene o ponga en cola el evento de forma duradera antes de devolver una respuesta correcta. Así se evita que la caída de un proceso descarte evidencia de entrega. La verificación del webhook demuestra el origen y la integridad con el secreto configurado; no demuestra que el evento de negocio pertenezca al tenant esperado hasta que la aplicación correlacione el dominio y los identificadores de mensaje del proveedor.

Gestione los reintentos de webhooks y los eventos duplicados de forma idempotente

Mailgun documenta el comportamiento de reintento de los webhooks cuando un endpoint no devuelve la respuesta de éxito esperada. El receptor debe dar por hecho que habrá entregas retrasadas y repetidas. Deduplique mediante un identificador de evento estable del proveedor cuando exista, o mediante una clave compuesta prudente que no pueda fusionar destinatarios o tipos de evento distintos. Conserve por separado la hora en que ocurrió el evento y la hora de procesamiento. Haga que las transiciones de estado sean monótonas, para que una observación anterior de aceptado o entregado no borre un fallo permanente, una queja o una baja posteriores solo porque los reintentos llegan desordenados. Devuelva una respuesta correcta solo después de la captura duradera, pero mantenga asíncrono el procesamiento de negocio costoso para que el endpoint siga siendo confiable. Monitoree los fallos de firma, la latencia de las respuestas, el volumen de reintentos, el retraso de los eventos y los registros de mensajes fallidos (dead-letter). Conserve los payloads sin procesar del proveedor solo mientras lo justifiquen las necesidades operativas y de política, con acceso restringido y minimización de las direcciones. Un webhook es una fuente de evidencia, no un permiso para exponer el historial de los destinatarios entre tenants.

Modele los eventos de Mailgun sin exagerar la entrega

Mailgun documenta tipos de evento para aceptado, entregado, fallo temporal y permanente, abierto, clic, baja, queja, almacenado y resultados de procesamiento relacionados. Asigne esos nombres a un modelo interno conservando el tipo de evento del proveedor, el identificador de mensaje, el alcance por destinatario, la marca de tiempo, la gravedad y la respuesta SMTP disponible. Aceptado describe la recepción o el avance en la cola de Mailgun. Entregado describe la observación de entrega documentada, normalmente la aceptación por el servidor de destino, pero no revela la carpeta final del buzón. Las aperturas y los clics son instrumentación de interacción, no una prueba de transporte, y las tecnologías de privacidad pueden afectarlos. Los fallos temporales pueden justificar reintentos acotados dentro del sistema de transporte; los fallos permanentes, las quejas y las bajas deben actualizar el estado de seguridad del destinatario antes de enviar cualquier tarea posterior de la aplicación. Mantenga el registro de eventos en modo solo de anexión y derive el estado visible para el usuario mediante reglas explícitas, para que soporte pueda distinguir la evidencia de la interpretación.

Aplique los fallos, las quejas y las bajas en el momento del envío

Mailgun documenta el seguimiento de los fallos de entrega, las quejas por spam y las bajas. Incorpore esas señales a un modelo de seguridad de destinatarios propio del producto con tenant, dirección, clase de mensaje, evento de origen, motivo y fecha de efecto. Compruebe ese estado justo antes de cada envío, no solo al importar la lista de una campaña. Un rebote permanente o una queja deben detener los reintentos poco seguros en el alcance aplicable. La gestión de las bajas debe respetar la clase de mensaje y los requisitos actuales del receptor o legales; no debe eludirse de forma rutinaria mediante opciones del proveedor. Proteja cualquier eliminación manual con una autorización sólida, un motivo visible y un historial de auditoría. Los datos de supresión del proveedor son una evidencia operativa valiosa, pero no son un registro completo del consentimiento. Conserve por separado el origen del consentimiento, las preferencias, las decisiones de política críticas para el producto y el historial anterior del proveedor, para que una migración no elimine la protección de los destinatarios. Pruebe la propagación de supresiones, las quejas duplicadas, los rebotes diferidos y la reactivación excepcional con identidades controladas.

Considere SendHQ como alternativa a Mailgun

SendHQ ofrece correo transaccional y correo de marketing basado en permiso con envío desde dominios verificados, correo entrante, eventos de entrega y supresiones. Revise la documentación de su API pública y pruebe la autenticación, los payloads, los errores, los identificadores, los eventos, los dominios y los flujos de trabajo de seguridad de destinatarios antes de migrar.

Preguntas frecuentes

¿Qué endpoint envía correo a través de la API de Mailgun?

Mailgun documenta un endpoint `POST /v3/{domain}/messages` con alcance por dominio que usa datos de formulario multipart y autenticación HTTP Basic. Llámelo solo desde código autorizado del lado del servidor.

¿Se debe colocar una clave de API de Mailgun en el código del navegador?

No. Guarde la credencial adecuada más restringida en un gestor de secretos del lado del servidor. Mantenga separadas las autoridades de producción, de los entornos inferiores, de administración de la cuenta, de envío por dominio y de firma de webhooks.

¿Que la API de Mailgun acepte un envío significa que el correo se entregó?

No. Significa que Mailgun aceptó el envío para procesarlo. Los eventos autenticados pueden informar más tarde de la entrega al servidor de destino o de un fallo, mientras que la llegada a la bandeja de entrada sigue siendo un resultado independiente del lado del receptor.

¿Cómo se deben autenticar los webhooks de Mailgun?

Valide la marca de tiempo, el token y la firma documentados por Mailgun con la clave de firma del webhook antes de procesarlos. Aplique controles de vigencia y contra repeticiones y, después, capture el evento de forma duradera antes de confirmarlo.

¿Se deben reintentar todos los fallos de la API de Mailgun?

No. Corrija los errores de validación, autenticación, dominio, permisos y política permanente. Use backoff acotado para los fallos transitorios que lo admitan y concilie los tiempos de espera ambiguos antes de reenviar.

¿Puede SendHQ reemplazar a Mailgun?

Posiblemente. SendHQ ofrece correo transaccional y correo de marketing basado en permiso con envío desde dominios verificados, correo entrante, eventos de entrega y supresiones. Revise la documentación de su API pública y pruebe su integración antes de migrar.

Fuentes