Ir al contenido

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.

La página Seguridad con tarjetas para la clave pública, las claves privadas, los sitios web permitidos, la protección contra abusos, la lista de bloqueo, el rate limit por IP y la opción de qué pasa cuando se acaban los créditos

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.

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.

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.

Rótala si detectas abusos a pesar de tus otras protecciones.

  1. Haz clic en Rotar clave.
  2. Confirma con Rotar clave en el diálogo ¿Rotar la clave pública?.
  3. 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.

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.

  1. Haz clic en Nueva clave privada.
  2. Escribe un Nombre que indique dónde la vas a usar, p. ej. «Backend de producción», y haz clic en Crear.
  3. 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.
  4. Haz clic en La he guardado en un lugar seguro.
  1. Haz clic en Revocar en la fila de la clave.
  2. 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.

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.

  1. Escribe el dominio en Añadir dominio.
  2. Haz clic en Añadir (o pulsa Intro). El dominio aparece como etiqueta encima del campo.
  3. Haz clic en Guardar.

Para quitar un dominio, haz clic en la × de su etiqueta y después en Guardar.

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.

  1. 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; localhost solo para pruebas), deja el modo Managed y haz clic en Create.
  2. Copia la Site Key y la Secret Key.
  3. 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.
  4. 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.

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.

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.

  1. Activa Permitir apps móviles.
  2. Lee la advertencia que aparece bajo el interruptor.
  3. Haz clic en Guardar.

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.example o @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. email para 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.

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.

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.

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.