2011-03-14 44 views
31

從我們的Rails應用程序,我們發送一些系統生成的電子郵件,其中'from'地址設置爲[email protected]。如果這些反彈,他們會被我們的郵件服務器發送回這個地址。但是,我想要做的就是不要將退回的電子郵件發送回[email protected],而是發送到其他地址,例如[email protected]設置電子郵件標題,以便彈回的電子郵件轉到特定地址

是否有一個標題或我可以在電子郵件中設置,以實現這一目標,而無需我去調查我們的電子郵件服務器的變幻莫測?如果相關,我們會使用exim發送郵件。

歡呼,最大

+1

(+1)很好的問題。它是如何去的? – 2011-04-01 15:05:09

+0

https://en.wikipedia.org/wiki/Variable_envelope_return_path通常與From和信封地址不同... – 2017-01-20 11:25:03

回答

3

這裏是解決方案:

在電子郵件標題,您可以設置:

From: "From Name" <[email protected]> 
Reply-To: [email protected] 

Errors-To: <[email protected]> 
Return-Path: <[email protected]> 
+0

啊,我之前沒有看到Errors-To標題。我已經嘗試了回覆和返回路徑無濟於事。我會給它一個去... – 2011-03-30 08:12:30

+0

這也沒有工作要麼Dmitriy(抱歉響應緩慢) - 我可以看到原郵件中的錯誤,到頭,但它仍然反彈回來的地址。 – 2011-04-04 10:37:51

+0

這意味着你做錯了什麼。請檢查外發電子郵件的標題。 Return-Path,Errors-To:以及「envelope-from」和「X-Env-Sender:」應該具有相同的電子郵件地址(您希望路由回覆的電子郵件地址)。最後2項由服務器自動添加。大小寫敏感性問題(標題中的字符串需要完全像我的代碼示例中)。最好的祝福。 – 2011-04-04 16:37:22

4

錯誤,要被棄用,因此郵件服務器通常會忽略這個頭 - 大多數服務器會反彈到'信封發送者'。

這是郵件客戶端作爲the connection to the SMTP服務器的一部分發送的電子郵件地址(不一定是發件人地址 - 雖然它通常是相同的)。

我不知道Rails一切都好,但我發現this - 儘管我可以告訴Return-Path被MTA重置爲匹配來自客戶端的MAIL FROM信息,所以看起來你可以'實際上設置它。

我認爲你唯一能做的就是在你的服務器中設置退回地址。

+0

非常感謝Horuskol - 郵件提供商是否真的會尊重該反彈地址?我認爲他們往往忽略了一切,並總是發送反彈到發件人地址。 – 2011-04-28 10:21:45

+0

@MaxWilliams - 是的,你現在可能現在想起更多 – HorusKol 2011-04-28 11:48:41

9

我剛剛在exim4中找到了一個lot的關於exim的配置。

首先,你希望你的應用程序中添加以下標題:

Return-Path: <[email protected]> 

作品帶或不帶支架。任何方式Exim都會添加括號。

其次,這是很難的部分。 Exim總是希望用發送它的unix用戶覆蓋我的Return-Path:地址。您可以在Ubuntu中使用/ etc/email-addresses爲您的Web應用程序的用戶設置靜態電子郵件,但這仍然會忽略Return-Path標題。這是我如何改良我的exim配置尊重來自Web應用程序的返回路徑:

在主要配置區域中添加:

return_path_remove = false 

在適當的路由器配置(如dnslookup):

dnslookup: 
    # ... 
    errors_to = ${if def:h_return-path: {${address:$h_return-path:}} fail} 
    headers_remove = return-path 
    no_more 

現在,exim應該複製信封級別的Return-Path標題地址並刪除原始的Return-Path標題。

我嘗試了很多其他配置指令,這是實際爲我工作的唯一方法。

+7

