Gli indirizzi e-mail fanno distinzione tra maiuscole e minuscole?


305

Ho letto che dalla prima parte standard dell'e-mail fa distinzione tra maiuscole e minuscole, tuttavia ho provato a inviare e-mail a name@example.com, Name@example.come NAME@example.com- è arrivato in ogni caso.

In che modo i server di posta gestiscono i nomi utente? È possibile perdere il caso e quel messaggio non verrà recapitato? È davvero molto importante utilizzare esattamente la stessa lettera maiuscola, come è stato scritto durante la registrazione quando si fornisce il tuo indirizzo e-mail?


Risposte:


366

Da RFC 5321, sezione 2.3.11 :

La convenzione standard di denominazione delle cassette postali è definita come "local-part @ domain"; l'uso contemporaneo consente un insieme di applicazioni molto più ampio rispetto ai semplici "nomi utente". Di conseguenza, e a causa di una lunga storia di problemi quando gli host intermedi hanno tentato di ottimizzare il trasporto modificandoli, la parte locale DEVE essere interpretata e assegnata alla semantica solo dall'host specificato nella parte del dominio dell'indirizzo.

Quindi sì, la parte prima di "@" potrebbe essere sensibile al maiuscolo / minuscolo, poiché è interamente sotto il controllo del sistema host. In pratica, tuttavia, nessun sistema di posta ampiamente utilizzato distingue indirizzi diversi in base al caso.

La parte dopo il segno @ è tuttavia il dominio e secondo RFC 1035 , sezione 3.1,

"I server dei nomi e i resolver devono confrontare [domini] in modo insensibile alle maiuscole / minuscole"

In breve, sei sicuro di trattare gli indirizzi e-mail come maiuscole e minuscole.


81
"In breve, sei sicuro di trattare gli indirizzi e-mail come maiuscole e minuscole." Lo definirei più forte: "non sei sicuro di trattare gli indirizzi e-mail come una distinzione tra maiuscole e minuscole" Soprattutto quando controlli i duplicati nei database degli utenti, ecc.
Geert,

61
Non sarei d'accordo con la conclusione. Se stai cercando duplicati in un database, sì, una corrispondenza senza distinzione tra maiuscole e minuscole è probabilmente il modo migliore per andare, ma ho visto il codice in cui l'indirizzo e-mail viene convertito in lettere minuscole prima dell'invio. Non è una buona idea, dato che c'è una piccola possibilità che non venga consegnato. Quindi il modo in cui lo tratti dipende da quali sono le conseguenze dell'errore e cosa stai facendo con gli indirizzi e-mail in quel momento (fascicolazione di un elenco di indirizzi univoci, invio di e-mail, ecc.).
Peter Bagnall,

11
Qualcuno è a conoscenza di un elenco di prodotti di posta che (a) rifiuterà un John.Doe@company.com quando l'utente john.doe@company.com è valido o (b) consentirà di creare due caselle di posta distinte: John .Doe @ company.com e john.doe@company.com?
MSC

51
Lavoro in una grande azienda e c'è un'altra persona con lo stesso nome e cognome. Ho scoperto oggi che la sua parte locale differisce dalla mia solo per capitalizzazione. Questo ha funzionato correttamente, quindi sono rimasto sorpreso nel vedere "nessun sistema di posta ampiamente utilizzato distingue indirizzi diversi in base al caso". Usiamo MS Exchange che definirei "ampiamente utilizzato".
Matthew James Briggs,

7
RFC 5321 2.4. Principi generali di sintassi e modello di transazione - Le implementazioni SMTP DEVONO fare attenzione a preservare il caso delle parti locali delle cassette postali. In particolare, per alcuni host, l'utente "smith" è diverso dall'utente "Smith". I domini delle cassette postali seguono le normali regole DNS e quindi non fanno distinzione tra maiuscole e minuscole.
Adam111p,

43

So che questa è una vecchia domanda, ma voglio solo commentare qui: in ogni caso gli indirizzi e-mail SONO sensibili al maiuscolo / minuscolo, la maggior parte degli utenti sarebbe "molto poco saggia" per utilizzare attivamente un indirizzo e-mail che richiede i capitali. Presto smetterebbero di usare l'indirizzo perché a loro mancherebbe molto della loro posta. (A meno che non abbiano una ragione specifica per rendere le cose difficili e si aspettano che la posta venga inviata solo da mittenti specifici che conoscono.)

