我不明白为什么伪装对我们的服务器不起作用。我在网上看过几十篇关于这个问题的解释,在这里和其他论坛上,根据这些解释,我们正在采取所有正确的步骤。我希望有人能告诉我我错过了什么。为了避免编辑时出现拼写错误,我将在这里使用真实域名。
我们正在尝试使用伪装,在未本地设置主机名的机器上为发件人:地址设置完全限定的主机名。这适用于其电子邮件地址全部由我们的 ISP 托管、交付和假脱机在由我们的域 MX 记录定义的单独机器上的网络主机。
我们没有在机器本身上设置完全限定的主机名,因为当我们这样做时,我们无法阻止我们的网络主机尝试在本地而不是向我们的 MX 服务器发送电子邮件。
为了绕过黑名单,我们已将 HELO 设置为我们的域名 actionphotography.ie(已确认[电子邮件保护]),我们将所有本地主机名 / 域名伪装成我们的完全限定名称,通过 sendmail.mc 中的这些设置(在重新启动 sendmail 之前确认它编译成功,注意受影响的主机位于 Amazon / AWS EC2 上,并且可能以非标准 sendmail 配置启动):
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`confHELO_NAME', `actionphotography.ie')dnl
MASQUERADE_AS(`actionphotography.ie')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(apl)dnl
然而,伪装似乎并没有改变标头发件人或信封发件人的域名;它仍然被写为“localhost.localdomain”:
[25] apl% mail -v [email protected]
Subject: foo
EOT
Null message body; hope that's ok
[email protected]... Connecting to [127.0.0.1] via relay...
220 localhost.localdomain ESMTP Sendmail 8.14.4/8.14.4; Tue, 4 Aug 2015 18:41:55 GMT
>>> EHLO localhost.localdomain
250-localhost.localdomain Hello apl [127.0.0.1], pleased to meet you ...
>>> MAIL From:<[email protected]> SIZE=229
250 2.1.0 <[email protected]>... Sender ok
>>> RCPT To:<[email protected]>
>>> DATA
250 2.1.5 <[email protected]>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 t74Ifte9002551 Message accepted for delivery
[email protected]... Sent (t74Ifte9002551 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 localhost.localdomain closing connection
我们的 ISP 告诉我们,由于我们的发件人:地址中仍然没有合格的域名,因此邮件从我们的服务器退回,并给出以下响应:
----- Transcript of session follows -----
... while talking to mx1.reg365.net.:
>>> DATA
<<< 550 Sender could not be verified, please check your from address
550 5.1.1 <[email protected]>... User unknown
<<< 503-All RCPT commands were rejected with this error:
<<< 503-Sender could not be verified, please check your from address
<<< 503 Valid RCPT command must precede DATA
(请注意,上面“用户未知”之前的地址在邮件服务器上是有效的,所以我只能假设这是一个“功能”,告诉垃圾邮件发送者在他们提交带有不合格主机名的发件人:地址时消失。如果我错了,请告诉我。)
我可以确认 Header Sender 和 Envelope Sender 都应该用正确的域名重写,所以不知道为什么上面的对话框中只出现了本地的 From: 地址:
[root@apl mail]# sendmail -bt
...
> /tryflags HS
> /try esmtp [email protected]
... Rcode = 0, addr = [email protected]
...
> /tryflags ES
> /try esmtp [email protected]
... Rcode = 0, addr = [email protected]
我的问题:如果伪装有效,那么我们在邮件对话框中根本就不应该看到“localhost.localdomain”,这是不是真的?我还应该查看什么来确保伪装正常工作?...我能做些什么来实现这一点?
答案1
据我了解,您修改了sendmail.mc
/ sendmail.cf
。您报告了 SMTP 对话- 它由/127.0.0.1:25
控制。伪装应该在消息submit.mc
submit.cf
sendmail.cf
树叶 127.0.0.1:25
。
执行以下命令/脚本作为root
查看与域的 MX 的 SMTP 对话。
#!/bin/sh
[email protected]
[email protected]
/usr/sbin/sendmail -i -v -Am -f$SENDER $RECIPIENT <<END
Subject: foo test
From: $SENDER
foo test
END
man sendmail
:
-Am Use sendmail.cf even if the operation mode indicates an initial mail submission.