如何计算 sendmail 吞吐量

如何计算 sendmail 吞吐量

是否有人有脚本可以输出过去一小时内发送的邮件数量,即 sendmail 发送吞吐量。应该可以通过分析邮件日志来确定(/var/log/邮件日志)?

也许有一些 FOSS 可以提供帮助?

使用邮件统计/usr/sbin/邮件统计) 似乎没什么用,因为它只提供邮件服务器首次启动时的统计数据,而不是最近一小时的统计数据。也许我错了?

答案1

我认为你对 mailstats 的看法是错误的。如果你使用“-p”标志,它将重置统计信息,因此你可以每小时从 cron 运行一次,如下所示:

/usr/sbin/邮件统计-p

...并开始下一个小时的新统计数据。希望这能有所帮助。

答案2

我不太熟悉 sendmail,因为我更喜欢 postfix,但您可以使用 pflogsum 获取每日统计数据,或者通过 /var/log/maillog 查找临时类型的问题。示例:

grep 'Sep 28 09:' /var/log/maillog | grep 250 | wc -l

应该可以得到 9 月 28 日 09:00 至 09:59 期间成功投递的电子邮件数量。

答案3

供参考 - 这是我最终得到的脚本(设置为每小时通过 cron 运行):

#!/usr/bin/php
<?php

// Get time in sendmail format for last hour.
$dateMonth = date("M", strtotime("-1 hour"));
$dateDay   = date("j", strtotime("-1 hour"));
if ($dateDay < 10)
 $dateDay = " $dateDay";
$dateHour  = date("H", strtotime("-1 hour"));

$numSent = shell_exec("grep '{$dateMonth} {$dateDay} {$dateHour}:' /var/log/maillog | grep 'Message accepted for delivery' | wc -l");

// Log value
$logFile = "whereEverYouWant.log";
if(($fh = fopen($logFile,'a')) === FALSE)
 die("Failed to open \"$logFile\" for appending!\n");
fwrite($fh, date('Y-m-d, H:i:s') . ", $numSent");
fclose($fh);
?>

相关内容