为什么nagios用户不能使用“sendmail”发送邮件?

为什么nagios用户不能使用“sendmail”发送邮件?

我已经安装了nagios用于监控和sendmail发送邮件的。从root帐户测试时,我可以收到邮件,但从帐户发送时却收不到邮件nagios。我在 Google 上搜索后发现,只有root用户可以使用 发送邮件sendmail MTA。如何启用sendmail从帐户发送邮件nagios

请注意,我不直接从本地机器发送消息,而是使用我的 ISP/提供商中继。以下日志显示消息来自 时中继的错误nagios@,但来自 时不显示root@

nagios 用户的输出:

  1. 猫/ var /日志/邮件日志

    Sep 19 15:52:32 ubuntubackup-chennai sendmail[6088]: q8JAMWXZ006088: from=nagios, size=237, class=0, nrcpts=1, msgid=<[email protected]>, relay=nagios@localhost
    Sep 19 15:52:32 ubuntubackup-chennai sendmail[6089]: q8JAMWCn006089: from=<[email protected]>, size=517, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
    Sep 19 15:52:32 ubuntubackup-chennai sendmail[6088]: q8JAMWXZ006088: to=karthick.murugadhas@****.com, ctladdr=nagios (496/492), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30237, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q8JAMWCn006089 Message accepted for delivery)
    Sep 19 15:52:32 ubuntubackup-chennai sendmail[6091]: q8JAMWCn006089: to=<karthick.murugadhas@****.com>, ctladdr=<[email protected]> (496/492), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=120517, relay=smtp10.netcore.co.in. [202.162.229.32], dsn=4.7.1, stat=Deferred: 450 4.7.1 <nagios@****.com>: Sender address rejected: Please checked sender domain
    

