我已经安装了nagios
用于监控和sendmail
发送邮件的。从root
帐户测试时,我可以收到邮件,但从帐户发送时却收不到邮件nagios
。我在 Google 上搜索后发现,只有root
用户可以使用 发送邮件sendmail MTA
。如何启用sendmail
从帐户发送邮件nagios
?
请注意,我不直接从本地机器发送消息,而是使用我的 ISP/提供商中继。以下日志显示消息来自 时中继的错误nagios@
,但来自 时不显示root@
。
nagios 用户的输出:
猫/ 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 用户的输出:
猫/ 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 有点过时了。虽然有些人认为它是有史以来最好的邮件服务器,但我个人一点也不喜欢它。
我从本地用户帐户发送电子邮件到“外部”邮件地址的组合postfix
是bsd-mailx
如果您想尝试一下:sudo apt-get install postfix bsd-mailx
。
如果您不想在此主机上接收任何电子邮件,您可以通过将 Postfix 绑定到 localhost 来提高其安全性。运行sudo postconf -e 'inet_interfaces = localhost' && sudo service postfix restart
。