top(实时查看CPU、内存占用,筛选邮件进程如postfix、dovecot)、htop(增强版top,支持颜色和快捷键)、vmstat(查看虚拟内存、进程、CPU活动)、iostat(监控磁盘I/O性能)、netstat/ss(查看网络连接、端口状态,如SMTP的25端口、IMAP的993端口)。mailq(通用命令,显示所有待处理邮件)或postqueue -p(Postfix专用,查看详细队列信息,包括邮件ID、发件人、收件人、状态)检查邮件积压情况,及时发现队列堵塞问题。编写Shell脚本定期检查关键指标(如CPU使用率、邮件队列长度),超过阈值时发送报警邮件。例如,检查CPU使用率的脚本:
#!/bin/bash
THRESHOLD=80
EMAILS="admin@example.com"
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "$CURRENT_TIME - CPU使用率超过阈值($THRESHOLD%),当前使用率: $CPU_USAGE%" | mail -s "CPU使用率报警" $EMAILS
fi
将脚本添加到cron(如每5分钟运行一次):*/5 * * * * /path/to/script.sh。
Ubuntu邮件服务器的主要日志文件为/var/log/mail.log(Debian/Ubuntu默认使用rsyslog记录邮件日志),部分旧版本或配置可能使用/var/log/maillog。
tail -f /var/log/mail.log(实时输出最新日志,便于监控实时事件)。grep 'error' /var/log/mail.log(查找错误信息)、grep 'status=bounced' /var/log/mail.log(查找邮件反弹记录)、grep '192.168.1.1' /var/log/mail.log(查找特定IP的访问日志)。grep -c 'SMTP' /var/log/mail.log(统计SMTP发送邮件数量)、grep -c 'IMAP' /var/log/mail.log(统计IMAP登录次数)。grep 'Oct 1' /var/log/mail.log(查找2025年10月1日的日志)、awk '/Oct 1/,/Oct 2/' /var/log/mail.log(查找10月1日0点到2日0点的日志)。/etc/logrotate.d/mail示例:/var/log/mail.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
表示每天轮转日志,保留7天,压缩旧日志。logwatch --service mail查看报告。mail.log数据,Elasticsearch存储和索引,Kibana创建可视化 dashboard(如邮件发送趋势、错误分布)。