답변:
postqueue -p
qshape 활성화
각 도메인으로 전송되는 이메일 수와 활성 큐에있는 시간을 표시합니다
지연된 qshape
지연 대기열에 대해 동일하게 표시됩니다.
다음은 postfix 메일 링리스트에서 수집 한 것입니다. 여기에서 원하지 않는 경우 저자의 이름을 제거했습니다 (소스에서 볼 수 있음). 합계 만 표시합니다.
#!/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 줄의 오타가 수정되었습니다.
count
함수 의 특정 구현에 대한주의 사항입니다 . enable_long_queue_ids = yes '인 경우 Postfix 2.9 이상에서 실패합니다. 긴 대기열 ID를 수정하는 것이 너무 어렵지 않아야한다고 생각합니다.
postqueue -p | tail -n 1
마지막 줄은 postqueue -p
요청 및 크기를 보여줍니다.
-- 317788 Kbytes in 11860 Requests.
[root @ server ~] # time mailq | grep -c '^ [0-9A-Z]'
10
실제 0m1.333s
사용자 0m0.003s
시스 0m0.003s
(10 개의 이메일이 대기 중임을 나타내는 결과 위)
없는 경우 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
다음은 예입니다.
#!/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