Wie überprüfe ich die Größe der Postfix-Warteschlange?

54

Was ist das Postfix-Äquivalent zu sendmail -bp?

Gary Richardson
quelle

Antworten:

66

Oder weniger tippen:

mailq
womble
quelle
27
postqueue -p
Andrejs Cainikovs
quelle
27
qform aktiv

zeigt Ihnen die Anzahl der E-Mails an, die an jede Domain gesendet werden, und wie lange sie in der aktiven Warteschlange waren

qform zurückgestellt 

zeigt Ihnen das gleiche, aber für die zurückgestellte Warteschlange

Alistair Prestidge
quelle
15

Folgendes verwende ich aus der Postfix-Mailingliste. Ich habe den Namen des Autors entfernt, falls er ihn hier nicht haben möchte (Sie können ihn an der Quelle sehen). Es werden nur Summen angezeigt.

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

BEARBEITEN: Ein Tippfehler in Zeile 26 wurde behoben.

Mikewaters
quelle
Tolles Skript, und IMHO sollte ein Teil der Standard-Postfix-Distribution sein. Im Gegensatz zu mailq / postqueue gibt eine Warteschlange unter Zwang sofort eine Antwort zurück
Alexander Pogrebnyak
Nur ein Wort zur Vorsicht bei der konkreten Umsetzung von countFunktionen. In Postfix 2.9+ schlägt dies fehl, wenn enable_long_queue_ids = yes '. Ich denke, es sollte nicht zu schwer sein, es für lange Warteschlangen-IDs zu beheben.
Alexander Pogrebnyak
10

postqueue -p | tail -n 1

Letzte Zeile in der postqueue -pzeigt, wie viele Anfragen und Größe:

-- 317788 Kbytes in 11860 Requests.

99 Probleme - Syntax ist keine
quelle
Dieser Befehl wird schnell ausgeführt, da keine Zyklen mit der Anzeige der einzelnen E-Mails in der Warteschlange verschwendet werden. Wenn Sie nur die Summe wollen, führen Sie dies aus.
Paul Calabro
5

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

10

echte 0m1.333s

Benutzer 0m0.003s

sys 0m0.003s

(Das obige Ergebnis zeigt an, dass 10 E-Mails in der Warteschlange stehen)

Business-Website-Design
quelle
2
Genauer gesagt: mailq | grep -c '^ \ w'
Antonio Bardazzi
5

Wenn Sie es nicht haben qshape, können Sie es mit den folgenden yum-Befehlen installieren:

yum groupinstall perl development
yum install postfix-perl-scripts

qshape druckt Informationen zur Postfix-Warteschlange und zur Altersverteilung. Hier können Sie mehr darüber lesen:

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

Beispielausgabe

% 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
quelle
2

Hier ist ein Beispiel.

#!/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
quelle