พฤติกรรมที่แตกต่างระหว่างเส้นทางกลับ, การตอบกลับและจากคืออะไร


162

ในใบสมัครทางไปรษณีย์ของเราเรากำลังส่งอีเมลโดยมีส่วนหัวดังต่อไปนี้:

FROM: marketing@customer.com
TO: subscriber1@domain1.com
Return-PATH: bouncemgmt@ourcompany.com

ปัญหาที่เราเผชิญคือเซิร์ฟเวอร์อีเมลบางแห่งจะเด้งกลับข้อความทันทีและใช้เส้นทางจากหรือย้อนกลับเส้นทาง (marketing@customer.com) แทนเซิร์ฟเวอร์เด้ง mgmt ของเรา เราต้องการทราบว่าเราปรับเปลี่ยนในส่วนหัวตอบกลับเป็นเหมือนเส้นทางกลับถ้าเราจะสามารถจับการตีกลับทั้งหมด

ยินดีต้อนรับแนวคิดอื่นใดบ้าง

เราใช้เอกสารต่อไปนี้เป็นข้อมูลอ้างอิง: VERP RFC Bounce Messages

การแยกบันทึก SMTP เพื่อรับการตีกลับ

แก้ไข 1: ข้อมูลอีกสองสามบิตเพื่อดูว่าเราจะได้รับการแก้ไขนี้หรือไม่

เราต้องการทราบว่าจุดใดที่เซิร์ฟเวอร์อีเมลที่ส่งข้อความจะเลือกใช้การตอบกลับกับเส้นทางย้อนกลับ เราสังเกตว่าเมื่อเซิร์ฟเวอร์ smtp แรกที่ส่งข้อความถูกปฏิเสธมันจะส่งไปยังการตอบกลับ แต่เมื่อมันเกิดขึ้นหลังจากหนึ่ง hop มันจะส่งไปยัง return-path


1
สิ่งที่เกี่ยวกับการระบุเขตข้อมูลผู้ส่ง: และลำดับความสำคัญ: ฉันต้องการทราบเพิ่มเติมว่ามีผลกระทบต่อเซิร์ฟเวอร์จดหมายต่าง ๆ อย่างไรเมื่อมีการตีกลับและการตอบกลับอัตโนมัติประเภทสำนักงาน ใคร?
PapaFreud

คำตอบ:


257

เริ่มจากตัวอย่างง่ายๆ สมมติว่าคุณมีรายชื่ออีเมลที่จะส่งเนื้อหาRFC2822ต่อไปนี้

From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>

This is a very simple body.

ตอนนี้สมมติว่าคุณกำลังจะส่งจากรายการส่งจดหมายที่ใช้VERP (หรือกลไกการติดตามการตีกลับอื่น ๆ ที่ใช้เส้นทางส่งคืนที่แตกต่างกัน) coolstuff-you=yourcompany.com@mymailinglist.comให้บอกว่ามันจะมีผลตอบแทนจากเส้นทางของ เซสชัน SMTP อาจมีลักษณะดังนี้:

{S}220 workstation1 Microsoft ESMTP MAIL Service
{C}HELO workstation1
{S}250 workstation1 Hello [127.0.0.1]
{C}MAIL FROM:<coolstuff-you=yourcompany.com@mymailinglist.com>
{S}250 2.1.0 me@mycompany.com....Sender OK
{C}RCPT TO:<you@yourcompany.com>
{S}250 2.1.5 you@yourcompany.com 
{C}DATA
{S}354 Start mail input; end with <CRLF>.<CRLF>
{C}From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>

This is a very simple body.
.

{S}250 Queued mail for delivery
{C}QUIT
{S}221 Service closing transmission channel

โดยที่ {C} และ {S} แทนคำสั่งไคลเอ็นต์และเซิร์ฟเวอร์ตามลำดับ

เมลของผู้รับจะมีลักษณะดังนี้:

Return-Path: coolstuff-you=yourcompany.com@mymailinglist.com
From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>

This is a very simple body.

ตอนนี้เราจะอธิบาย "FROM" ที่แตกต่างกัน

  1. เส้นทางการส่งคืน (บางครั้งเรียกว่าเส้นทางย้อนกลับผู้ส่งซองจดหมายหรือซองจดหมายจาก - เงื่อนไขเหล่านี้สามารถใช้แทนกันได้) คือค่าที่ใช้ในเซสชัน SMTP ในMAIL FROMคำสั่ง อย่างที่คุณเห็นสิ่งนี้ไม่จำเป็นต้องเป็นค่าเดียวกับที่พบในส่วนหัวของข้อความ เซิร์ฟเวอร์อีเมลของผู้รับเท่านั้นที่ควรเพิ่มส่วนหัว Return-Path ที่ด้านบนของอีเมล ซึ่งจะบันทึกผู้ส่งคืนเส้นทางที่แท้จริงระหว่างเซสชัน SMTP หากส่วนหัว Return-Path มีอยู่แล้วในข้อความแสดงว่าส่วนหัวนั้นถูกลบและแทนที่ด้วยเมลเซิร์ฟเวอร์ของผู้รับ

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

