Guías

Puntos y alias con + de Gmail: cómo detectar registros duplicados

j.doe+7@gmail.com y jdoe@gmail.com son el mismo buzón. Cómo funciona el direccionamiento de Gmail, una función de normalización en JavaScript y Python y los casos límite que dan problemas.

6 min de lectura · Actualizado el 2026-10-31 · Attrelix

Un buzón, direcciones infinitas

Gmail tiene dos reglas de direccionamiento que hacen trivial crear muchas cuentas desde un solo buzón:

  • Los puntos se ignoran. En direcciones @gmail.com, jane.doe, janedoe y j.a.n.e.d.o.e son el mismo buzón. Un nombre de diez letras tiene cientos de variantes con puntos.
  • Todo lo que va después de un signo más se ignora. janedoe+prueba1@gmail.com, janedoe+prueba2@gmail.com y así sucesivamente llegan a janedoe@gmail.com. El número de variantes es ilimitado.

Además, @googlemail.com es el mismo servicio que @gmail.com. Todas las variantes superan la verificación de correo, porque el mensaje de confirmación llega de verdad. Para tu formulario de registro, son todos usuarios distintos y nuevos.

El direccionamiento con más no es exclusivo de Gmail: Fastmail y Proton Mail también lo admiten, igual que muchos servidores de correo de empresa. En cambio, ignorar los puntos es propio del Gmail personal.

Normaliza y luego compara

La solución es guardar una forma normalizada de cada dirección junto a la original y comparar los registros nuevos con ella. Conserva la original para enviar correos: es lo que escribió el usuario, y algunas personas usan sus etiquetas con más para filtrar mensajes.

// JavaScript
function normalizeEmail(input) {
  const raw = input.trim().toLowerCase();
  const at = raw.lastIndexOf("@");
  if (at < 1) return null;
  let local = raw.slice(0, at);
  let domain = raw.slice(at + 1).replace(/\.$/, "");
  if (domain === "googlemail.com") domain = "gmail.com";
  const plus = local.indexOf("+");
  if (plus > 0) local = local.slice(0, plus);
  if (domain === "gmail.com") local = local.replaceAll(".", "");
  return `${local}@${domain}`;
}

normalizeEmail("J.Doe+trial7@GoogleMail.com"); // "jdoe@gmail.com"
# Python
def normalize_email(value: str) -> str | None:
    raw = value.strip().lower()
    local, sep, domain = raw.rpartition("@")
    if not sep or not local:
        return None
    domain = domain.rstrip(".")
    if domain == "googlemail.com":
        domain = "gmail.com"
    base = local.split("+", 1)[0] or local
    if domain == "gmail.com":
        base = base.replace(".", "")
    return f"{base}@{domain}"

Luego añade una columna y un índice, y consulta en el registro:

ALTER TABLE users ADD COLUMN email_normalized text;
CREATE INDEX users_email_normalized ON users (email_normalized);

-- en el registro
SELECT count(*) FROM users WHERE email_normalized = $1;

Casos límite que dan problemas

  • No quites puntos fuera del Gmail personal. En la mayoría de los proveedores, y en los dominios de empresa de Google Workspace, jane.doe@ y janedoe@ son personas distintas. Quitar los puntos ahí une a desconocidos.
  • Quitar el más es una heurística en otros proveedores. En casi todos, la etiqueta con más es un alias, pero un servidor de correo puede tratar + como un carácter normal. Trata una coincidencia fuera de Gmail como señal, no como prueba.
  • No rechaces la etiqueta con más en sí. Mucha gente cuidadosa usa nombre+servicio@gmail.com en cada sitio donde se registra. Una etiqueta en un buzón nuevo es normal; una etiqueta en un buzón que ya tiene cuenta es la señal.
  • Pasa a minúsculas antes de comparar, y quita espacios y puntos finales. En la práctica, los proveedores tratan la parte local sin distinguir mayúsculas.
  • Otros proveedores tienen sus propios esquemas de alias (las direcciones desechables de Yahoo, los alias de Outlook en la misma cuenta). Esos no se detectan normalizando: ahí entran las señales de dispositivo y red.

Qué hacer cuando hay coincidencia

Una coincidencia normalizada significa que la cuenta nueva recibe correo en un buzón que ya tiene cuenta contigo. Normalmente la respuesta correcta no es un error, sino un empujón: “Ya tienes una cuenta con este correo, ¿quieres iniciar sesión?”. Para pruebas y créditos gratis, también es un motivo fuerte para no dar la prueba o enviar el registro a revisión. Consulta Cómo evitar el abuso de la prueba gratuita para un flujo de decisión completo.

Cómo lo hace Attrelix

Cada comprobación normaliza la dirección (puntos de Gmail, etiquetas con más, googlemail.com y los dominios de Proton), busca cuentas existentes con el mismo buzón y añade el motivo alias_of_existing cuando encuentra una. La dirección original nunca se modifica en tus datos, y las cuentas vinculadas vienen en la respuesta para que veas el grupo completo.

Resumen

  • Gmail ignora puntos y etiquetas con más; muchos proveedores ignoran las etiquetas con más.
  • Guarda una dirección normalizada junto a la original e indéxala.
  • Quita puntos solo en Gmail personal; trata las demás coincidencias como señales.
  • Cuando coincida, sugiere iniciar sesión y no des una segunda prueba.

Más guías