AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 453169
Accepted
Safado
Safado
Asked: 2012-11-29 12:14:28 +0800 CST2012-11-29 12:14:28 +0800 CST 2012-11-29 12:14:28 +0800 CST

vCenter Appliance 不会使用邮件中继服务器

  • 772

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 服务。

有谁知道发生了什么事?关于如何解决这个问题有什么想法吗?

sendmail
  • 5 5 个回答
  • 11987 Views

5 个回答

  • Voted
  1. ewwhite
    2012-11-29T12:32:55+08:002012-11-29T12:32:55+08:00

    在 Red Hat 系统上,有一个/etc/mail/access用于 sendmail 的文件。

    内容示例是:

    # Check the /usr/share/doc/sendmail/README.cf file for a description
    # of the format of this file. (search for access_db in that file)
    # The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
    # package.
    #
    # by default we allow relaying from localhost...
    Connect:localhost.localdomain           RELAY
    Connect:localhost                       RELAY
    Connect:127.0.0.1                       RELAY
    172.16.2.116                            RELAY
    172.16.2.17                             RELAY
    

    您应该在该文件(或其 SuSE 等效项)中定义 vCenter 的 IP,然后重新启动守护程序。

    编辑:

    我假设您将 Sendmail 设置为侦听其环回地址以外的内容。进入sendmail.mc文件并查找此节。

    dnl # The following causes sendmail to only listen on the IPv4 loopback address
    dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
    dnl # address restriction to accept email from the internet or intranet.
    dnl #
    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
    

    你想通过添加注释掉最后一行dnl。所以你最终应该得到:

    dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
    

    重新启动 sendmail 服务并重试。

    编辑:

    OP 正尝试将其基于 Linux 的 vSphere 设备配置为通过另一台邮件服务器进行中继。这只是一个定义 SMARTHOST 的例子。在您的 sendmail.mc 文件中,找到以下行:

    dnl define(`SMART_HOST', `smtp.your.provider')dnl
    

    删除注释行并输入您的邮件服务器的名称。如果您的邮件服务器名称是mail.bootylicious.com,您生成的 sendmail.mc 行将如下所示:

    define(`SMART_HOST', `mail.bootylicious.com')dnl
    

    请确保您可以 ping 通您使用的名称...

    重新启动发送邮件。

    • 0
  2. adamo
    2012-11-29T23:34:39+08:002012-11-29T23:34:39+08:00

    较新版本的 sendmail 使用两个配置文件。这些是submit.cf和sendmail.cf。不要更改sumbit.mc(用于生成submit.cf)或其submit.cf本身。当本地邮件程序分叉sendmail以发送电子邮件时使用它们,它们所做的只是将要发送的邮件中继到sendmail监听 127.0.0.1:25 的守护进程

    因此,您需要做的就是手动更改 DSsendmail.cf并为其赋予如下值:

    DS[relay.server]
    

    包括括号,或修改 SMART_HOST 宏sendmail.mc:

    define(`SMART_HOST', `[relay.server]')dnl
    

    如果你修改sendmail.mc你需要产生一个新sendmail.cf的然后重新启动sendmail守护进程。在 Debian 中运行sendmailconfig. 在 CentOS 中,您同时运行两者,/etc/mail/make然后运行service sendmail restart​​. 我没有使用 SuSE,抱歉。

    • 0
  3. Best Answer
    Safado
    2012-11-30T09:01:17+08:002012-11-30T09:01:17+08:00

    这很奇怪,但这是我让它工作的唯一方法......

    我想让它伪装的名字是 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 秒后我才真正收到它。所以有些地方仍然不对,但至少它在起作用。

    • 0
  4. user163003
    2013-03-06T04:09:14+08:002013-03-06T04:09:14+08:00

    以下在 Suse Enterprise Linux 11 SP2 上对我有用:

    vi /etc/sysconfig/sendmail
    
    
    # change SMARTHOST to your relay
    SENDMAIL_SMARTHOST="[x.x.x.x]"
    
    # change to YES, to not resolve DNS
    SENDMAIL_NOCANONIFY="yes"
    
    SuSEconfig --module sendmail
    
    service sendmail restart
    
    • 0
  5. Mattias
    2016-01-05T03:15:53+08:002016-01-05T03:15:53+08:00

    我的解决方案是将 127.0.0.2 添加到主机文件中。

    sudo sh -c 'echo "127.0.0.2 server1" >> /etc/hosts'
    
    • -2

相关问题

  • 如何使用远程 SMTP 配置 php.ini?

  • Linux sendmail 垃圾邮件?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • 如何配置 sendmail 以拒绝日期标题与实时相差太远的电子邮件?

  • 什么是好的 sendmail 日志分析器?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve