DSN: การแจ้งสถานะการส่งมอบสำหรับอีเมล SMTP

ดูว่า DSN มีวัตถุประสงค์เพื่อแนะนำสถานะการส่งมอบให้กับอีเมล SMTP อย่างไร

เคยสงสัยว่าเกิดอะไรขึ้นกับอีเมลที่คุณส่งไป

แม้เพียงแค่ดูสั้น ๆ ที่ โปรโตคอล SMTP จะแจ้งให้คุณทราบว่านอกจาก HELO ตามปกติแล้วยังมี EHLO ซึ่งทำให้เซิร์ฟเวอร์ Extended SMTP สามารถโฆษณาความสามารถของตนนอกเหนือจากมาตรฐานเดิมได้ หนึ่งในนั้นคือ DSN DSN? ดีเอ็นเอและดีดีทีไม่เพียงพอหรือไม่?

เพื่อยืนยันว่าอีเมลนั้นไม่น่าเชื่อถือคนอื่นควร " ... เลี้ยงเซิร์ฟเวอร์ของตนให้ดีขึ้นกินจดหมายของฉัน ... " ไม่ใช่เรื่องแปลก ฉันทำมันเอง ยังไม่มีเหตุผลมากที่จะสนับสนุนข้อสงสัยเหล่านี้

การจัดส่ง S tatus N otification ได้รับรอบตั้งแต่ RFC 821 (จาก 1982) ทันทีที่ส่วน DATA ของโปรโตคอล SMTP เสร็จสิ้นและเซิร์ฟเวอร์ยอมรับอีเมลสำหรับการจัดส่งแล้วจะเป็นผู้รับผิดชอบ หากด้วยเหตุผลใดก็ตามไม่สามารถส่งข้อมูลไปยังผู้รับได้จะต้องส่งข้อมูลกลับมาพร้อมกับแจ้งข้อผิดพลาดให้กับผู้ส่งต้นฉบับ ส่งผลให้มี อีเมลที่ คลุมเครือ

นอกจากนี้การประชุมเก่านี้หมายความว่าคุณได้รับข้อความแสดง ข้อผิดพลาด หรือคุณ ไม่มีอะไร ในกรณีที่คุณ ไม่ ทราบ อะไร : อีเมลอาจมาถึงหรือไม่อาจ ข้อความแสดงข้อผิดพลาดในหลาย ๆ กรณีมีประโยชน์เช่นเดียวกับไม่มีข้อความแสดงข้อผิดพลาด กับอีเมลมากขึ้นและสำคัญมากขึ้นนี้ไม่น่าพอใจ (เช่นถ้าก่อน)

ส่วนขยายของ DSN ไปยัง SMTP

RFC 1891 ขอเสนอส่วนขยายบางอย่างให้กับโปรโตคอล SMTP ซึ่งจะส่งผลให้มีระบบ DSN ที่น่าเชื่อถือและใช้งานได้มากขึ้น เป็นชุดของส่วนขยายสำหรับคำสั่ง MAIL และ RCPT (ถ้านี่ไม่มีความหมายใด ๆ ให้อ่าน ว่า SMTP ทำงานอย่างไร และกลับมาที่นี่)

ไม่มี EHLO, No Fun

ขั้นแรกเราต้องตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์สนับสนุน DSN ดังนั้นเราต้องพูดกับ EHLO และฟังอย่างระมัดระวัง ถ้าตอบสนองด้วย DSN somewher ในรายการคุณสมบัติเราสามารถสมมติได้ว่าจะสามารถตอบสนองคำขอของเราได้ ถ้าไม่เช่นนั้นเราสามารถลองเซิร์ฟเวอร์อื่นหรือย้อนกลับไปที่ อีเมล โดยไม่ใช้ DSN ได้ เช่น (อินพุทของฉันเป็นสีน้ำเงินเซิร์ฟเวอร์ของเอาต์พุตสีดำ):

220 larose.magnet.at ESMTP Sendmail 8.8.6 / 8.8.6; อาทิตย์ 24 สิงหาคม 2540 18:23:22 +0200
EHLO localhost
250-larose.magnet.at สวัสดี localhost [127.0.0.1] ยินดีที่ได้รู้จักคุณ
250 EXPN
250 คำกริยา
250-8BITMIME
250 ขนาด
250 DSN
250 ONEX
250 ETRN
250 XUSR
250 ช่วยเหลือ

โชคดีที่สิ่งอื่น ๆ ที่เราพบใน DSN

ส่วนขยาย DSN Sender

คำสั่งต่อไปมักเป็น MAIL FROM: DSN ไม่แตกต่างกัน แต่มีสองตัวเลือกเพิ่มเติมที่คุณอาจได้รับ ได้แก่ RET และ ENVID