หมายเหตุเมลเซิร์ฟเวอร์ทั้งหมดไม่ปฏิบัติตามกฎนี้ เมลเซิร์ฟเวอร์บางตัวจะเด้งกลับไปยังที่อยู่ FROM

  1. ที่อยู่ FROM เป็นค่าที่พบในส่วนหัวของ FROM นี่ควรจะเป็นข้อความจากใคร นี่คือสิ่งที่คุณเห็นว่าเป็น "FROM" ในโปรแกรมรับส่งเมลส่วนใหญ่ หากอีเมลไม่มีส่วนหัว Reply-To การตอบกลับของมนุษย์ (ไคลเอนต์อีเมล) ทั้งหมดควรกลับไปที่ที่อยู่ FROM

  2. ส่วนหัว Reply-To ถูกเพิ่มโดยผู้ส่ง (หรือซอฟต์แวร์ของผู้ส่ง) มันเป็นที่ที่มนุษย์ทุกคนควรตอบกลับด้วย โดยทั่วไปเมื่อผู้ใช้คลิก "ตอบกลับ" ค่า Reply-To ควรเป็นค่าที่ใช้เป็นผู้รับของอีเมลที่เขียนขึ้นใหม่ เซิร์ฟเวอร์ไม่ควรใช้ค่า Reply-To มันมีไว้สำหรับลูกค้าฝั่ง (MUA) ใช้เท่านั้น

อย่างไรก็ตามอย่างที่คุณบอกได้ว่าเซิร์ฟเวอร์อีเมลบางแห่งไม่ปฏิบัติตามมาตรฐาน RFC หรือคำแนะนำ

หวังว่านี่จะช่วยให้ชัดเจนขึ้น อย่างไรก็ตามหากฉันพลาดอะไรเลยให้ฉันรู้และฉันจะพยายามตอบ


สิ่งนี้มีประโยชน์มาก ขอบคุณที่สละเวลา. หนึ่งคำถาม. เป็นไปได้หรือไม่ที่การตีกลับบางอย่างกำลังไปยังการตอบกลับแทนเส้นทางกลับ
Geo

5
ในทางเทคนิคคุณสามารถ (แต่ไม่ควรจะ) เพิ่มส่วนหัวเส้นทางกลับอย่างไรก็ตามถ้าส่วนหัวเส้นทางกลับมีอยู่ก็จะถูกเขียนทับโดยเซิร์ฟเวอร์ smtp รับ หากไม่มีอยู่จะต้องเพิ่มที่ด้านบนของส่วนหัว
dave wanta

7
ฉันค่อนข้างชัดเจนเกี่ยวกับวิธีการreturn-pathใช้งาน หากreturn-pathหมายถึงเป็นที่อยู่ผู้ส่งทำไมเซิร์ฟเวอร์อีเมลของผู้รับจึงกรอกข้อมูลในฟิลด์นี้แทนที่จะเป็นผู้ส่ง เซิร์ฟเวอร์ของผู้รับจะรู้ได้อย่างไรว่าจะใส่อะไรเข้าไปในนั้น สิ่งนี้ดูเหมือนจะย้อนกลับหรือไม่
greatwolf

6
เซิร์ฟเวอร์อีเมลของผู้รับแทรกส่วนหัว Return-Path ลงในข้อความโดยคัดลอกค่าที่กำหนดโดยเซิร์ฟเวอร์อีเมลของผู้ส่งในคำสั่ง SMTP "MAIL FROM" ลองนึกภาพพนักงานในห้องจดหมายเปิดจดหมาย - พวกเขาดูที่อยู่ผู้ส่งในซองจดหมายและเขียนที่ด้านบนของจดหมาย (และทิ้งซองจดหมาย)
John Hascall

5
และSender:ส่วนหัวที่เหมาะสมกับทั้งหมดนี้ได้อย่างไร
Simon East

150

อีกวิธีหนึ่งในการคิดเกี่ยวกับReturn-Pathvs Reply-Toคือการเปรียบเทียบกับจดหมายหอยทาก

