如何检查后缀队列大小?


Answers:




27
qshape活动

将向您显示发送到每个域的电子邮件数量以及它们在活动队列中已经存在多长时间了

qshape延迟 

会显示相同的内容,但延迟队列


15

这是我使用的内容,是从后缀邮件列表中剔除的。我删除了作者的名字,以防他不想在这里出现(您可以在源头看到它)。它仅显示总计。

#!/usr/bin/env perl

# postfix queue/s size
# author: 
# source: http://tech.groups.yahoo.com/group/postfix-users/message/255133

use strict;
use warnings;
use Symbol;
sub count {
        my ($dir) = @_;
        my $dh = gensym();
        my $c = 0;
        opendir($dh, $dir) or die "$0: opendir: $dir: $!\n";
        while (my $f = readdir($dh)) {
                if ($f =~ m{^[A-F0-9]{5,}$}) {
                        ++$c;
                } elsif ($f =~ m{^[A-F0-9]$}) {
                        $c += count("$dir/$f");
                }
        }
        closedir($dh) or die "closedir: $dir: $!\n";
        return $c;
}
my $qdir = `postconf -h queue_directory`;
chomp($qdir);
chdir($qdir) or die "$0: chdir: $qdir: $!\n";
printf "Incoming: %d\n", count("incoming");
printf "Active: %d\n", count("active");
printf "Deferred: %d\n", count("deferred");
printf "Bounced: %d\n", count("bounce");
printf "Hold: %d\n", count("hold");
printf "Corrupt: %d\n", count("corrupt");

编辑:修正了第26行的错字。


出色的脚本,恕我直言,应该成为标准Postfix发行版的一部分。与mailq / postqueue不同,在胁迫下返回队列的即时答案
Alexander Pogrebnyak 2012年

count功能的特定实现上仅需谨慎。当enable_long_queue_ids = yes'时,它将在Postfix 2.9+中失败。我认为对于长队列ID修复它应该不太困难。
亚历山大·波格勒布纳克

10

postqueue -p | tail -n 1

postqueue -p节目的最后一行显示了多少个请求和大小:

-- 317788 Kbytes in 11860 Requests.


该命令执行迅速,因为它不会浪费循环显示队列中的各个电子邮件。如果只想要总数,请运行此程序。
Paul Calabro

5

[root @ server〜]#时间mailq | grep -c'^ [0-9A-Z]'

10

真正的0m1.333s

用户0m0.003s

sys 0分0.000秒

(以上结果表明有10封电子邮件正在排队)


2
简而言之:mailq | grep的-c '^ \ W'
安东尼Bardazzi

5

如果没有,则qshape可以通过以下yum命令安装它:

yum groupinstall perl development
yum install postfix-perl-scripts

qshape打印Postfix队列域和年龄分布信息。你可以在这里读更多关于它的内容:

http://www.postfix.org/QSHAPE_README.html

输出示例

% qshape -s hold | head
                         T  5 10 20 40 80 160 320 640 1280 1280+
                 TOTAL 486  0  0  1  0  0   2   4  20   40   419
             yahoo.com  14  0  0  1  0  0   0   0   1    0    12
  extremepricecuts.net  13  0  0  0  0  0   0   0   2    0    11
        ms35.hinet.net  12  0  0  0  0  0   0   0   0    1    11
      winnersdaily.net  12  0  0  0  0  0   0   0   2    0    10
           hotmail.com  11  0  0  0  0  0   0   0   0    1    10
           worldnet.fr   6  0  0  0  0  0   0   0   0    0     6
        ms41.hinet.net   6  0  0  0  0  0   0   0   0    0     6
                osn.de   5  0  0  0  0  0   1   0   0    0     4

2

这是一个例子。

#!/bin/bash

for q in active  bounce  corrupt  defer  deferred  flush  hold  incoming  maildrop  pid  private  public  saved  trace

    do
        count=$(find /var/spool/postfix/$q ! -type d -print | wc -l)
        echo $q $count
    done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.