Questo perché esistono esseri umani imperfetti e software imperfetti, (Sorpresa!) Che supporranno che tutte le e-mail siano minuscole, e per questo motivo questi esseri umani e software invieranno messaggi usando una "versione in minuscolo" dell'indirizzo, indipendentemente da come è stato fornito a loro. Se il destinatario non è in grado di ricevere tali messaggi, non passerà molto tempo prima che notino che mancano molto e passa a un indirizzo e-mail solo in minuscolo o imposta il server in modo che non faccia distinzione tra maiuscole e minuscole.


14
Questa è un'approfondita applicazione della legge di Postel en.wikipedia.org/wiki/Robustness_principle . Resta sbagliato scrivere software che presume che le parti locali degli indirizzi e-mail non facciano distinzione tra maiuscole e minuscole, ma sì, dato che ci sono molti software sbagliati là fuori, è anche meno robusto richiedere la distinzione tra maiuscole e minuscole se si accetta la posta .
zigg

1
Una delle cose di cui sono più frustrato sono i siti che mi costringono a scrivere la mia e-mail in lettere minuscole. Ho appena rilasciato un commento arrabbiato a Twitch.tv su quella stessa cosa riguardo al loro sito di supporto. Ti impediscono di entrare anche in maiuscolo sul loro sito. Quindi, mentre so che il mio server di posta elettronica li tratta come maiuscole e minuscole e so che la RFC afferma che fa distinzione tra maiuscole e minuscole, i siti non devono MAI fare ipotesi in entrambi i modi e dovrebbero semplicemente passare attraverso ciò che l'utente inserisce. UOMO che è così fastidioso !!!
Mark A. Donohoe,

Personalmente, quando scrivo la mia e-mail da qualche parte, preferisco usare maiuscole e minuscole, quindi è più leggibile. Ad esempio: JamesTKirk@domain.com (non il mio vero indirizzo.) Faccio questo anche se ricevo l'e-mail senza maiuscole.
PaulOTron2000,

Come autore di software, tuttavia, preferiresti che il tuo servizio fosse uno di quei pochi che fanno le cose giuste per questa persona con e-mail con distinzione tra maiuscole e minuscole.
Klesun

31

Molto tardi a questo post, ma ho qualcosa di leggermente diverso da dire ...

>> "Are email addresses case sensitive?"

Bene, "Dipende ..." (TM)

Alcune organizzazioni pensano che sia una buona idea e i loro server di posta elettronica applicano la distinzione tra maiuscole e minuscole.

Quindi, per quei luoghi folli, "Sì, le email fanno distinzione tra maiuscole e minuscole".

Nota: solo perché una specifica dice che puoi fare qualcosa non significa che sia una buona idea farlo.

Il principio di KISS suggerisce che i nostri sistemi utilizzano e-mail senza distinzione tra maiuscole e minuscole.

Considerando che il principio di robustezza suggerisce che accettiamo e-mail sensibili al maiuscolo / minuscolo.

Soluzione:

  • Memorizza le e-mail con distinzione tra maiuscole e minuscole
  • Invia e-mail con distinzione tra maiuscole e minuscole
  • Esegui ricerche interne con insensibilità al maiuscolo / minuscolo

Ciò significherebbe che se questa email esiste già: user@x.com

... e arriva un altro utente e desidera utilizzare questa email: USER@x.com

... che la nostra logica di ricerca senza distinzione tra maiuscole e minuscole restituirebbe un messaggio di errore "Quella email esiste già".

Ora hai una decisione da prendere: quella soluzione è adeguata nel tuo caso?

In caso contrario, potresti addebitare una commissione di convenienza a quei clienti che richiedono supporto per le loro e-mail con distinzione tra maiuscole e minuscole e implementano la logica personalizzata che consente a USER@x.com nel tuo sistema, anche se user@x.com esiste già.

Nel qual caso la tua logica di ricerca / convalida della posta elettronica potrebbe assomigliare a questo pseudocodice:

if (user.paidEmailFee) {
   // case sensitive email
   query = "select * from users where email LIKE ' + user.email + '"
} else {
   // case insensitive email
   query = "select * from users where email ILIKE ' + user.email + '"
}

