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

Max*_*ams 35 email exim bounce

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

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

干杯,最大

Col*_*inM 9

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

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

Return-Path: <bounced@yourdomain.com>
Run Code Online (Sandbox Code Playgroud)

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

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

在主配置区域添加:

return_path_remove = false
Run Code Online (Sandbox Code Playgroud)

在适当的路由器配置中(例如dnslookup):

dnslookup:
  # ...
  errors_to = ${if def:h_return-path: {${address:$h_return-path:}} fail}
  headers_remove = return-path
  no_more
Run Code Online (Sandbox Code Playgroud)

现在,exim应该在信封级复制Return-Path头地址并删除原始的Return-Path头.

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

  • 这应该不起作用.并不是因为您还没有弄清楚如何在Exim中设置Return-Path,而是因为它将被传递SMTP服务器覆盖.从RFC 5321第4.4节:"当传递SMTP服务器进行最终传递"时,它在邮件数据的开头插入一个返回路径行.这需要使用return-path;邮件系统必须支持它.返回路径行保留MAIL命令的<reverse-path>中的信息." (7认同)

EML*_*EML 5

3年为时已晚,但以防万一有人以这种方式来。Return-Path是正确的标头,但正如詹姆斯·加里斯(James Garriss)上文指出的那样,必须将其放置在进行最终交付的网站上。你不能只是坚持自己。

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

MAIL FROM:<me@foo.com>
Run Code Online (Sandbox Code Playgroud)

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

如果您不构建SMTP,并且正在运行MTA(即exim / etc),则必须为MTA找到命令行开关。对于sendmail,请-f me@foo.com“设置发件人的地址”,Return-Path最后以最终发送的邮件中的地址me@foo.com为准,并得到退信(我对自动生成的电子邮件完全如此)。我没有在exim上尝试过此方法,但是它具有完全相同的选项,并且应该可以使用。


xyr*_*res 5

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...地址,请将From原始电子邮件 MIME 消息中的标题设置为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 ...
Run Code Online (Sandbox Code Playgroud)

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

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


Dmi*_*mov 3

这是解决方案:

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

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

Errors-To: <bounced@ourdomain.com>
Return-Path: <bounced@ourdomain.com>
Run Code Online (Sandbox Code Playgroud)

  • xe 做错的事情是按照您的错误建议设置 `Errors-To:` 标头。这是一个非标准标头,用于 **UUCP 邮件**,已被弃用,并且没有 UUCP 之外的功能。在世界上使用的众多 Internet MTS 软件中,只有 3 个能够识别它。首先,自 20 世纪 90 年代中期发布的 V8.8 以来,其功能已作为标准被禁用。在第二个中,该功能在七年前被彻底_删除_。第三,MTS中弹回消息的部分从未使用过它。 (9认同)
  • `Errors-To` 是非标准的,不鼓励系统使用它。也就是说,有些人仍然这样做。但由于支持它的系统很少,因此在您自己的组织之外不应认为它是可靠的。这不是一个好的选择。 (2认同)