São permitidos dois períodos na parte local de um endereço de e-mail?

12

Uma retransmissão de gateway de e-mail de terceiros está se recusando a processar uma mensagem para um endereço de e-mail para o qual estamos enviando. O endereço está no formato firstname..lastname @ recipienternamemain.com (observe os dois períodos). Isso é permitido pelas diretrizes da RFC?

RFC 2822 parece se opor a isso na seção 3.4.1:

The locally interpreted string is either a quoted-string or a dot-atom. If the string can be represented as a dot-atom (that is, it contains no characters other than atext characters or "." surrounded by atext characters), then the dot-atom form SHOULD be used and the quoted-string form SHOULD NOT be used. Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.

Além disso, nessa mesma seção, ele faz referência a isso:

addr-spec = local-part "@" domain

local-part = dot-atom / quoted-string / obs-local-part

Eu interpreto isso para significar que a parte local pode ter conteúdo separado por pontos, mas não pode haver dois pontos sucessivos , e não pode iniciar ou terminar com um ponto. Dito isto, eu não estou familiarizado com a sintaxe do ponto-átomo então talvez eu esteja enganado aqui.

Alguém pode confirmar e explicar?

    
por Mike B 05.06.2012 / 17:23

2 respostas

13

Sim, você está correto. A seção que você citou diz que deve ser uma string entre aspas OU um átomo de ponto. Uma vez que claramente não é uma string citada (a falta de colocar " torna isso claro) deve ser um ponto-átomo ...

Isso nos leva à definição de ponto-átomo:

Veja isto, exceto a partir de RFC 5322 (3.2.3 - página 13) (RFC 2822 contém uma seção similar) a dica é a 1* in dot-atom-text = 1*atext *("." 1*atext) . Isso significa efetivamente que um átomo de ponto é constituído de cadeias de caracteres de um ou mais caracteres "separados" separados por pontos. Uma cadeia de caracteres de 0 atext não conta e, portanto, você não pode ter dois pontos sucessivos (separados por 0 caracteres) ou um ponto à esquerda ou à direita.

RFC 5322                Internet Message Format             October 2008


   atext           =   ALPHA / DIGIT /    ; Printable US-ASCII
                       "!" / "#" /        ;  characters not including
                       "$" / "%" /        ;  specials.  Used for atoms.
                       "&" / "'" /
                       "*" / "+" /
                       "-" / "/" /
                       "=" / "?" /
                       "^" / "_" /
                       "'" / "{" /
                       "|" / "}" /
                       "~"

   atom            =   [CFWS] 1*atext [CFWS]

   dot-atom-text   =   1*atext *("." 1*atext)

   dot-atom        =   [CFWS] dot-atom-text [CFWS]

   specials        =   "(" / ")" /        ; Special characters that do
                       "<" / ">" /        ;  not appear in atext
                       "[" / "]" /
                       ":" / ";" /
                       "@" / "\" /
                       "," / "." /
                       DQUOTE
    
por 05.06.2012 / 18:08
4

Sua interpretação está correta. A parte local pode conter grupos de texto separados por pontos, mas vários períodos consecutivos não são permitidos.

De acordo com a seção 3.4.1 do RFC 5322 que você citou em sua pergunta, dot átomo " não contém nenhum caractere diferente de caracteres de texto ou". "cercado por caracteres de texto ". Assim, por definição, um átomo de ponto não pode conter dois ou mais períodos consecutivos.

Para referência, aqui está a definição do atext, tirada de Seção 3.2.3 do RFC 5322 :

atext           =       ALPHA / DIGIT / ; Any character except controls,
                        "!" / "#" /     ;  SP, and specials.
                        "$" / "%" /     ;  Used for atoms
                        "&" / "'" /
                        "*" / "+" /
                        "-" / "/" /
                        "=" / "?" /
                        "^" / "_" /
                        "'" / "{" /
                        "|" / "}" /
                        "~"

Naturalmente, não há dois MTAs que impõem os RFCs da mesma forma, portanto, você descobrirá que alguns MTAs aceitarão períodos duplos em que outros não o farão. Por exemplo, o Exchange se recusará a fornecer endereços contendo períodos duplos, mas um teste rápido de uma seleção aleatória de três servidores de e-mail que usam todos os períodos duplos de suporte.

Então, de acordo estritamente com a RFC 5322, a organização que hospeda o revezamento com o qual você está tendo problemas está bem dentro de seus direitos de recusar endereços contendo períodos duplos.

    
por 05.06.2012 / 18:12

Tags