在 Debian 上监控邮件服务器,通常取决于你使用的 MTA(Postfix、Exim、Sendmail)以及是否包含 IMAP/POP3(Dovecot)。下面给你一套从基础到高级、可落地的监控方案,适合生产环境。
一个邮件服务器通常需要监控:
postfix、dovecot、opendkim、spamassassin 等进程是否运行apt update
apt install htop iotop sysstat
top
htop
iostat -x 1
systemctl status postfix
postqueue -p
查看队列数量:
postqueue -p | grep -c '^[A-F0-9]'
systemctl status dovecot
doveadm status
| 服务 | 日志 |
|---|---|
| Postfix | /var/log/mail.log |
| Dovecot | /var/log/mail.log |
| 系统 | /var/log/syslog |
tail -f /var/log/mail.log
grep "reject" /var/log/mail.log
grep "bounced" /var/log/mail.log
grep "error" /var/log/mail.log
apt install prometheus-node-exporter
systemctl enable --now prometheus-node-exporter
# 示例(需自行编译或使用 Docker)
# https://github.com/kumina/postfix_exporter
✅ 适合中大型服务器
安装:
apt install zabbix-agent
监控项:
net.tcp.listen[25]proc.num[postfix]apt install monit
示例 /etc/monit/conf.d/mail:
check process postfix with pidfile /var/spool/postfix/pid/master.pid
start program = "/usr/sbin/service postfix start"
stop program = "/usr/sbin/service postfix stop"
if failed port 25 then restart
systemctl restart monit
✅ 适合单台服务器
#!/bin/bash
QUEUE=$(postqueue -p | grep -c '^[A-F0-9]')
if [ "$QUEUE" -gt 100 ]; then
echo "邮件队列异常:$QUEUE 封"
fi
加入 cron:
*/5 * * * * /root/check_mail_queue.sh
apt install dnsutils
dig +short A your.ip.address.zen.spamhaus.org
grep "auth failed" /var/log/mail.log
建议至少配置:
✅ 如果你刚起步,建议:
systemctl 检查服务tail -f /var/log/mail.logMonit 自动重启你可以告诉我:
我可以直接给你一套针对你环境的完整监控配置。