Ubuntu 22.04 上 alertmanager 0.25 配公司的邮件中继,日志里反复出现 Notify for alerts failed: sending mail: smtp: server does not support SMTP AUTH,钉钉能收到、邮件一封没有。
把日志和配置对完,能解释这个现象的基本就这几处。smtp_require_tls 默认开着,而中继在 25 端口只接受明文,握手失败后整封邮件没发出去;smtp_auth_username 写了完整邮箱,中继要的是短账号;安全组只放了 25,587 出口被拦,配置写的却是 587。
测端口与 TLS 握手
openssl s_client -connect 10.0.0.25:25 -starttls smtp -quiet
随后按中继实际情况改配置
smtp_smarthost: '10.0.0.25:25' smtp_require_tls: false
手工造一条告警验证链路
amtool alert add alertname=MailTest severity=warning --alertmanager.url=http://127.0.0.1:9093
剩下的就是看 notify 相关日志
journalctl -u alertmanager -n 50 --no-pager | grep -i notify
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
改完先别撤,确认这几项。amtool 造的那条告警一分钟内出现在邮箱,主题里带 FIRING,日志里不再出现 Notify for alerts failed,连续三条告警都能收到。
提醒一点。邮件不通时先用 openssl 把 SMTP 链路打通,比在 yaml 里反复改参数快;中继要短账号还是完整邮箱问清楚再配。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
