Làm cách nào để kiểm tra kích thước hàng đợi postfix?


Câu trả lời:




27
qshape hoạt động

sẽ cho bạn biết số lượng email được gửi đến từng tên miền và thời gian chúng tồn tại trong hàng đợi hoạt động

qshape hoãn lại 

sẽ cho bạn thấy tương tự nhưng đối với hàng đợi


15

Đây là những gì tôi sử dụng, loại ra khỏi danh sách gửi thư hậu tố. Tôi đã xóa tên tác giả, trong trường hợp anh ta không muốn nó ở đây (bạn có thể thấy nó ở nguồn). Nó chỉ hiển thị tổng số.

#!/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");

EDIT: Đã sửa lỗi chính tả trên dòng 26.


Kịch bản tuyệt vời và IMHO phải là một phần của phân phối Postfix tiêu chuẩn. Không giống như mailq / postqueue trả lời câu trả lời ngay lập tức cho hàng đợi dưới thời hạn
Alexander Pogrebnyak

Chỉ cần một lời cảnh báo về việc thực hiện countchức năng cụ thể . Nó sẽ thất bại trong Postfix 2.9+ khi enable_long_queue_ids = yes '. Tôi nghĩ không nên quá khó để sửa nó cho các id hàng dài.
Alexander Pogrebnyak

10

postqueue -p | tail -n 1

Dòng cuối cùng trong postqueue -pchương trình có bao nhiêu yêu cầu và kích thước:

-- 317788 Kbytes in 11860 Requests.


Lệnh này thực thi nhanh chóng vì nó không lãng phí chu kỳ hiển thị các email riêng lẻ trong hàng đợi. Nếu chỉ muốn tổng số, chạy này.
Paul Calabro

5

[root @ server ~] # thời gian mailq | grep -c '^ [0-9A-Z]'

10

số 0m1.333 thực

người dùng 0m0.003s

sys 0m0.003s

(kết quả trên cho thấy có 10 email đang xếp hàng)


2
Chính xác hơn: mailq | grep -c '^ \ w'
Antonio Bardazzi

5

Nếu bạn không có, qshapebạn có thể cài đặt nó thông qua các lệnh yum sau:

yum groupinstall perl development
yum install postfix-perl-scripts

qshape in tên miền hàng đợi Postfix và thông tin phân phối tuổi. Bạn có thể đọc thêm về nó ở đây:

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

Ví dụ đầu ra

% 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

Đây là một ví dụ.

#!/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.