¿Las direcciones de correo electrónico distinguen entre mayúsculas y minúsculas?

305

He leído que por primera parte estándar de correo electrónico entre mayúsculas y minúsculas, sin embargo he tratado de enviar un correo electrónico a [email protected], [email protected]y [email protected]- se ha llegado en cada caso.

¿Cómo manejan los servidores de correo los nombres de usuario? ¿Es posible fallar con el caso y ese mensaje no se entregará? ¿Es realmente muy importante utilizar exactamente la misma letra mayúscula, como se escribió al registrarse al dar su dirección de correo electrónico?

Acosador
fuente
Pregunta relacionada - stackoverflow.com/questions/9013726/…
Luke Girvin

Respuestas:

366

Desde RFC 5321, sección 2.3.11 :

La convención de nomenclatura estándar del buzón se define como "local-part @ domain"; El uso contemporáneo permite un conjunto de aplicaciones mucho más amplio que los simples "nombres de usuario". En consecuencia, y debido a una larga historia de problemas cuando los hosts intermedios han intentado optimizar el transporte modificándolos, la parte local DEBE ser interpretada y asignada semántica solo por el host especificado en la parte del dominio de la dirección.

Entonces sí, la parte anterior a la "@" podría distinguir entre mayúsculas y minúsculas, ya que está completamente bajo el control del sistema host. Sin embargo, en la práctica, ningún sistema de correo ampliamente utilizado distingue diferentes direcciones según el caso.

Sin embargo, la parte posterior al signo @ es el dominio y de acuerdo con RFC 1035 , sección 3.1,

"Los servidores de nombres y los resolutores deben comparar [dominios] sin distinción entre mayúsculas y minúsculas"

En resumen, es seguro tratar las direcciones de correo electrónico como mayúsculas y minúsculas.

Mike E
fuente
81
"En resumen, es seguro tratar las direcciones de correo electrónico como mayúsculas y minúsculas". Lo diría más fuerte: "no es seguro tratar las direcciones de correo electrónico como mayúsculas y minúsculas" Especialmente cuando se buscan duplicados en las bases de datos de usuarios, etc.
Geert-Jan
61
No estoy de acuerdo con la conclusión. Si está buscando duplicados en una base de datos, sí, una coincidencia entre mayúsculas y minúsculas es probablemente la mejor manera de hacerlo, pero he visto un código donde la dirección de correo electrónico se convierte en minúsculas antes del envío. Esa no es una buena idea, ya que existe una pequeña posibilidad de que no se entregue. Entonces, cómo lo trata depende de las consecuencias del error y de lo que esté haciendo con las direcciones de correo electrónico en ese momento (cotejando una lista de direcciones únicas, enviando un correo electrónico, etc.).
Peter Bagnall
11
¿Alguien sabe de una lista de productos de correo que (a) rechazará un [email protected] cuando el usuario [email protected] sea válido, o (b) permitirá que se creen dos buzones diferentes: John .Doe @ company.com y [email protected]?
MSC
51
Trabajo en una gran empresa y hay otra persona con el mismo nombre y apellido. Hoy descubrí que su parte local difiere de la mía solo en mayúsculas. Esto ha estado funcionando correctamente, por lo que me sorprendió ver que "ningún sistema de correo ampliamente utilizado distingue diferentes direcciones según el caso". Usamos MS Exchange que llamaría "ampliamente utilizado".
Matthew James Briggs
77
RFC 5321 2.4. Principios generales de sintaxis y modelo de transacción: las implementaciones SMTP DEBEN tener cuidado de preservar el caso de las partes locales del buzón. En particular, para algunos hosts, el usuario "smith" es diferente del usuario "Smith". Los dominios de buzones siguen las reglas DNS normales y, por lo tanto, no distinguen entre mayúsculas y minúsculas.
Adam111p
43

Sé que esta es una pregunta antigua, pero solo quiero comentar aquí: en cualquier medida, las direcciones de correo electrónico SON sensibles a mayúsculas y minúsculas, la mayoría de los usuarios sería "muy poco inteligente" para utilizar activamente una dirección de correo electrónico que requiere mayúsculas. Pronto dejarían de usar la dirección porque les faltaría mucho correo. (A menos que tengan una razón específica para dificultar las cosas, y esperan correo solo de remitentes específicos que conocen).

