Jak sprawdzić rozmiar kolejki Postfiksa?

54

Czym jest postfiks sendmail -bp?

Gary Richardson
źródło

Odpowiedzi:

66

Lub mniej pisania:

mailq
womble
źródło
27
postqueue -p
Andrejs Cainikovs
źródło
27
qshape aktywny

pokaże liczbę wiadomości e-mail wysyłanych do każdej domeny i czas, przez jaki były one w aktywnej kolejce

qshape odroczony 

pokaże to samo, ale dla odroczonej kolejki

Alistair Prestidge
źródło
15

Oto, czego używam, skreślony z listy mailingowej Postfix. Usunąłem nazwisko autora, na wypadek, gdyby nie chciał go tutaj (możesz zobaczyć go u źródła). Wyświetla tylko sumy.

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

EDYCJA: Naprawiono literówkę w linii 26.

mikewaters
źródło
Świetny skrypt, a IMHO powinno być częścią standardowej dystrybucji Postfix. W przeciwieństwie do mailq / postqueue zwraca natychmiastową odpowiedź na kolejkę pod przymusem
Alexander Pogrebnyak
Tylko słowo ostrzeżenia na temat konkretnej implementacji countfunkcji. Nie powiedzie się w Postfix 2.9+, gdy enable_long_queue_ids = yes '. Myślę, że naprawienie długich kolejek nie powinno być trudne.
Alexander Pogrebnyak
10

postqueue -p | tail -n 1

Ostatni wiersz postqueue -ppokazuje, ile żądań i rozmiar:

-- 317788 Kbytes in 11860 Requests.

99 problemów - składnia to nie jeden
źródło
To polecenie jest wykonywane szybko, ponieważ nie marnuje cykli wyświetlania poszczególnych wiadomości e-mail w kolejce. Jeśli chcesz tylko sumę, uruchom to.
Paul Calabro,
5

[root @ server ~] # time mailq | grep -c '^ [0-9A-Z]'

10

prawdziwe 0m1,333s

użytkownik 0m0,003s

sys 0m0,003s

(powyżej wyniku wskazującego, że w kolejce jest 10 wiadomości e-mail)

Projektowanie stron biznesowych
źródło
2
Bardziej zwięźle: mailq | grep -c '^ \ w'
Antonio Bardazzi
5

Jeśli nie masz qshape, możesz zainstalować go za pomocą następujących poleceń yum:

yum groupinstall perl development
yum install postfix-perl-scripts

qshape drukuje domenę kolejki Postfix i informacje o rozkładzie wieku. Możesz przeczytać więcej na ten temat tutaj:

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

Przykładowe dane wyjściowe

% 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
Brock Hensley
źródło
2

Oto przykład.

#!/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
Doug_Cowie
źródło