Là hai giai đoạn được phép trong phần địa phương của một địa chỉ email?


13

Chuyển tiếp cổng email của bên thứ ba đang từ chối xử lý thư cho địa chỉ email chúng tôi đang gửi đến. Địa chỉ có định dạng của Firstname..lastname @ receivedomain.com (lưu ý hai thời kỳ). Điều này có được cho phép bởi hướng dẫn của RFC không?

RFC 2822 dường như phản đối điều này trong phần 3.4.1:

Chuỗi được giải thích cục bộ là một chuỗi được trích dẫn hoặc một nguyên tử dấu chấm. Nếu chuỗi có thể được biểu diễn dưới dạng một nguyên tử dấu chấm (nghĩa là nó không chứa các ký tự nào ngoài các ký tự atext hoặc "." Được bao quanh bởi các ký tự atext), thì dạng nguyên tử chấm NÊN được sử dụng và dạng chuỗi được trích dẫn NÊN được dùng. Nhận xét và gấp khoảng trắng không được sử dụng xung quanh "@" trong phần bổ trợ.

Hơn nữa, trong cùng một phần, nó tham chiếu điều này:

addr-spec = tên miền "@" cục bộ

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

Tôi giải thích điều này có nghĩa là localpart có thể có nội dung được phân tách bằng dấu chấm nhưng không thể có hai dấu chấm liên tiếp và nó không thể bắt đầu hoặc kết thúc bằng dấu chấm. Điều đó đang được nói, tôi không quen với cú pháp nguyên tử chấm nên có lẽ tôi đã nhầm ở đây.

Ai đó có thể vui lòng xác nhận và giải thích?

Câu trả lời:


13

Ư, bạn đung. Phần bạn trích dẫn nói rằng nó phải là một chuỗi được trích dẫn HOẶC một nguyên tử dấu chấm. Vì rõ ràng nó không phải là một chuỗi trích dẫn (việc không kèm theo "làm cho rõ ràng) nên nó phải là một nguyên tử dấu chấm ...

Điều đó dẫn chúng ta đến định nghĩa về nguyên tử điểm:

Nhìn vào điều này ngoại trừ từ RFC 5322 (3.2.3 - trang 13) (RFC 2822 có phần tương tự) gợi ý là 1*trong dot-atom-text = 1*atext *("." 1*atext). Điều này có nghĩa là một nguyên tử chấm được tạo thành từ các chuỗi của một hoặc nhiều ký tự "atext" được phân tách bằng các dấu chấm. Một chuỗi gồm 0 ký tự atext không được tính và do đó bạn không thể có hai dấu chấm liên tiếp (được phân tách bằng 0 ký tự) hoặc dấu chấm dẫn đầu hoặc dấu.

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

4

Giải thích của bạn là chính xác. Phần cục bộ có thể chứa các nhóm atext cách nhau bởi các dấu chấm, nhưng nhiều khoảng thời gian liên tiếp không được phép.

Theo mục 3.4.1 của RFC 5322 mà bạn đã trích dẫn trong câu hỏi của mình, một nguyên tử dấu chấm " không chứa các ký tự nào ngoài các ký tự atext hoặc". "Được bao quanh bởi các ký tự atext ". Do đó, theo định nghĩa, một nguyên tử chấm có thể không chứa hai hoặc nhiều chu kỳ liên tiếp.

Để tham khảo, đây là định nghĩa atext, được lấy từ Mục 3.2.3 của RFC 5322 :

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

Tất nhiên, không có hai MTA nào thi hành RFC theo cùng một cách, vì vậy bạn sẽ thấy một số MTA sẽ chấp nhận hai giai đoạn mà những người khác sẽ không chấp nhận. Ví dụ: Exchange sẽ từ chối phân phối cho các địa chỉ chứa thời gian kép, nhưng kiểm tra nhanh một lựa chọn ngẫu nhiên 3 máy chủ thư mà tôi sử dụng tất cả các giai đoạn kép hỗ trợ.

Vì vậy, theo RFC 5322, tổ chức lưu trữ rơle mà bạn gặp vấn đề nằm trong quyền của họ để từ chối các địa chỉ có chứa thời gian kép.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.