ตัวเลือก RET ถูกวางไว้โดยพลการในคำสั่ง MAIL แต่ก็เหมาะกับที่นี่เช่นเดียวกับที่อื่น วัตถุประสงค์คือเพื่อระบุจำนวนข้อความต้นฉบับที่คุณควรได้รับในกรณีที่เกิดความผิดพลาดในการจัดส่ง อาร์กิวเมนต์ที่ใช้ได้คือ FULL และ HDRS ก่อนหน้านี้หมายความว่าข้อความทั้งหมดควรอยู่ในข้อความแสดงข้อผิดพลาด HDRS สั่งให้เซิร์ฟเวอร์ส่งเฉพาะส่วนหัวของจดหมายที่ล้มเหลวเท่านั้น ถ้าไม่ได้ระบุ RET ขึ้นอยู่กับเซิร์ฟเวอร์จะทำอย่างไร ในกรณีส่วนใหญ่ HDRS จะเป็นค่าเริ่มต้น

จริงๆ ENVID เป็นของผู้ส่งที่เธอหรือ (ค่อนข้าง) ลูกค้าอีเมลของเธอจะเป็นคนเดียวที่ทำให้เราทราบ ซองจดหมาย นี้ จุดประสงค์ของมันคือการบอกผู้ส่งอีเมลล์ว่าข้อความแจ้งข้อผิดพลาดที่อาจจะเกิดขึ้นสอดคล้องกับ รูปแบบของรหัสนี้จะเหลืออยู่ในจินตนาการของผู้ส่ง เราจะไม่ใช้ ENVID ในตัวอย่างของเรา (จินตนาการ):

MAIL FROM: sender@example.com RET = HDRS
250 sender@example.com ... ผู้ส่งตกลง

เห็นได้ชัดว่าเราต้องการรับส่วนหัวใน DSN ของเราเท่านั้น

ส่วนขยายของผู้รับ DSN

RCPT TO: ได้รับส่วนแบ่งการยุติธรรมของส่วนขยายเช่นกัน: NOTIFY และ ORCPT

การแจ้งเตือนเป็นหัวใจที่แท้จริงของ DSN บอกเซิร์ฟเวอร์ เมื่อ ส่งการแจ้งเตือนสถานะการจัดส่ง ค่าแรกที่เป็นไปได้คือ NEVER ซึ่งหมายความว่าในกรณีใด ๆ DSN จะต้องส่งคืนให้กับผู้ส่ง นี่เป็นไปไม่ได้หากไม่มี DSN จากนั้นจะมี SUCCESS ซึ่งจะแจ้งให้คุณทราบเมื่ออีเมลของคุณเป็นปลายทางที่ปลายทาง ความล้มเหลวคือคู่ของ SUCCESS (!): DSN จะมาถึงหาก arror เกิดขึ้นระหว่างการจัดส่ง ตัวเลือกสุดท้ายคือ DELAY: คุณจะได้รับการแจ้งเตือนหากมีความล่าช้าในการจัดส่งโดยผิดปกติ แต่ยังไม่ได้ตัดสินถึงผลการส่งมอบจริง (ความสำเร็จหรือล้มเหลว) ไม่ ต้อง เป็นอาร์กิวเมนต์เดียวถ้าระบุสามตัวอื่นอาจปรากฏในรายการคั่นด้วยเครื่องหมายจุลภาค SUCCESS and FAILURE สร้างทีมที่แข็งแกร่งขึ้นด้วยกัน (!) บอกคุณได้ว่าจะเกิดอะไรขึ้นกับจดหมายของคุณ

วัตถุประสงค์ของ ORCPT คือเพื่อเก็บข้อมูลผู้รับอีเมล ต้นฉบับ ตัวอย่างเช่นหากมีการส่งต่อไปยังที่อยู่อื่น อาร์กิวเมนต์นี้เป็นที่อยู่อีเมลของผู้รับเดิมพร้อมกับประเภทที่อยู่ ประเภทที่อยู่จะมาก่อนตามด้วยเครื่องหมายอัฒภาคและที่อยู่สุดท้าย ตัวอย่างเช่น:

RCPT TO: support@example.com NOTIFY = FAILURE, DELAY ORCPT = rfc822; support@example.com
250 support@example.com ... โอเครับ (จะรอ)

ตามด้วยข้อมูลตามที่เราทราบและในที่สุดก็หวังว่าจะมีการแจ้งสถานะการจัดส่งเพื่อแจ้งให้คุณทราบถึงความสำเร็จ

DSN ทำงานได้หรือไม่?

แน่นอนความงามและความเฉลียวฉลาดนี้จะใช้ได้เฉพาะในกรณีที่ตัวแทนการขนส่งทางไปรษณีย์จากผู้ส่งถึงผู้รับสนับสนุน DSN บางวันพวกเขาจะ