- 电子邮件将被转发到 gmail。 -> gmail 通过通知将邮件退回。
- 我想在我的邮箱“myDomain.com”中收到这封退回的电子邮件。
- 原始发件人“A”没有从 gmail 获得任何信息。
Gmail 不会向原始发件人发送退回邮件。
通信流程是这样的:
第 1 步:原始发件人邮件服务器与您的服务器通信(我们称之为 mx.example.com)
HELO originalsendermx
250 mx.example.com
MAIL FROM: originalsender@spammy.example
250 2.1.0 Ok
RCPT TO: a@example.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: this is a virus in an executable for a@example.com
<base64encodedvirusexe>
.
250 2.0.0 Ok: queued as C9F786427FA
QUIT
221 2.0.0 Bye
第 2 步:您的 postfix 服务器有一条规则,将所有发往 a@example.com 的邮件转发到 b@example.org,因此它连接到 mx.example.org:
HELO mx.example.com
250 mx.example.org
MAIL FROM originalsender@spammy.example
250 2.1.0 Ok
RCPT TO: b@example.org
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: this is a virus in an executable for a@example.com
<base64encodedvirusexe>
.
550 5.2.3 The content of this message is not allowed
QUIT
221 2.0.0 Bye
所以您的服务器接受了来自原始发件人的邮件,但 example.org(或您的情况下的 gmail)不接受来自您服务器的邮件。根据RFC 2821,您的服务器应生成未送达通知并将其发送给原始发件人:
如果 SMTP 服务器已接受中继邮件的任务及以后
发现目的地不正确或邮件无法
出于其他原因交付,那么它必须构造一个
“无法投递的邮件”通知消息并将其发送到
无法投递邮件的发起人。
这是后缀的默认行为。 OTOH,常识dictates 在这种情况下您不应该发送退回邮件,RFC5321 同意。
完成此操作的最快方法是修改 master.cf 以从不发送退回邮件:
bounce unix - - n - 0 discard
但这有点极端,在许多环境中可能无法撤消。您可以使用header_checks 缩小范围。
重要的是 gmail 不会退回任何东西,它只是拒绝它。你的服务器是弹跳它的那个。