我正在尝试使用 monit,并使用 gmail 设置电子邮件服务器。配置文件如下:
set mailserver smtp.gmail.com port 587
username "[email protected]" password "password"
using tlsv1
with timeout 30 seconds
我设置了一个警报来测试:
check file alerttest with path /.nonexistent
alert [email protected] with reminder on 500 cycles
但是当我使用 monit verify 时,收到的错误消息是这样的:
Sendmail: error receiving data from the mailserver 'smtp.gmail.com' -- Resource temporarily unavailable
Alert handler failed, retry scheduled for next cycle
'alerttest' file doesn't exist
Sendmail: error receiving data from the mailserver 'smtp.gmail.com' -- Resource temporarily unavailable
'alerttest' trying to restart
有人有什么想法吗?非常感谢
答案1
除非您有实际帐户,否则您无法配置其他公司的电子邮件服务器来发送电子邮件。即使您有帐户,monit 也不是处理提交电子邮件的最佳程序。我建议安装本地 MTA 来监听 127.0.0.1,然后像这样配置 monit:
set mailserver 127.0.0.1
在这种情况下,monit 会将电子邮件传递给实际的 MTA,然后由 MTA 负责将其发送出去,与 monit 不同,MTA 完全能够处理远程服务器不可用的情况(因为它不是为此而设计的)。
如何设置和配置 MTA 不在本问题的讨论范围内,但是如果您希望它直接发送邮件,最好有一个静态 IP、rDNS 和 mx 记录。或者您可以使用远程智能主机/网关。
编辑:简要说明如何安装 postfix
跑步:
apt-get 安装 postfix
选择:
互联网网站
系统邮件名称:
无论您的系统有什么主机名
现在您已配置好 postfix 以向互联网发送和接收电子邮件。现在,当您按上述方法配置 monit 时,您将能够发送电子邮件。
重要的,为了提高传递率,您需要确保您的 IP 地址具有可以解析回您的域的反向 DNS 记录。
例如,如果您的域名是 example.org 并且您的服务器是 monit.example.org 那么它应该解析如下内容:
host monit.example.org
monit.example.org has address 192.0.43.10
host 192.0.43.10
10.43.0.192.in-addr.arpa domain name pointer monit.example.org
虽然它可以解析为不同的主机名,只要域名相同即可。这是因为许多电子邮件服务器会检查您是否具有有效的 rDNS。您可以请求您的 ISP(在本例中为亚马逊)为您更改 rDNS。
答案2
您可以使用远程邮件服务器。以下是我的示例配置,效果不错。它通过远程 smtp 服务器向我的 gmail 发送警报。我认为您仍然使用 Gmail 作为 smtp 中继。
#configure remote smtp server in monitrc
/etc/monit/monitrc
set mailserver mail.yourmailserver.com port 587
username "[email protected]" password "mypassword"
using tlsv1
with timeout 30 seconds
#set the from email which should be same as the one above
set mail-format { from: [email protected] }
//
/etc/monit/conf.d/monit.services
监控 apache2
check process apache with pidfile /var/run/apache2/apache2.pid
alert [email protected] only on { timeout,nonexist,resource,pid,connection }
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
答案3
在装有 Monit 5.26.0 的 Ubuntu 20.04 LTS 上,我尝试让 Monit 使用 Mailgun 发送邮件,但它不起作用的原因应该是tlsv1
。tls
根据此维基页面,monit 5.17 或更高版本应该tls
与 Gmail 或类似的电子邮件提供商一起使用。
答案4
Google 有烦人的“不太安全的应用程序”安全机制,会阻止连接到该应用程序。烦人是因为他们喜欢在你已关闭该功能后将其重新打开。