Ajustes de seguridad
La página Seguridad reúne las claves de API de tu organización y todo lo que protege tu clave pública frente a abusos.

Quién puede usar esta página
Sección titulada «Quién puede usar esta página»| Rol | Acceso |
|---|---|
| Propietario, Administrador | Ven y cambian todo. |
| Desarrollador | Solo lectura: ve las claves y los ajustes, pero sin botones y con todos los campos desactivados. |
| Lector, Facturación | Sin acceso: la página muestra un aviso de que tu rol no lo permite. |
Guardar los cambios
Sección titulada «Guardar los cambios»Las acciones sobre las claves (Rotar clave, Nueva clave privada y Revocar) se aplican en cuanto las confirmas.
Las claves de Turnstile de Protección contra bots (Turnstile) se guardan con el botón propio de la tarjeta, Guardar claves.
El resto de ajustes de la página (sitios web permitidos, interruptores de protección contra abusos,
apps móviles, lista de bloqueo, rate limit, dominios de enlaces permitidos, correos por destinatario
y la opción para cuando se acaban los créditos) son solo un borrador hasta que haces clic en
Guardar en la esquina superior derecha. El botón solo se activa cuando algo ha cambiado. Cada
guardado queda registrado en el registro de auditoría como
security.updated.
Clave pública
Sección titulada «Clave pública»La tarjeta Clave pública muestra tu clave pk_… con un botón para copiarla. Es la clave que
pones en tu sitio web y se puede publicar sin riesgo, porque las solicitudes que la usan se comprueban
con los sitios web permitidos, la CAPTCHA y los rate limits. Consulta
Claves públicas y privadas.
Cómo rotar la clave pública
Sección titulada «Cómo rotar la clave pública»Rótala si detectas abusos a pesar de tus otras protecciones.
- Haz clic en Rotar clave.
- Confirma con Rotar clave en el diálogo ¿Rotar la clave pública?.
- Copia la clave nueva y despliégala en tu sitio web.
La clave antigua sigue funcionando 24 horas. Hasta entonces, la tarjeta muestra una nota que
indica qué clave anterior sigue funcionando y hasta cuándo. Después, las solicitudes con la clave
antigua fallan con invalid_public_key.
Claves privadas
Sección titulada «Claves privadas»Las Claves privadas son solo para servidores: el SDK de Node, cURL, tu backend. La tabla muestra el Nombre de cada clave con su fecha de creación, los cuatro últimos caracteres en Clave y cuándo se usó por última vez en Último uso (Nunca si aún no se ha usado).
Una organización puede tener como máximo 20 claves privadas activas.
Cómo crear una clave privada
Sección titulada «Cómo crear una clave privada»- Haz clic en Nueva clave privada.
- Escribe un Nombre que indique dónde la vas a usar, p. ej. «Backend de producción», y haz clic en Crear.
- El diálogo Tu nueva clave privada muestra la clave completa. Cópiala ahora y guárdala en los secretos de tu servidor o en tu gestor de contraseñas.
- Haz clic en La he guardado en un lugar seguro.
Cómo revocar una clave privada
Sección titulada «Cómo revocar una clave privada»- Haz clic en Revocar en la fila de la clave.
- Confirma con Revocar en el diálogo.
La revocación es inmediata: las solicitudes con esa clave se rechazan al momento con
invalid_private_key. Para sustituir una clave sin
interrupciones, crea primero la nueva, despliégala, comprueba que el Último uso de la antigua deja
de cambiar y solo entonces revócala.
Sitios web permitidos
Sección titulada «Sitios web permitidos»Solo los dominios de la lista Sitios web permitidos pueden enviar con tu clave pública. Frontmail
los compara con la cabecera Origin del navegador. Los detalles están en
Orígenes permitidos.
Formatos aceptados:
| Entrada | Coincide con |
|---|---|
example.com |
Exactamente este dominio. |
*.example.com |
Cualquier subdominio de example.com. |
localhost:3000 |
Un host con un puerto concreto: útil para el desarrollo local. |
Si pegas una URL completa como https://example.com/contact, el panel conserva solo el host.
Cómo permitir un sitio web
Sección titulada «Cómo permitir un sitio web»- Escribe el dominio en Añadir dominio.
- Haz clic en Añadir (o pulsa Intro). El dominio aparece como etiqueta encima del campo.
- Haz clic en Guardar.
Para quitar un dominio, haz clic en la × de su etiqueta y después en Guardar.
Protección contra bots (Turnstile)
Sección titulada «Protección contra bots (Turnstile)»Esta tarjeta guarda las claves de Cloudflare Turnstile propias de tu
organización. Las plantillas con Exigir CAPTCHA (Turnstile) activado solo aceptan solicitudes de
tus sitios web con un token de Turnstile, y Frontmail verifica esos tokens con la clave secreta que
guardas aquí. Sin claves, las solicitudes desde sitios web a esas plantillas fallan con
captcha_not_configured.
¿Por qué claves propias? El plan gratuito de Cloudflare solo permite 10 nombres de host por widget, así que una única clave de Frontmail no puede cubrir los sitios web de todos los clientes. Tu widget es gratis y solo funciona en tus nombres de host.
Cómo añadir tus claves de Turnstile
Sección titulada «Cómo añadir tus claves de Turnstile»- En el panel de Cloudflare abre Turnstile → Add widget,
ponle un nombre, añade los nombres de host de tus sitios web (p. ej.
example.com,www.example.com;localhostsolo para pruebas), deja el modo Managed y haz clic en Create. - Copia la Site Key y la Secret Key.
- De vuelta en la página Seguridad, pega las dos claves en la tarjeta Protección contra bots (Turnstile) y haz clic en Guardar claves.
- Haz clic en Activar la CAPTCHA en todas las plantillas para activarla en tus plantillas existentes con un solo clic. Las plantillas que se usan como respuesta automática se omiten.
Al guardar, primero se comprueba la clave secreta con Cloudflare: una clave incorrecta se rechaza con
un mensaje claro y no se guarda nada. Las claves se guardan al momento (no hace falta el botón
Guardar de la página) y quedan registradas en el registro de auditoría
como security.turnstile.updated; activar la CAPTCHA en todas las plantillas se registra como
template.captcha_enabled.
- La clave secreta es de solo escritura: se guarda cifrada y no se vuelve a mostrar; la tarjeta
solo muestra la clave de sitio y desde cuándo están configuradas las claves. Para cambiarlas, haz
clic en Sustituir claves y pega las nuevas; para dejar de usarlas, haz clic en Quitar claves
y confirma ¿Quitar las claves de Turnstile? (
security.turnstile.removed). Las plantillas conservan su ajuste de CAPTCHA, así que, después de quitar las claves, las solicitudes desde sitios web a esas plantillas fallan hasta que vuelvas a añadir claves. - En cuanto guardas las claves, las plantillas nuevas traen la CAPTCHA activada de forma predeterminada. Las plantillas creadas antes conservan su ajuste.
- A partir de entonces, la pestaña Fragmentos del editor de plantillas incluye el widget con tu clave de sitio.
- Para el desarrollo local puedes usar las claves de prueba de Cloudflare, nunca en producción.
Las apps móviles creadas con @frontmail/react-native no
necesitan estas claves: usan la clave móvil compartida de Frontmail.
Protección contra abusos
Sección titulada «Protección contra abusos»Si una plantilla exige la CAPTCHA de Turnstile se configura en cada plantilla desde el editor de plantillas, no aquí; consulta Turnstile. La tarjeta Protección contra abusos tiene cuatro interruptores:
| Interruptor | Qué hace |
|---|---|
| Bloquear navegadores headless | Rechaza las solicitudes con clave pública de navegadores automatizados como Puppeteer. Desactivado de forma predeterminada. Consulta Protección contra bots. |
| Parámetros estrictos | Rechaza las solicitudes con parámetros que no están en el esquema de la plantilla, en lugar de ignorarlos. Desactivado de forma predeterminada. |
| Permitir la API con clave privada | Permite que tus servidores envíen con una clave privada, que se salta la comprobación del sitio web. Activado de forma predeterminada. Desactívalo si solo envías desde navegadores: las solicitudes con clave privada se rechazarán con 403 forbidden. |
| Permitir claves privadas en navegadores | Acepta solicitudes con clave privada que vienen de una página web (con cabecera Origin). Desactivado de forma predeterminada: esas solicitudes se rechazan con 403 private_key_in_browser, porque cualquier visitante de la página podría copiar la clave. Actívalo solo para herramientas internas; al hacerlo aparece una advertencia. Consulta Claves. |
Recuerda hacer clic en Guardar después de cambiar un interruptor.
Apps móviles
Sección titulada «Apps móviles»Las apps nativas (React Native, Flutter, Swift, Kotlin) no envían la cabecera Origin, así que sus
solicitudes (como cualquier solicitud con clave pública sin Origin ni Referer) se rechazan con
403 origin_not_allowed, incluso si no hay sitios web
permitidos definidos. La tarjeta Apps móviles tiene un único interruptor, Permitir apps
móviles (desactivado de forma predeterminada). Cuando está activado, se aceptan las solicitudes con
clave pública sin cabecera Origin ni Referer, y su CAPTCHA se verifica con la clave móvil
compartida de Frontmail. Las solicitudes desde sitios web se siguen comprobando con la lista. Los
detalles están en
Orígenes permitidos → Apps móviles.
Cómo permitir apps móviles
Sección titulada «Cómo permitir apps móviles»- Activa Permitir apps móviles.
- Lee la advertencia que aparece bajo el interruptor.
- Haz clic en Guardar.
Lista de bloqueo
Sección titulada «Lista de bloqueo»La Lista de bloqueo detiene a los spammers conocidos antes de que sus solicitudes consuman créditos.
- Valores bloqueados: un valor por línea; direcciones de correo, dominios (
spam.exampleo@spam.example) o valores exactos de parámetros. - Parámetro que se comprueba: el parámetro que se compara con la lista además de los
destinatarios, p. ej.
emailpara la dirección del visitante en un formulario de contacto.
Las solicitudes que coinciden fallan con recipient_blocked.
Más información en Protección contra bots → Lista de bloqueo.
Rate limit por IP
Sección titulada «Rate limit por IP»El Rate limit por IP limita la frecuencia con la que un mismo visitante puede enviar tus
formularios con la clave pública. Define Solicitudes (1–1000) y Cada (segundos) (1–86 400);
la frase bajo los campos resume el resultado. El valor predeterminado es 10 solicitudes cada 60
segundos. Las solicitudes por encima del límite reciben 429 rate_limited y no consumen créditos.
Las solicitudes con clave privada no se limitan por IP; consulta Rate limits.
Dominios de enlaces permitidos
Sección titulada «Dominios de enlaces permitidos»Cuando una plantilla toma su destinatario de los parámetros y se envía con la clave pública (y en
todas las respuestas automáticas), los enlaces del correo solo pueden
apuntar a dominios de tu confianza. Los enlaces escritos directamente en la plantilla y tus sitios web
permitidos siempre se aceptan; añade otros dominios en Dominios de enlaces permitidos, uno por
línea: example.com (exactamente ese host) o *.example.com (solo subdominios). Las líneas no
válidas se marcan y bloquean Guardar. Las solicitudes con un enlace a otro sitio fallan con
link_not_allowed. Consulta
Lista de enlaces permitidos y bloqueo de contenido.
Correos por destinatario y día (1–1000, predeterminado 5) limita cuántos correos con
destinatario dinámico (clave pública) y respuestas automáticas recibe una misma dirección al día
(UTC). Por encima del límite, las solicitudes fallan con 429 rate_limited
(details.scope: "recipient") y no se crea ninguna respuesta automática.
Cuando te quedes sin créditos
Sección titulada «Cuando te quedes sin créditos»Esta tarjeta decide qué pasa con los correos nuevos cuando la organización no tiene créditos:
| Opción | Comportamiento |
|---|---|
| Retener los correos (Recomendado, predeterminado) | Los correos se aceptan y esperan en Correos retenidos. Se envían automáticamente en cuanto añades créditos. |
| Rechazar las solicitudes | La API responde 402 insufficient_credits y no se guarda nada: tu sitio web decide qué decirle al visitante. |
Elige una opción y haz clic en Guardar. Para ver el panorama completo, incluido cómo se liberan los correos retenidos, consulta Cola de correos retenidos.