设置电子邮件标题,以便退回的电子邮件转到特定地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置电子邮件标题,以便退回的电子邮件转到特定地址相关的知识,希望对你有一定的参考价值。

在我们的rails应用程序中,我们发送一些系统生成的电子邮件,其中“发件人”地址设置为noreply@ourdomain.com。如果这些反弹,他们会被我们的邮件服务器发回这个地址。但是,我想做的是不要将退回的电子邮件发送回noreply@ourdomain.com,而是发送到不同的地址,例如bounced@ourdomain.com。

是否有一个标题或我可以在电子邮件中设置的内容将实现此目的,而我不必去调查我们的电子邮件服务器的变幻莫测?如果相关,我们会使用exim发送邮件。

干杯,最大

答案

经过大量关于exim配置的阅读后,我在exim4中自己想出了这一点。

首先,您希望您的应用添加以下标头:

Return-Path: <bounced@yourdomain.com>

带或不带括号的工作。 Exim将以任何方式添加括号。

其次,这是困难的部分。 Exim总是希望用发送它的unix用户覆盖我的Return-Path:地址。您可以使用Ubuntu中的/ etc / email-addresses为Web应用程序的用户设置静态电子邮件,但这仍然会忽略Return-Path标头。以下是我如何修改我的exim配置以尊重Web应用程序的Return-Path:

在主配置区域添加:

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头。

我尝试了很多其他配置指令,这是实际对我有用的唯一方法。

另一答案

3年太晚了,但万一其他人都是这样来的。 Return-Path是正确的标题,但正如詹姆斯加里斯指出的那样,它必须由网站进行最终交付。你不能只是坚守自己。

如果您通过直接连接到SMTP服务器来编写电子邮件,那么这很容易 - MAIL命令包含返回路径。如果你发送

MAIL FROM:<me@foo.com>

到SMTP服务器然后弹跳将返回到me@foo.com

如果您没有构建SMTP,并且您正在运行MTA(即exim / etc),那么您必须为MTA找到命令行开关。对于sendmail,-f me@foo.com“设置发件人的地址”,最终作为最终发送邮件中的Return-Pathme@foo.com将获得反弹(我对自动生成的电子邮件这样做)。我没有尝试过exim,但它有完全相同的选项,它应该工作。

另一答案

Errors-To已弃用,因此邮件服务器通常会忽略此标头 - 大多数服务器都会弹回“信封发件人”。

这是您的邮件客户端作为the connection to the SMTP服务器的一部分发送的电子邮件地址(不一定是发件人地址 - 尽管它通常是相同的)。

我不太了解Rails,但我找到了this - 尽管,据我所知,返回路径被MTA重置以匹配来自客户端的MAIL FROM信息,所以看起来你实际上无法设置它。

我认为您唯一能做的就是在服务器中设置退回地址。

另一答案

这是解决方案:

在电子邮件标题中,您可以设置:

From: "From Name" <from_name@ourdomain.com>
Reply-To: noreply@ourdomain.com

Errors-To: <bounced@ourdomain.com>
Return-Path: <bounced@ourdomain.com>
另一答案

Return-Path标头由接收服务器写入,而不是由发送服务器写入。根据RFC 5321,它与MAIL FROM命令中提供的地址相同。

即使您自己设置Return-Path标头,接收服务器也会覆盖它。

现在,这就是问题,MAIL FROM命令中的地址和From头中的地址可能不同。接收用户没有看到MAIL FROM地址。他们只看到From标题地址。

因此,如果您想忽略跳出或希望它们转到特定地址,您应该在MAIL FROM命令中使用该地址。

但是在From标题中,您可以使用noreply@yourdomain.com - 用户将看到此地址。


为了简化一点,您可以从handle_bounce@yourdomain.com地址发送电子邮件。接收服务器会将退回发送到此地址。

要向您的用户显示noreply@yourdomain.com地址而不是handle_bounce...地址,请将原始电子邮件MIME消息中的From标头设置为noreply...地址。


我最近收到了Bitbucket的无回复电子邮件。这是原始消息:

Return-Path: <bounce-1231860_html-1209402755-103116181-132689-225@bounce.mailer.atlassian.com>
From: "Atlassian Bitbucket" <noreply@mailer.bitbucket.org>
To: <me@hostname.com>
Subject: Continuous delivery, without the headache.
Date: Wed, 28 Feb 2018 12:40:53 -0600
MIME-Version: 1.0
Reply-To: "Atlassian Bitbucket" <reply-fe3915707665057b741c71-1231860_HTML-1209402755-132689-225@mailer.atlassian.com>

... message body ...

如您所见,Return-Path是一个专门用于处理弹跳的地址。但From地址是noreply@...邮件。这意味着这封电子邮件实际上是通过此退回处理地址发送的,而不是通过noreply地址发送的。

如果用户回复无回复电子邮件,您还可以看到专门用于处理回复的Reply-To标头。那些回复可能会立即被丢弃。

以上是关于设置电子邮件标题,以便退回的电子邮件转到特定地址的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 System.Net.Mail 设置退回地址?

将退回的电子邮件错误接收到特定的电子邮件地址

处理退回的电子邮件

为 MailChimp 活动或列表查找已清理/退回的电子邮件地址

Mandrill 能否将退回的邮件信息发送到发件人电子邮件

通过 cPanel 和 PHP 传送电子邮件 [关闭]