เมื่อคุณส่งซองจดหมายในจดหมายที่คุณระบุที่อยู่ผู้ส่ง หากผู้รับไม่มีอยู่หรือปฏิเสธเมลของคุณไปรษณีย์จะส่งซองจดหมายกลับไปยังที่อยู่ผู้ส่ง สำหรับอีเมลที่อยู่ผู้ส่งReturn-Pathเป็น

ด้านในของซองจดหมายอาจเป็นตัวอักษรและภายในตัวอักษรอาจส่งผู้รับไปยัง "ส่งจดหมายโต้ตอบไปยังที่อยู่ตัวอย่าง " สำหรับอีเมลที่อยู่ตัวอย่างReply-Toคือ

โดยพื้นฐานแล้วที่อยู่ส่งคืนของไปรษณีย์นั้นเปรียบได้กับReturn-Pathส่วนหัวของ SMTP และReply-Toส่วนหัวของ SMTP นั้นคล้ายกับคำตอบที่มีอยู่ในจดหมาย


14
นี่เป็นการเปรียบเทียบที่ดี
Lukasz Korzybski

2
@Jesse Hobart +1 สำหรับคำอธิบายที่ดีฉันสับสนมากขึ้นขอบคุณที่ทำให้ฉันเข้าใจฉันง่ายขึ้น
Abhishek

26
ฉันจะชี้ให้เห็นว่าแนวคิดหลักที่ไม่ได้จับภาพในการเปรียบเทียบนี้คือReturn-Pathส่วนหัวจะถูกเพิ่มโดยเซิร์ฟเวอร์อีเมลที่ได้รับและไม่ใช่โดยผู้ส่งโดยผู้ส่งดังนั้นจึงเป็นมากขึ้นเช่นนี้: คุณสามารถเขียนสิ่งที่อยู่ที่คุณต้องการภายในของซองจดหมาย แต่การส่งมอบนั้นคุณต้องใช้มันไปยังที่ทำการไปรษณีย์และพวกเขาแสดงไดรเวอร์ของคุณใบอนุญาต (หรือบัตรประจำตัวอื่น ๆ ) และพวกเขาใส่ที่อยู่ที่บนซองจดหมาย ก่อนที่จะส่ง กล่าวอีกนัยหนึ่งReturn-Pathส่วนหัวมีความน่าเชื่อถือเท่ากับการตรวจสอบที่ดำเนินการโดยเซิร์ฟเวอร์ SMTP ที่รับซึ่งผู้อื่นสามารถปลอมแปลงได้ง่าย
cdhowie

5

สำหรับผู้ที่มาที่นี่เพราะชื่อของคำถาม:

ฉันใช้ที่Reply-To:อยู่กับเว็บฟอร์ม เมื่อมีคนกรอกแบบฟอร์มเว็บเพจจะส่งอีเมลอัตโนมัติไปยังเจ้าของเพจ From:คือที่อยู่ของผู้ส่งอีเมลอัตโนมัติเพื่อให้เจ้าของรู้ว่ามันมาจากเว็บฟอร์ม แต่ที่Reply-To:อยู่เป็นที่อยู่ที่กรอกไว้ในแบบฟอร์มโดยผู้ใช้ดังนั้นเจ้าของสามารถกดตอบกลับเพื่อติดต่อพวกเขา


1

ฉันต้องเพิ่มหัวข้อ Return-Path ในอีเมลที่ส่งโดยอินสแตนซ์ Redmine ฉันเห็นด้วยกับ greatwolf เท่านั้นที่ผู้ส่งสามารถกำหนดเส้นทางที่ถูกต้อง (ไม่ใช่ค่าเริ่มต้น) ที่ถูกต้อง กรณีมีดังต่อไปนี้: อีเมลจะถูกส่งไปพร้อมกับที่อยู่อีเมลเริ่มต้น: admin@yourcompany.com แต่เราต้องการให้ผู้ใช้จริงที่เริ่มดำเนินการได้รับอีเมลที่ตีกลับเพราะเขาจะเป็นผู้รู้วิธีแก้ไขอีเมลผู้รับที่ไม่ถูกต้อง (และไม่ใช่ผู้ดูแลระบบแอปพลิเคชันที่มีแมวอื่น ๆ ที่ต้องแส้ :-)) เราใช้สิ่งนี้และทำงานได้อย่างสมบูรณ์แบบด้วย exim บนแอพพลิเคชันเซิร์ฟเวอร์และ zimbra ในฐานะเซิร์ฟเวอร์จดหมายของ บริษัท

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