La seguridad de las claves de API se resume en cuatro hábitos: dar a cada clave el conjunto mínimo de permisos que necesita, guardarla en un almacén de secretos adecuado, rotarla sin tiempo de inactividad y tener un plan listo para el día en que una se filtre. Una clave de envío filtrada permite a cualquiera enviar correos como si fuera tú, por lo que pone en riesgo tu reputación como remitente además de tus datos.
Comprueba los nombres de los permisos en tu cuenta. Los nombres de permisos de esta guía son ejemplos del patrón. Usa las opciones que tu cuenta de MigoSMTP ofrece realmente y elige la más restrictiva que funcione.
Por qué se filtran las claves
| Cómo se filtra | Ejemplo | Prevención |
|---|---|---|
| Se sube a un repositorio | Un archivo de configuración con una clave se envía a un repositorio público o compartido | Usa variables de entorno, archivos de exclusión y análisis de secretos |
| Se entrega al cliente | Una clave dentro de JavaScript o de una aplicación móvil | Llama a tu propio servidor en su lugar |
| Se comparte en chats o tickets | Una clave pegada en un hilo de soporte | Comparte mediante un gestor de secretos y rota si queda expuesta |
| Se deja en una cuenta de alguien que se va | Un antiguo contratista aún conserva la clave | Rota cuando se vayan personas |
| Se registra por accidente | Un registro de depuración imprime las cabeceras de la solicitud | Enmascara los secretos en los registros |
| Servidor comprometido | Un malware lee las variables de entorno | Aplica parches a los servidores y limita a qué puede acceder cada uno |
Paso 1: una clave por aplicación y entorno
Crea claves separadas para producción, preproducción y cada aplicación que envíe correo. Ponles nombres que puedas reconocer en un registro de auditoría.
| Nombre de la clave | La usa | Permiso |
|---|---|---|
| shop-production | La tienda en línea, correos de pedidos | Solo envío |
| shop-staging | Entorno de pruebas | Solo envío, a direcciones de prueba |
| crm-production | El CRM, envío de campañas | Envío y gestión de contactos propios |
| webhooks-reader | Una tarea de informes | Solo lectura de eventos |
| ops-admin | Una persona concreta, tareas poco frecuentes | Acceso completo con autenticación de dos factores |
Paso 2: aplica el mínimo privilegio
Pregunta de cada clave: ¿qué es lo mínimo que necesita hacer? Enviar correo no requiere leer tu lista de contactos, cambiar el DNS ni gestionar la facturación, y una tarea de informes no debería poder enviar en absoluto.
- Prefiere una clave de solo envío para cualquier sistema que solo entregue mensajes.
- Reserva la gestión de cuenta, facturación y usuarios para personas con autenticación de dos factores, no para claves.
- Revisa los permisos cada trimestre y elimina lo que ya no se necesite.
- Si tu cuenta ofrece restricciones por dirección IP, dominio o límite de velocidad, úsalas. Consulta la configuración de seguridad de la cuenta para ver qué hay disponible.
Paso 3: almacena las claves de forma segura
Carga la clave en tiempo de ejecución desde el entorno o desde un gestor de secretos. A continuación se muestra un patrón mínimo.
# .env (never commit this file)
MIGOSMTP_API_KEY=replace-with-your-key
# .gitignore
.env
*.pem
<?php
$key = getenv('MIGOSMTP_API_KEY');
if (!$key) {
throw new RuntimeException('API key is not configured');
}
Añade análisis de secretos. Activa el análisis de secretos en tu plataforma de código y ejecuta un escáner en tu canal de compilación. Detecta las claves antes de que lleguen a una rama compartida y te avisa si alguna se cuela.
Paso 4: rota sin tiempo de inactividad
- Crea la clave nueva. Dale los mismos permisos y un nombre con la fecha o la versión.
- Guárdala. Añádela a tu gestor de secretos o a la configuración del entorno.
- Despliega. Publica el cambio y reinicia los servicios que leen la clave.
- Verifica. Revisa los registros de entrega para confirmar que el tráfico usa la clave nueva.
- Revoca la clave antigua. Hazlo solo después de que el tráfico se haya trasladado. Espera un breve periodo y comprueba si hay fallos.
- Regístralo. Anota la fecha, el motivo y quién lo hizo.
Paso 5: supervisa el abuso
| Señal | Qué puede significar | Acción |
|---|---|---|
| Volumen muy superior al normal | Una clave filtrada o un bucle en tu código | Pausa la clave e investiga |
| Destinatarios nuevos o desconocidos | Spam o phishing enviado con tu clave | Revoca la clave y revisa los mensajes |
| Envíos a horas inusuales | Abuso automatizado | Comprueba la IP de origen y restringe el acceso |
| Aumento de rebotes o quejas | Destinatarios incorrectos o abuso | Revisa la supresión y las fuentes, consulta la lista de comprobación de spam |
| Solicitudes desde direcciones IP nuevas | Una clave usada fuera de tus servidores | Añade una lista de permitidos y rota |
Si una clave se filtra: la primera hora
| Minutos | Haz esto |
|---|---|
| 0 a 10 | Revoca la clave. Si aún no puedes desplegar un reemplazo, acepta una breve interrupción antes que un abuso continuo |
| 10 a 30 | Crea y despliega una clave nueva. Confirma que el envío es normal |
| 30 a 60 | Revisa el registro de entrega en busca de mensajes que no enviaste. Comprueba las tasas de quejas y rebotes y las listas de bloqueo |
| Después | Averigua cómo se filtró, elimina el origen, rota los secretos relacionados y anota lo que aprendiste |
Si se enviaron correos en tu nombre, sigue la guía de eliminación de listas de bloqueo y contacta con soporte para que la revisión de la cuenta tenga contexto.
¿Crees que una clave quedó expuesta? Revócala primero y luego contáctanos con el nombre de la clave y la hora para que podamos ayudarte a revisar los envíos recientes.
Lecturas adicionales y fuentes
Preguntas frecuentes
¿Por qué una clave de API de correo es tan sensible?
Cualquiera que tenga una clave de envío puede enviar correo como si fuera tú. Los atacantes usan claves filtradas para enviar phishing y spam en cuestión de minutos, lo que puede hacer que tu dominio y tu IP acaben en listas de bloqueo y que tu cuenta sea suspendida. El coste está en la reputación, y repararla lleva semanas.
¿Qué significa mínimo privilegio para las claves de API?
Significa que cada clave puede hacer solo lo que su tarea necesita y nada más. Una clave que usa un formulario web para enviar correo no debería poder leer contactos, cambiar dominios ni gestionar la facturación. Si se filtra, el daño se limita a lo que esa clave tenía permitido hacer.
¿Debo usar una sola clave para todo?
No. Usa una clave distinta para cada aplicación y entorno. Si una se filtra, revocas solo esa clave, y tus registros muestran de qué sistema procede cada mensaje. Las claves compartidas hacen que la respuesta a incidentes sea lenta y arriesgada.
¿Dónde debo almacenar las claves de API?
Usa variables de entorno o un gestor de secretos, y cárgalas en tiempo de ejecución. No pongas las claves en el código fuente, en el front end de un sitio web o de una aplicación móvil, en repositorios públicos, en tickets ni en chats. Añade a tu archivo de exclusión los archivos de configuración que contengan secretos.
¿Con qué frecuencia debo rotar las claves?
Una regla habitual es cada 90 días para las claves de producción, e inmediatamente cuando se va una persona con acceso, se pierde un portátil o se sospecha una filtración. Más importante que el intervalo es contar con un proceso de rotación que ya hayas practicado.
¿Cómo roto una clave sin tiempo de inactividad?
Crea una clave nueva, añádela a tu almacén de secretos, despliega el cambio, confirma que el tráfico usa la clave nueva y solo entonces revoca la antigua. Nunca revoques primero, porque eso provoca una interrupción mientras despliegas.
¿Qué debo hacer si se filtra una clave?
Revoca la clave de inmediato, crea una de reemplazo, despliégala, revisa los envíos recientes en busca de mensajes que no enviaste y comprueba si hay inclusiones en listas de bloqueo y picos de quejas. Después averigua cómo se filtró y cierra esa vía.
¿Cómo puedo saber que una clave se está usando de forma abusiva?
Busca aumentos repentinos de volumen, destinatarios nuevos o inusuales, envíos a horas extrañas, un aumento de rebotes o quejas y solicitudes desde direcciones IP desconocidas. Las alertas sobre el volumen y la tasa de rebotes te dan un aviso temprano.
¿Las credenciales SMTP son distintas de las claves de API?
Cumplen el mismo propósito, que es demostrar que tienes permiso para enviar, y requieren el mismo cuidado. Trata el usuario y la contraseña SMTP como una clave de API: un conjunto por aplicación, almacenado como secreto y rotado según un calendario. Consulta la guía de configuración SMTP para ver los detalles de conexión.
¿Puedo poner una clave de API en una aplicación móvil o en JavaScript de una página web?
No. Todo lo que se entrega a un dispositivo o a un navegador puede extraerse. Envía el correo desde tu propio servidor y deja que la aplicación o la página llame a tu servidor, que a su vez llama a la API de correo con la clave.