You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postfix环境下如何统计指定用户test@mydomain.com发送的邮件总数?

统计Postfix中特定用户发送的邮件总数

嘿,我来帮你搞定这个统计问题!你之前在/var/spool/mail里找发送记录没结果太正常了——那个目录是用来存储用户收件箱邮件的,发送邮件的踪迹根本不在那儿~下面给你几个靠谱的方法:

方法1:直接分析Postfix主日志

Postfix会把所有发送、接收的邮件活动记录到系统日志里,常见路径是/var/log/maillog(CentOS/RHEL系)或者/var/log/mail.log(Debian/Ubuntu系)。你可以用grep筛选出发件人为test@mydomain.com的记录,再统计数量:

# CentOS/RHEL系
grep -i "from=<test@mydomain.com>" /var/log/maillog | wc -l

# Debian/Ubuntu系
grep -i "from=<test@mydomain.com>" /var/log/mail.log | wc -l
  • -i:忽略大小写,避免因为日志里大小写不一致漏统计
  • from=<test@mydomain.com>:Postfix日志里标记发件人的固定格式
  • wc -l:统计筛选出的日志行数,对应发送的邮件总数(无重试情况下,一行对应一封邮件)

方法2:包含轮转后的归档日志

如果你的系统用logrotate自动轮转日志,旧日志会被压缩成maillog.1.gz、maillog.2.gz这类文件,上面的命令只会搜索当前日志。要统计所有历史记录,得加上通配符:

# CentOS/RHEL系
grep -i "from=<test@mydomain.com>" /var/log/maillog* | wc -l

# Debian/Ubuntu系
grep -i "from=<test@mydomain.com>" /var/log/mail.log* | wc -l

grep会自动识别并解压.gz格式的归档日志,不用额外操作~

方法3:去重统计(避免重复的重试记录)

如果有些邮件因为投递失败被Postfix重试发送,日志里会出现多条对应同一封邮件的记录。要是你想统计实际发送的不同邮件数量,可以结合awk和sort去重:

# CentOS/RHEL系示例
grep -i "from=<test@mydomain.com>" /var/log/maillog | awk '{print $6,$7,$8}' | sort -u | wc -l

这里的$6,$7,$8是提取日志里的邮件ID相关字段(不同系统日志格式可能略有差别,你可以先查看单条日志内容,调整字段序号),sort -u会去除重复的邮件ID,最后统计唯一的邮件数量。


内容的提问来源于stack exchange,提问作者AAHN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:52:37