Esto se debe a que existen humanos imperfectos y también software imperfecto (¡Sorpresa!) Que asumirá que todo el correo electrónico está en minúsculas, y por esta razón, estos humanos y software enviarán mensajes utilizando una "versión en minúscula" de la dirección, independientemente de cómo se proporcionó. a ellos Si el destinatario no puede recibir dichos mensajes, no pasará mucho tiempo antes de que noten que faltan mucho, y cambien a una dirección de correo electrónico en minúsculas, o configuren su servidor para que no distinga entre mayúsculas y minúsculas.

PaulOTron2000
fuente
14
Esta es una aplicación perspicaz de la ley de Postel en.wikipedia.org/wiki/Robustness_principle . Sigue siendo incorrecto escribir software que asume que las partes locales de las direcciones de correo electrónico no distinguen entre mayúsculas y minúsculas, pero sí, dado que hay un montón de software incorrecto por ahí, también es menos que robusto requerir mayúsculas y minúsculas si usted es el que acepta el correo .
zigg
1
Una de las cosas que más me frustran es que los sitios me obligan a escribir mi correo electrónico en minúsculas. Acabo de lanzar un comentario enojado a Twitch.tv sobre eso mismo en lo que respecta a su sitio de soporte. Le impiden incluso ingresar mayúsculas en su sitio. Entonces, aunque sé que mi servidor de correo electrónico los trata como si no distinguen entre mayúsculas y minúsculas, y sé que el RFC establece que distingue entre mayúsculas y minúsculas, los sitios NUNCA deben hacer suposiciones de ninguna manera y simplemente deben pasar por lo que ingresa el usuario. HOMBRE que es tan molesto!
Mark A. Donohoe
Personalmente, cuando escribo mi correo electrónico en algún lugar, prefiero usar mayúsculas y minúsculas para que sea más legible. Por ejemplo: [email protected] (no es mi dirección real). Hago esto aunque recibo el correo electrónico sin mayúsculas.
PaulOTron2000
Sin embargo, como autor de software, preferiría que su servicio sea uno de esos pocos que hace las cosas bien para esta persona con correo electrónico sensible a mayúsculas y minúsculas.
Klesun hace
31

Muy tarde a esta publicación, pero tengo algo un poco diferente que decir ...

>> "Are email addresses case sensitive?"

Bueno, "depende ..." (TM)

Algunas organizaciones realmente piensan que es una buena idea y sus servidores de correo electrónico imponen mayúsculas y minúsculas.

Entonces, para esos lugares locos, "Sí, los correos electrónicos distinguen entre mayúsculas y minúsculas".

Nota: Solo porque una especificación dice que puedes hacer algo no significa que sea una buena idea hacerlo.

El principio de KISS sugiere que nuestros sistemas utilizan correos electrónicos que no distinguen entre mayúsculas y minúsculas.

Mientras que el principio de robustez sugiere que aceptamos correos electrónicos sensibles a mayúsculas y minúsculas.

Solución:

  • Almacene correos electrónicos con mayúsculas y minúsculas
  • Enviar correos electrónicos con mayúsculas y minúsculas
  • Realizar búsquedas internas con mayúsculas y minúsculas

Esto significaría que si este correo electrónico ya existe: [email protected]

... y aparece otro usuario y quiere usar este correo electrónico: [email protected]

... que nuestra lógica de búsqueda insensible a mayúsculas y minúsculas devolvería un mensaje de error "Ese correo electrónico ya existe".

Ahora, tiene que tomar una decisión: ¿es esa solución adecuada en su caso?

De lo contrario, podría cobrar una tarifa de conveniencia a aquellos clientes que demanden soporte para sus correos electrónicos sensibles a mayúsculas y minúsculas e implementar una lógica personalizada que permita que [email protected] ingrese a su sistema, incluso si [email protected] ya existe.

En cuyo caso, su lógica de búsqueda / validación de correo electrónico podría parecerse a este pseudocódigo:

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 + '"
}

