如何確保我們的應用程式的郵件送達?

如何確保我們的應用程式的郵件送達?

我們有一個用於支援和幫助票的 Rails 應用程式。

當客戶提交請求時,它會向客戶發送確認電子郵件。當我們回覆他們的請求時,它也會發送一封電子郵件。它不接收郵件。

上週,超過 25% 的客戶停止收到回覆。他們認為我們沒有回覆他們的請求(實際上我們是這樣)。

我用我的 @yahoo.com 帳戶進行了測試,並在 mail.log 檔案中發現了這一點:

Jul  9 16:11:45 bighelp postfix/smtp[9051]: BF673324365: host b.mx.mail.yahoo.com[66.196.97.250] said: 451 Message temporarily deferred - [140] (in reply to end of DATA command)
Jul  9 16:11:45 bighelp postfix/smtp[9051]: BF673324365: to=<[email protected]>, relay=d.mx.mail.yahoo.com[68.142.202.247]:25, delay=0.73, delays=0.02/0.02/0.64/0.05, dsn=4.0.$

其他非雅虎地址也遇到了這種情況。

Rails 應用程式在 Ubuntu 上運行,我們透過以下方式發送:

ActionMailer::Base.delivery_method = :sendmail

我確保伺服器不是開放中繼。

我還能做些什麼來確保我們大部分的電子郵件都能順利發送?

答案1

此消息通常與灰名單有關(特別是雅虎,他們似乎在某些時候對每個人都這樣做)。基本上,郵件伺服器會暫時推遲您的第一封郵件,合法的電子郵件伺服器會看到此訊息,等待一段時間,然後再試一次。發送垃圾郵件的伺服器通常設定為只發送大量郵件,然後就忘記了,因此永遠不會再嘗試,因此垃圾郵件會被丟棄。

為了確保您可以通過灰名單,請確保您的郵件伺服器設定為在延遲後重試,並為其指定合理的時間窗口,通常 10-20 分鐘就足夠了。

答案2

被其他郵件伺服器暫時失敗的情況並不罕見。您應該預料到這種情況會時不時地發生。

我想大多數電子郵件提供者(免責聲明:我只為一家公司工作)會更頻繁地為「聲譽不佳」的寄件者臨時失敗。我們這樣做是為了有選擇地優先考慮乾淨郵件的資源。如果您的伺服器設法使其 IP 位址聲譽不佳,這可能意味著郵件被歸類為垃圾郵件,要么是您的應用程式發送的,要么是來自相同 IP 位址的其他郵件。

您絕對應該監控您的郵件佇列。您可能應該對個別交付進行一些審核,以便可以追蹤它們。

如果您看到大量郵件排隊等待傳遞,則表示收件者的郵件伺服器上存在某種故障,或者他們以某種方式將您的郵件列入黑名單/取消優先順序。

具體如何做這些事情是特定於應用程式的。

在這種特殊情況下,您應該聯絡雅虎的支援人員,假設您認為自己絕對沒有向他們發送垃圾郵件(也不是來自同一 IP 的其他人)。

答案3

你這裡似乎有兩個問題:

  1. 您的郵件系統目前發生了什麼
  2. 如何確保將來不再發生該問題

WRT #1,我會做以下檢查:

  1. 我會設定你的伺服器來接收郵件。無法接收退回郵件且看似僅廣播的系統通常會被標記為垃圾郵件。
  2. 檢查您的 MX 記錄並檢查您是否在黑名單中 -mxtoolbox.com
  3. 檢查您的 RDNS 記錄:www.dnscolos.com
  4. 我會將 DomainKeys 新增到您的郵件伺服器。
  5. 我建議添加 SPF 記錄。它可以降低您的「垃圾郵件」分數,並且可以防止垃圾郵件主機假裝從您的網域發送郵件。
  6. 發送電子郵件到[電子郵件受保護]。他們會回覆一份包含各種垃圾郵件檢查的報告。

WRT #2,我建議在您的電子郵件中包含一個透明的 gif 或專門標記的徽標,它將“打電話回家”,返回到您的伺服器。是的,這意味著您需要發送 HTML 電子郵件,並且某些客戶預設會阻止電子郵件檢索圖像,但是,您很快就會看到正常的回應率,並能夠檢測回應率是否下降。如果您有高價值客戶,並且您發現他們可能沒有收到您的回复,您可以主動致電他們。

答案4

您還應該確保您的郵件伺服器正確識別自身(如 mail.yourapp.com 或其他),並且存在將該 IP 連結到該名稱的 PTR 記錄。

此外,您可以新增 SPF 記錄,允許該 IP/伺服器為您的網域發送郵件,因此至少它還獲得 SPF:Pass。

相關內容