tl;dr : - sendmail 配置为使用中继服务器,但仍然坚持使用 127.0.0.1 作为中继,这导致邮件无法发送。
我们使用开源 vCenter 设备 (v 5.0) 管理我们的 ESXi 集群。当通过 vSphere Client 连接到它时,您可以通过转到 来配置要使用的 SMTP 中继服务器Administration > vCenter Server Settings > MAIL
。您可以在那里设置 SMTP 服务器值。我查看了他们的文档,并在支持人员的电话中确认,配置邮件所需要做的就是在该框中输入中继 IP 或 fqdn,然后点击“确定”。
好吧,我已经这样做了,但邮件仍然没有发送。因此,我通过 SSH 进入服务器(即 SuSE)并查看 /var/log/mail,它似乎正试图通过 127.0.0.1 中继电子邮件,但它拒绝了它。所以查看配置文件,我看到有/etc/sendmail.cf
和/etc/mail/submit.cf
。您可以配置项目/etc/sysconfig/sendmail
并运行SuSEconfig --module sendmail
以根据 /etc/sysconfig/sendmail 中的内容将这些项目生成为 .cf 文件。
因此,我发现当您在 vCenter gui 中设置 SMTP 服务器值时,它所做的只是将 /etc/mail/submit.cf 中的“DS”行更改为具有DS[myrelayserver.com]
.
在 Internet 上看,似乎 DS 线路确实是您要使用中继服务器唯一需要更改的东西。我在 VMWare 支持下打电话,花了 2 个小时试图修改任何与中继有关的设置,但我们无法让它不使用 127.0.0.1 作为中继。请注意,每当我们进行任何类型的配置更改时,我们都会重新启动 sendmail 服务。
有谁知道发生了什么事?关于如何解决这个问题有什么想法吗?
在 Red Hat 系统上,有一个
/etc/mail/access
用于 sendmail 的文件。内容示例是:
您应该在该文件(或其 SuSE 等效项)中定义 vCenter 的 IP,然后重新启动守护程序。
编辑:
我假设您将 Sendmail 设置为侦听其环回地址以外的内容。进入
sendmail.mc
文件并查找此节。你想通过添加注释掉最后一行
dnl
。所以你最终应该得到:重新启动 sendmail 服务并重试。
编辑:
OP 正尝试将其基于 Linux 的 vSphere 设备配置为通过另一台邮件服务器进行中继。这只是一个定义 SMARTHOST 的例子。在您的 sendmail.mc 文件中,找到以下行:
删除注释行并输入您的邮件服务器的名称。如果您的邮件服务器名称是
mail.bootylicious.com
,您生成的 sendmail.mc 行将如下所示:请确保您可以 ping 通您使用的名称...
重新启动发送邮件。
较新版本的 sendmail 使用两个配置文件。这些是
submit.cf
和sendmail.cf
。不要更改sumbit.mc
(用于生成submit.cf
)或其submit.cf
本身。当本地邮件程序分叉sendmail
以发送电子邮件时使用它们,它们所做的只是将要发送的邮件中继到sendmail
监听 127.0.0.1:25 的守护进程因此,您需要做的就是手动更改 DS
sendmail.cf
并为其赋予如下值:包括括号,或修改 SMART_HOST 宏
sendmail.mc
:如果你修改
sendmail.mc
你需要产生一个新sendmail.cf
的然后重新启动sendmail
守护进程。在 Debian 中运行sendmailconfig
. 在 CentOS 中,您同时运行两者,/etc/mail/make
然后运行service sendmail restart
. 我没有使用 SuSE,抱歉。这很奇怪,但这是我让它工作的唯一方法......
我想让它伪装的名字是 mydomain.com。vCenter 服务器的主机名是 mycluster,
/etc/hosts
文件中包含 mycluster 和 mycluster.vmware.com(为什么是 vmware.com,我不知道...这是设备所必需的,还是配置它的承包商做错了?或者默认情况下设备会这样做吗?有人知道吗?)。为了使一切正常,我必须将 mydomain.com 添加到 127.0.0.1 和 ::1 的 vCenter 服务器的 /etc/hosts 文件中。但不仅如此,我还必须将它列在 mycluster 和 mycluster.vmware.com 之前。看起来 sendmail 查看 /etc/hosts 并获取 127.0.0.1 下列出的名字并将其设置为发送域?
无论如何,它现在有效。当 vCenter 中的触发器关闭并发送电子邮件时,vCenter 报告它无法发送电子邮件,但大约 60 秒后我才真正收到它。所以有些地方仍然不对,但至少它在起作用。
以下在 Suse Enterprise Linux 11 SP2 上对我有用:
我的解决方案是将 127.0.0.2 添加到主机文件中。