自从我配置了服务器后,我的垃圾邮件文件夹中经常收到以下电子邮件:
** truncated **
----- The following addresses had permanent fatal errors -----
<[email protected]>
(reason: 554 5.7.1 <[email protected]>: Relay access denied)
** truncated **
我确实有一个名为 db1.mydomain.com 的服务器,但由于我找不到的原因,它被中继到 localhost.mydomain.com。
当然,我配置了别名:
$: cat /etc/aliases
root: [email protected]
....
并通过更新
$: newaliases
但问题仍然存在。
我不知道我错过了什么,也不知道在哪里可以修复它。而且我在 Google 上搜索的所有方法都对我没什么帮助(大多数时候都是关于 /etc/aliases 的)。
谢谢你的帮助。(如果您需要更多详细信息,请询问,我会添加它们)
答案1
您需要配置 sendmail 伪装。如果我理解正确的话,您希望来自主机 db1.mydomain.com 的邮件看起来好像来自 mydomain.com
如果您使用 m4 宏处理器,这会更容易 - 根据我的经验,编辑 sendmail.cf 很快就会变得很麻烦,而是编辑 sendmail.mc 模板并使用类似的东西重建它
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
基本上,如果您直接开始编辑 sendmail.cf,那么您就得靠自己了。(您也没有指定您使用的操作系统,因此您可能必须安装 m4 处理器和 sendmail-cf 包或类似程序包,无论您正在使用什么)
将以下行添加到您的 sendmail.mc:
MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
如果您想要重写来自 host.myotherdomain.com 等计算机的信封,则只需要 masquerade_entire_domain。您可能不需要它,因此您可以在 sendmail.mc 文件中通过在它前面添加“dnl”来注释掉它。(请注意,信封重写控制 sendmail 在与其他服务器的 SMTP/ESMTP 对话中使用什么,而 MASQUERADE_AS 行重写收件人实际看到的“发件人:”行)
'dnl' 在 m4 中的工作方式与 shell 脚本中的“#”类似。“删除换行符”如果我没记错的话。你无法编造这些东西。这真的很恶心。
如果你希望 sendmail 也伪装来自 root 的邮件(它通常会暴露来自 root 的邮件的 FQDN),你需要更改
EXPOSED_USER(`root')dnl
到
dnlEXPOSED_USER(`root')dnl
好的,现在您需要确保您的发送客户端有权通过 db1.mydomain.com 进行中继。现在,无论出于什么原因,您的机器都使用 localhost.mydomain.com 的信封名称发送(我猜想它连接到它的环回地址或其他东西,但不能确定,也许您的 DNS 出了问题),而该名称不允许中继。解决此问题的最简单和最安全的方法是列出您的授权机器将在 /etc/mail/relay-domains 中显示的所有信封名称(在您的例子中,将 localhost.mydomain.com 添加到您的中继域文件中,以及任何其他主机(FQDN,同样,具有适当的 A 和 PTR 记录),然后添加
FEATURE(relay_hosts_only)dnl
到您的 sendmail.mc。
或者你可以使用
FEATURE(relay_entire_domain)dnl
这将允许 mydomain.com 中的任何主机通过 db1.mydomain.com 中继邮件。我个人更喜欢限制性更强的选项。
还有许多(许多)其他 FEATURE 宏
您可能应该看一下文档来了解一下。(sendmail.com)—(尽管在这段时间内您可能能够用 postfix 替换 sendmail……)
一旦您完成了 sendmail.mc 的编辑,就会按照我上面所述生成 sendmail.cf。
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
并重新启动sendmail。
希望这能有所帮助。在 Google 上搜索“sendmail 伪装”和“控制 sendmail 中继”可获得更多信息。不要直接编辑您的 cf,这太麻烦了。
-qb
答案2
似乎您没有正确配置您的主机名(localhost??)
确保您的主机名(使用“hostname”命令找到)配置为接受和中继电子邮件。
您没有提到您正在使用哪个 MTA,但为 sendmail 添加了标签,所以我假设这就是您正在使用的。
检查 /etc/mail/sendmail.cf 并检查以
Cw
和
Fw
语句。确保您的主机名(使用‘hostname’命令找到)已在那里配置。