root 用户的输出:

  1. 猫/ var /日志/邮件日志

    Sep 19 15:43:29 ubuntubackup-chennai sendmail[5158]: q8JADTt2005158: from=root, size=237, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost
    Sep 19 15:43:29 ubuntubackup-chennai sendmail[5159]: q8JADTFO005159: from=<[email protected]>, size=511, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
    Sep 19 15:43:29 ubuntubackup-chennai sendmail[5158]: q8JADTt2005158: to=karthick.murugadhas@****.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30237, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q8JADTFO005159 Message accepted for delivery)
    Sep 19 15:43:30 ubuntubackup-chennai sendmail[5161]: q8JADTFO005159: to=<karthick.murugadhas@****.com>, ctladdr=<[email protected]> (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=120511, relay=smtp10.netcore.co.in. [202.162.229.32], dsn=2.0.0, stat=Sent (_SMR_smtp9.netcore.co.in Ok: queued as 29CE7F6D4C)
    

更新 1:

sendmail.mc配置文件是这里。

答案1

编辑:在对您的 SMTP 中继进行大量手动询问后,看起来问题可能是中继专门阻止了nagios@发件人:

[izx.I5] ?telnet smtp10.netcore.co.in 25
220 远程管理平台
EHLO********.com
...
邮件发件人:nagios@********.com
250 2.1.0 确定
收件箱:karthick@********.com
450 4.7.1:发件人地址被拒绝:请检查发件人域
辞职
221 2.0.0 再见
外部主机关闭连接

邮箱是否nagios@****.com存在?您可以尝试简单地重写nagios为例如吗nagios1

为此,添加/etc/sendmail.mc

FEATURE(`genericstable')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

创建文件/etc/mail/genericstable并添加以下行:

纳吉奥斯

/etc/mail/generics-domains添加以下行:

本地主机
本地主机.本地域名

然后运行sudo sendmailconfig并重试。


问题似乎出在您的 SMTP 中继上netcore.co.in。托管/ISP SMTP 中继从不“打开”,通常设置为仅中继来自“他们的”域之一和“他们的”IP 之一的邮件。来自 的邮件root@localhost可能只是因为某些邮件服务器守护程序识别并对此进行例外处理,有时甚至会@localhost用发件人的反向 DNS(或 IP)替换部分(例如,我的邮件曾经以 的形式通过[email protected])。“nagios@localhost”用户则没有得到这样的礼遇。

两种解决方案:

更简单的方法可能是简单地设置(或伪造)您的 sendmail完整限定域名 (FQDN)任何被 Netcore 认可/授权的内容。

为此,请打开/etc/mail/sendmail.mc并在任何行之前添加以下行MAILER,并进行适当修改:

MASQUERADE_AS('karthick.com')
特征(`伪装信封')

然后运行sudo sendmailconfig,对所有操作都回答“是”,并确保 sendmail 已重新启动。请参阅这里有关 Sendmail 伪装中继的更多基本信息。


或者,为了完整起见,继续使用nagios@localhost,您可以做以下两件事之一 - 要么禁用 sendmail 中的中继并直接使用它(如果您有静态 IP/PTR 记录或 RDNS),要么您可以设置 sendmail 以使用 Netcore 中继执行 SMTP 身份验证。

这些 Netcore 文章可能会有所帮助;如果可能的话,您也可以尝试询问他们:

答案2

首先:检查网络,并查看您的日志,这似乎不是用户 nagios 的问题,而是,这似乎是 sendmail 的配置问题

更准确地说,此论坛中的用户表明他得到了类似的信息450 error code(他使用的是 postfix,但我认为有某种协议),就像你的情况一样,这表明存在问题domain not found。引用同一论坛的另一位用户的话:

如果发件人地址为不存在的域,这通常是由于您的电子邮件客户端配置错误造成的。如果您的域是新域,则也可能是收件人的邮件服务器尚未赶上 DNS 传播。

虽然您使用 localhost 作为发件人域,但我仍然相信还有更多事情需要处理。

事实上,我偶然发现的另一个论坛的另一位用户,似乎与我链接到的第一个论坛中的用户有类似的问题,他也得到了相同的错误代码: 450。在同一个论坛中,另一位用户表示这也是一个 DNS 问题。

重要的:我知道你正在使用本地主机而不是某个特定的领域。然而,对我来说,这似乎是sendmail程序配置错误的问题,而不是用户 nagios没有任何权利或任何东西。

我还找到了一些其他来源,目前正在研究。随着我获得越来越多的相关信息,我将继续更新此答案。

[编辑#1]: 另一个论坛的另一位用户说

看来您是从[电子邮件保护],当接收服务器对此地址进行反向查找时,它将失败,因为它无效,因此邮件将被正确拒绝,并显示您给出的错误。确保您的服务器具有有效的服务器名称/域,并且可以在 DNS 中正向和反向查找它。

然而,在那里提问的用户似乎没有遇到450 error code。但他得到的答案与我迄今为止在互联网上看到的答案类似。

[编辑#2]:我越了解你的问题,我就越明白:看起来nagios@localhost您选择使用的发送电子邮件的域名无法解析为有效的 IP 地址,这就是导致服务器smtp10.netcore.co.in做出响应的原因450 domain not found,因为它认为您的邮件是垃圾邮件:

是的,“reject_unknown_sender_domain”可能会导致很多误报,但它确实减少了垃圾邮件。

最可能的解决方法是确保您使用可解析的域。

答案3

在我的 nagios 配置中,发送邮件的命令是

/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$

尝试一下您是否可以从命令行以用户 nagios 身份发送邮件:

su nagios
echo "test sendmail" | /usr/bin/mail -s "test" [email protected]

这可能由于路径错误、访问权限或邮件服务器不接受目标地址而失败。请将您的测试结果告知我们。

答案4

Sendmail 有点过时了。虽然有些人认为它是有史以来最好的邮件服务器,但我个人一点也不喜欢它。

我从本地用户帐户发送电子邮件到“外部”邮件地址的组合postfixbsd-mailx

如果您想尝试一下:sudo apt-get install postfix bsd-mailx

如果您不想在此主机上接收任何电子邮件,您可以通过将 Postfix 绑定到 localhost 来提高其安全性。运行sudo postconf -e 'inet_interfaces = localhost' && sudo service postfix restart

相关内容