In questo modo, si impone principalmente l'insensibilità ai casi, ma si consente ai clienti di pagare per questo supporto se utilizzano sistemi di posta elettronica che supportano tali sciocchezze.

ps ILIKE è una parola chiave PostgreSQL: http://www.postgresql.org/docs/9.2/static/functions-matching.html


8
LIKE / ILIKE per una partita esatta è una pessima idea. Immagina un'e-mail contenente %o più probabile_
ThiefMaster,

18
I tuoi punti sono fantastici! Ma l'iniezione sql nel tuo esempio lo rovina :(
epelc,

6
@epelc QUESTO. Non potrei essere più d'accordo. Quel tipo di query building non dovrebbe essere scritto da nessuna parte anche se è solo un esempio.
xDaizu,

1
@ l3x, mentre non sono fortemente contrario al codice di esempio sopra come gli altri, in particolare perché lo hai chiamato come pseudocodice ed è solo a scopo illustrativo, forse tutti i commenti sopra potrebbero essere risolti sostituendo le tue query = ...righe con semplici query = // Insert case-sensitive/insensitive search herecommenti in quanto mantengono la conversazione lontana dall'argomento iniezione SQL e si concentra su ciò che stai cercando di mostrare. In altre parole, mantenerlo sulla logica, non sull'implementazione. Silenzierà i critici.
Mark A. Donohoe,

10

Standard aperti IETF RFC 5321 2.4. Principi generali di sintassi e modello di transazione

Le implementazioni SMTP DEVONO fare attenzione a preservare il caso delle parti locali delle cassette postali. In particolare, per alcuni host, l'utente "smith" è diverso dall'utente "Smith".

I domini delle cassette postali seguono le normali regole DNS e quindi non fanno distinzione tra maiuscole e minuscole


3

Per @ l3x, dipende.

Esistono chiaramente due serie di situazioni generali in cui la risposta corretta può essere diversa, insieme a una terza che non è così generale:

a) Sei un utente che invia mail private :

Pochissimi moderni sistemi di posta elettronica implementano la distinzione tra maiuscole e minuscole, quindi probabilmente stai bene ignorare le maiuscole e scegliere il caso che desideri utilizzare. Non vi è alcuna garanzia che tutte le tue e-mail vengano recapitate, ma così poche e-mail sarebbero influenzate negativamente e non dovresti preoccupartene.

b) Stai sviluppando software di posta :

Vedi estratto RFC5321 2.4 in basso.

Quando si sviluppa software di posta elettronica, si desidera essere conformi a RFC. È possibile effettuare e-mail gli indirizzi case insensitive i propri utenti, se si vuole (e probabilmente dovrebbe). Ma per essere conforme a RFC, DEVI trattare gli indirizzi esterni come case sensitive .

c) Gestione di elenchi di indirizzi e-mail di proprietà aziendale come dipendente :

È possibile che lo stesso destinatario e-mail venga aggiunto a un elenco più di una volta, ma utilizzando un caso diverso. In questa situazione, sebbene gli indirizzi siano tecnicamente diversi, è possibile che un destinatario riceva e-mail duplicate. Il modo in cui trattate questa situazione è simile alla situazione a) in quanto probabilmente state bene trattarli come duplicati e rimuovere una voce duplicata. È meglio trattarli come casi speciali, inviando una mail di "promemoria" a entrambi gli indirizzi per chiedere loro se sono duplicati l'uno dell'altro e, in tal caso, quale indirizzo di posta elettronica il destinatario preferirebbe utilizzare.

Da un punto di vista legale, se si rimuove un duplicato senza riconoscimento / autorizzazione da entrambi gli indirizzi, si può essere ritenuti responsabili per la perdita di informazioni / autenticazione private a un indirizzo non autorizzato semplicemente perché due destinatari effettivamente separati hanno lo stesso indirizzo con casi diversi .

Estratto da RFC5321 2.4:

La parte locale di una cassetta postale DEVE ESSERE trattata come sensibile al maiuscolo / minuscolo. Pertanto, le implementazioni SMTP DEVONO fare attenzione a preservare il caso delle parti locali delle cassette postali. In particolare, per alcuni host, l'utente "smith" è diverso dall'utente "Smith". Tuttavia, lo sfruttamento della distinzione tra maiuscole e minuscole delle parti locali delle cassette postali impedisce l'interoperabilità ed è scoraggiato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.