De esta manera, usted está imponiendo la insensibilidad a mayúsculas y minúsculas, pero permite a los clientes pagar por este soporte si están utilizando sistemas de correo electrónico que admiten tales tonterías.

ps ILIKE es una palabra clave de PostgreSQL: http://www.postgresql.org/docs/9.2/static/functions-matching.html

l3x
fuente
8
LIKE / ILIKE para una coincidencia exacta es una idea horrible. Imagine un correo electrónico que contenga %o sea más probable_
ThiefMaster
18
¡Tus puntos son geniales! Pero la inyección de sql en su ejemplo lo arruina :(
epelc
66
@epelc ESTO. No puede estar más de acuerdo. Ese tipo de construcción de consultas no debería escribirse en ningún lado, incluso si es solo un ejemplo.
xDaizu
1
@ l3x, aunque no estoy tan en contra del código de ejemplo anterior como los otros, específicamente porque lo llamó como pseudocódigo y es solo para fines ilustrativos, tal vez todos los comentarios anteriores podrían abordarse reemplazando sus query = ...líneas con query = // Insert case-sensitive/insensitive search herecomentarios simples ya que mantienen la conversación alejada del tema de la inyección SQL y se enfoca en lo que está tratando de mostrar. En otras palabras, manténgalo en la lógica, no en la implementación. Silenciará a los críticos.
Mark A. Donohoe
10

IETF Estándares abiertos RFC 5321 2.4. Principios generales de sintaxis y modelo de transacción

Las implementaciones SMTP DEBEN tener cuidado de preservar el caso de las partes locales del buzón. En particular, para algunos hosts, el usuario "smith" es diferente del usuario "Smith".

Los dominios de buzones siguen las reglas DNS normales y, por lo tanto, no distinguen entre mayúsculas y minúsculas

Adam111p
fuente
3

Por @ l3x, depende.

Claramente, hay dos conjuntos de situaciones generales en las que la respuesta correcta puede ser diferente, junto con una tercera que no es tan general:

a) Eres un usuario que envía correos privados :

Muy pocos sistemas modernos de correo electrónico implementan mayúsculas y minúsculas, por lo que probablemente esté bien ignorarlas y elegir cualquier caso que desee usar. No hay garantía de que todos sus correos sean entregados, pero tan pocos correos se verían afectados negativamente que no debería preocuparse por ello.

b) Está desarrollando software de correo :

Ver RFC5321 2.4 extracto en la parte inferior.

Cuando está desarrollando software de correo, desea cumplir con RFC. Si lo desea, puede hacer que las direcciones de correo electrónico de sus propios usuarios no distingan entre mayúsculas y minúsculas (y probablemente debería hacerlo). Pero para cumplir con RFC, DEBE tratar las direcciones externas como mayúsculas y minúsculas .

c) Administrar listas de direcciones de correo electrónico de propiedad empresarial como empleado :

Es posible que el mismo destinatario de correo electrónico se agregue a una lista más de una vez, pero con un caso diferente. En esta situación, aunque las direcciones son técnicamente diferentes, puede resultar en que un destinatario reciba correos electrónicos duplicados. La forma en que trata esta situación es similar a la situación a) en que probablemente esté bien tratarlos como duplicados y eliminar una entrada duplicada. Sin embargo, es mejor tratarlos como casos especiales, enviando un correo "recordatorio" a ambas direcciones para preguntarles si son duplicados entre sí y, de ser así, qué dirección de correo electrónico preferiría que utilizara el destinatario.

Desde un punto de vista legal, si elimina un duplicado sin reconocimiento / permiso de ambas direcciones, puede ser responsable de filtrar información / autenticación privada a una dirección no autorizada simplemente porque dos destinatarios realmente separados tienen la misma dirección con diferentes casos .

Extracto de RFC5321 2.4:

La parte local de un buzón DEBE SER tratada como sensible a mayúsculas y minúsculas. Por lo tanto, las implementaciones SMTP DEBEN tener cuidado de preservar el caso de las partes locales del buzón. En particular, para algunos hosts, el usuario "smith" es diferente del usuario "Smith". Sin embargo, explotar la sensibilidad a mayúsculas y minúsculas de las partes locales del buzón impide la interoperabilidad y se desaconseja.

zaTricky
fuente