這不應該起作用。不是因爲你還沒有想出如何在Exim中設置返回路徑,而是因爲它將被交付SMTP服務器覆蓋。從RFC 5321第4.4節:「當傳送SMTP服務器進行最終傳送時',它在郵件數據的開頭插入一個返回路徑行,需要使用return-path;郵件系統必須支持它。返回路徑行保留來自MAIL命令的中的信息。「 – 2013-02-21 18:00:19

3

3年太晚了,但以防萬一誰來這樣。 Return-Path是正確的標題,但正如詹姆斯加里斯指出的那樣,它必須放置在那裏由網站執行最終交付。你不能只把它粘在自己身上。

如果您通過直接連接到SMTP服務器來撰寫電子郵件,則很容易--命令包含返回路徑。如果您發送到

MAIL FROM:<[email protected]> 

到SMTP服務器然後反彈將返回到[email protected]

如果你沒有構建SMTP,並且你運行的是MTA(即.exim/etc),那麼你必須爲你的MTA找到一個命令行開關。對於sendmail,-f [email protected]「設置發件人的地址」,並且這在最終傳遞的郵件中以Return-Path結尾,而[email protected]將得到反彈(我對於自動生成的電子郵件完全是這樣做的)。我沒有在exim上試過這個,但它有完全相同的選擇,它應該可以工作。

+0

感謝這個EML。我可以使用此方法將「失敗」返回地址設置爲與「發件人」地址不同嗎? – 2014-11-04 12:09:34

+0

@MW:是的,沒問題 - 他們是不同的東西。只需在收件人看到它的時候在頭文件中設置'From:',並根據跳出的需要設置'-f'地址(即「信封」/ etc地址)。一個警告:MTA可能會懷疑安全違規,並在收到的電子郵件中插入額外的標題('X-Authentication-Warning')來警告收件人。這取決於您的確切MTA設置。 sendmail書籍有一整個頁面來避免這種情況。如果你的收件人看到這個標題,並且你想擺脫它,你應該問另一個問題。 – EML 2014-11-04 12:53:55

+0

返回路徑僅供參考。當它收到消息時,它會告訴收件人哪裏會發生反彈。它實際上並沒有做任何事情。正如在'/ usr/lib/sendmail'後面用'-f'來發送發送者是正確的答案。 '/ usr/lib/sendmail'的某些實現可能會將「返回路徑」標題解釋爲等同的。 – Jasen 2016-08-07 22:50:52

2

Return-Path頭由寫入,接收服務器,而不是發送服務器。根據RFC 5321,它與MAIL FROM命令中提供的地址相同。

即使您自己設置了Return-Path標頭,接收方服務器也會覆蓋該標頭。

現在,這是事情,MAIL FROM命令中的地址和From標題中的地址可以不同。接收用戶沒有看到MAIL FROM地址。他們只能看到From標題地址。

因此,如果您想忽略反彈或希望它們轉到特定地址,則應該在MAIL FROM命令中使用該地址。

但是在From標題中,您可以使用[email protected] - 用戶將看到此地址。


要簡化一點,請發送電子郵件[email protected]地址。接收服務器將發送反彈到這個地址。

要顯示您的用戶[email protected]地址而不是handle_bounce...地址,在原始電子郵件MIME消息From頭設置爲noreply...地址。


我最近買了一個沒有答覆從到位桶電子郵件。這裏的原始消息:

Return-Path: <bounce-1231860_HTML-1209402755-103[email protected]> 
From: "Atlassian Bitbucket" <[email protected]> 
To: <[email protected]> 
Subject: Continuous delivery, without the headache. 
Date: Wed, 28 Feb 2018 12:40:53 -0600 
MIME-Version: 1.0 
Reply-To: "Atlassian Bitbucket" <[email protected]mailer.atlassian.com> 

... message body ... 

正如你所看到的,Return-Path是專用於處理反彈的地址。但From地址是[email protected]郵件。這意味着這封電子郵件實際上是通過這個反彈處理地址發送的,而不是通過免費地址發送的。

如果用戶回覆未回覆的電子郵件,您還可以看到Reply-To標題,該標題專用於處理回覆。這些回覆可能會立即丟棄。

相關問題