Guides

Points et alias + de Gmail : repérer les inscriptions en double

j.doe+7@gmail.com et jdoe@gmail.com sont la même boîte. Comment fonctionne l'adressage Gmail, une fonction de normalisation en JavaScript et Python, et les cas limites qui posent problème.

6 min de lecture · Mis à jour le 2026-10-31 · Attrelix

Une boîte, des adresses à l'infini

Gmail applique deux règles d'adressage qui rendent trivial le fait de créer de nombreux comptes à partir d'une seule boîte :

  • Les points sont ignorés. Pour les adresses @gmail.com, jane.doe, janedoe et j.a.n.e.d.o.e sont la même boîte. Un nom de dix lettres compte des centaines de variantes avec points.
  • Tout ce qui suit un signe plus est ignoré. janedoe+essai1@gmail.com, janedoe+essai2@gmail.com et ainsi de suite arrivent dans janedoe@gmail.com. Le nombre de variantes est illimité.

De plus, @googlemail.com est le même service que @gmail.com. Chaque variante passe la vérification d'e-mail, puisque le message de confirmation arrive vraiment. Pour votre formulaire d'inscription, ce sont tous des utilisateurs différents et tout neufs.

L'adressage avec plus n'est pas propre à Gmail : Fastmail et Proton Mail le prennent aussi en charge, comme de nombreux serveurs de messagerie d'entreprise. Ignorer les points, en revanche, est propre au Gmail grand public.

Normaliser, puis comparer

La solution consiste à stocker une forme normalisée de chaque adresse à côté de l'originale, et à comparer les nouvelles inscriptions à celle-ci. Gardez l'originale pour envoyer des e-mails : c'est ce que l'utilisateur a saisi, et certaines personnes utilisent leurs étiquettes plus pour filtrer leur courrier.

// 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}"

Ajoutez ensuite une colonne et un index, et consultez-les à l'inscription :

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

-- à l'inscription
SELECT count(*) FROM users WHERE email_normalized = $1;

Les cas limites qui posent problème

  • N'enlevez pas les points hors du Gmail grand public. Chez la plupart des fournisseurs, et sur les domaines d'entreprise Google Workspace, jane.doe@ et janedoe@ sont des personnes différentes. Retirer les points y fusionne des inconnus.
  • Retirer le plus est une heuristique ailleurs. Presque partout, une étiquette plus est un alias, mais un serveur de courrier peut traiter + comme un caractère ordinaire. Traitez une correspondance hors Gmail comme un signal, pas comme une preuve.
  • Ne refusez pas l'étiquette plus en elle-même. Beaucoup de personnes prudentes utilisent nom+service@gmail.com sur chaque site. Une étiquette plus sur une nouvelle boîte est normale ; une étiquette plus sur une boîte qui a déjà un compte, c'est le signal.
  • Passez en minuscules avant de comparer, et retirez les espaces et les points finaux. En pratique, les fournisseurs traitent la partie locale sans tenir compte de la casse.
  • D'autres fournisseurs ont leurs propres systèmes d'alias (adresses jetables Yahoo, alias Outlook sur le même compte). La normalisation ne les attrape pas : c'est là que les signaux d'appareil et de réseau prennent le relais.

Que faire en cas de correspondance

Une correspondance normalisée signifie que le nouveau compte reçoit son courrier dans une boîte qui a déjà un compte chez vous. En général, la bonne réponse n'est pas une erreur mais un coup de pouce : « Vous avez déjà un compte avec cet e-mail — voulez-vous vous connecter ? ». Pour les essais et les crédits gratuits, c'est aussi une bonne raison de ne pas accorder l'essai ou d'envoyer l'inscription en examen. Voir Comment éviter l'abus d'essai gratuit pour un parcours de décision complet.

Comment Attrelix s'en charge

Chaque vérification normalise l'adresse (points Gmail, étiquettes plus, googlemail.com et les domaines Proton), cherche les comptes existants avec la même boîte et ajoute la raison alias_of_existing quand elle en trouve un. L'adresse d'origine n'est jamais modifiée dans vos données, et les comptes liés figurent dans la réponse pour que vous voyiez tout le groupe.

En résumé

  • Gmail ignore les points et les étiquettes plus ; beaucoup de fournisseurs ignorent les étiquettes plus.
  • Stockez une adresse normalisée à côté de l'originale et indexez-la.
  • Retirez les points uniquement pour Gmail grand public ; traitez les autres correspondances comme des signaux.
  • En cas de correspondance, proposez la connexion et n'accordez pas de second essai.

Plus de guides