อนุญาตให้มีสองช่วงเวลาในส่วนท้องถิ่นของที่อยู่อีเมลหรือไม่


13

รีเลย์เกตเวย์อีเมลบุคคลที่สามปฏิเสธที่จะประมวลผลข้อความสำหรับที่อยู่อีเมลที่เราส่งถึง ที่อยู่นั้นอยู่ในรูปแบบของชื่อจริง ..lastname @ recipientdomain.com (สังเกตจุดสองจุด) ข้อกำหนดนี้อนุญาตโดยแนวทาง RFC หรือไม่

RFC 2822ดูเหมือนจะคัดค้านในหัวข้อ 3.4.1:

สตริงที่แปลแบบโลคัลเป็นสตริงที่ยกมาหรือ dot-atom หากสตริงสามารถแสดงเป็น dot-atom (นั่นคือไม่มีอักขระอื่นนอกเหนือจากอักขระ atext หรือ "." ล้อมรอบด้วยอักขระ atext) ดังนั้นรูปแบบ dot-atom ควรใช้และรูปแบบสตริงที่ไม่ควรใช้ นำมาใช้ ความคิดเห็นและพื้นที่สีขาวที่พับได้ไม่ควรใช้รอบ "@" ในข้อมูลจำเพาะ

นอกจากนี้ในส่วนเดียวกันมันอ้างอิงสิ่งนี้:

addr-spec = โลคอลส่วน "@" โดเมน

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

ฉันตีความสิ่งนี้เพื่อหมายความว่าโลคัลพาร์ทสามารถมีเนื้อหาคั่นด้วยจุด แต่ไม่สามารถมีจุดต่อเนื่องได้สองจุดและไม่สามารถเริ่มต้นหรือลงท้ายด้วยจุด ที่ถูกกล่าวว่าฉันไม่คุ้นเคยกับไวยากรณ์จุดอะตอมดังนั้นฉันอาจเข้าใจผิดที่นี่

ใครช่วยกรุณายืนยันและอธิบายได้ไหม?

คำตอบ:


13

ใช่คุณถูกต้อง. ส่วนที่คุณยกมาบอกว่ามันจะต้องเป็นสตริงที่ยกมาหรือจุดอะตอม เนื่องจากมันไม่ใช่สตริงที่ยกมาอย่างชัดเจน(การขาดการล้อมรอบ"ทำให้ชัดเจน)มันต้องเป็นดอทอะตอม ...

นั่นทำให้เรานิยามของ dot-atom:

ดูที่นี้ยกเว้นจากRFC 5322 (3.2.3 - หน้า 13) (RFC 2822 มีส่วนที่คล้ายกัน)คำใบ้คือใน1* dot-atom-text = 1*atext *("." 1*atext)สิ่งนี้หมายความว่า dot-atom ประกอบด้วยสตริงของอักขระ "atext" อย่างน้อยหนึ่งตัวคั่นด้วยจุด สตริงที่มีอักขระ 0 atext ไม่นับและคุณไม่สามารถมีจุดต่อเนื่องสองจุด(คั่นด้วยอักขระ 0 ตัว)หรือจุดนำหน้าหรือต่อท้าย

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

การตีความของคุณถูกต้อง ส่วนในท้องถิ่นอาจมีกลุ่มของ atext คั่นด้วยจุด แต่ไม่อนุญาตให้มีช่วงเวลาติดต่อกันหลายช่วง

ตามส่วน 3.4.1 ของ RFC 5322ที่คุณยกมาในคำถามของคุณ dot atom " ไม่มีอักขระอื่นนอกเหนือจากอักขระ atext หรือ". "ล้อมรอบด้วยอักขระ atext " ดังนั้นตามคำนิยาม dot atom อาจไม่มีจุดติดต่อกันสองช่วงขึ้นไป

สำหรับการอ้างอิงนี่คือคำจำกัดความ atext ที่นำมาจากส่วน 3.2.3 ของ RFC 5322 :

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

แน่นอนว่าไม่มี MTA สองตัวที่บังคับใช้ RFC ในทางเดียวกันดังนั้นคุณจะพบว่า MTA บางตัวจะยอมรับช่วงเวลาสองเท่าที่คนอื่นจะไม่ทำ ตัวอย่างเช่น Exchange จะปฏิเสธที่จะส่งมอบที่อยู่ที่มีเครื่องหมายจุดสองจุด แต่เป็นการทดสอบแบบสุ่มเกี่ยวกับการสุ่มเลือกเซิร์ฟเวอร์เมล 3 ตัวที่ฉันใช้สนับสนุนช่วงเวลาสองเท่าทั้งหมด

ตามอย่างเคร่งครัดตาม RFC 5322 องค์กรที่โฮสต์การถ่ายทอดที่คุณกำลังมีปัญหาอยู่ภายในสิทธิ์ของพวกเขาในการปฏิเสธที่อยู่ที่มีจุดสองครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.