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


Antworten:




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


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.


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.


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)


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.