Comment vérifier la taille de la file d'attente postfix?

54

Quel est l'équivalent postfix sendmail -bp?

Gary Richardson
la source

Réponses:

66

Ou, moins en tapant:

mailq
femme
la source
27
postqueue -p
Andrejs Cainikovs
la source
27
qshape actif

vous montrera le nombre de courriels envoyés à chaque domaine et combien de temps ils sont dans la file d'attente active

qshape différée 

vous montrera la même chose mais pour la file d'attente différée

Alistair Prestidge
la source
15

Voici ce que j’utilise, tiré de la liste de diffusion postfix. J'ai enlevé le nom de l'auteur, au cas où il ne le voudrait pas ici (vous pouvez le voir à la source). Il affiche uniquement les totaux.

#!/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: Correction d'une faute de frappe sur la ligne 26.

les mikewaters
la source
Excellent script, et IMHO devrait faire partie de la distribution standard de Postfix. Contrairement à mailq / postqueue renvoie une réponse immédiate pour une file d'attente sous la contrainte
Alexander Pogrebnyak
Juste un mot de prudence sur la mise en œuvre particulière de la countfonction. Il échouera dans Postfix 2.9+ lorsque enable_long_queue_ids = yes '. Je pense qu'il ne devrait pas être trop difficile de le réparer pour les identifiants de longue file d'attente.
Alexander Pogrebnyak
10

postqueue -p | tail -n 1

La dernière ligne de la postqueue -pmontre le nombre de requêtes et leur taille:

-- 317788 Kbytes in 11860 Requests.

99 Problèmes - La syntaxe n'en est pas une
la source
Cette commande s'exécute rapidement car elle ne gaspille pas de cycles affichant les courriels individuels dans la file d'attente. Si vous voulez juste le total, lancez ceci.
Paul Calabro
5

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

dix

real 0m1.333s

utilisateur 0m0.003s

sys 0m0.003s

(résultat ci-dessus indiquant qu'il y a 10 emails en file d'attente)

Conception de site Web d'entreprise
la source
2
Plus précisément: mailq | grep -c '^ \ w'
Antonio Bardazzi Le
5

Si vous n'en avez pas, qshapevous pouvez l'installer via les commandes yum suivantes:

yum groupinstall perl development
yum install postfix-perl-scripts

qshape imprime des informations sur la répartition par âge et le domaine de la file d'attente Postfix. Vous pouvez en lire plus à ce sujet ici:

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

Exemple de sortie

% 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
la source
2

Voici un exemple.

#!/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
la source