Cosimo Streppone > Postfix-Mailq-0.01 > Postfix::Mailq

Download:
Postfix-Mailq-0.01.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Source  

NAME ^

Postfix::Mailq - a fast and reliable mailq-like utility for postfix

VERSION ^

version 0.01

SYNOPSIS ^

    my $mq = Postfix::Mailq::get_fast_count();

    # $mq = {
    #     active => 0,
    #     total  => 0,
    #     incoming => 0,
    #     deferred => 0,
    #     # and optionally, hold
    # }

    if (! $mq) {
        die "Something's very wrong?";
    }

    for (sort keys %{$mq}) {
        printf "%s: %-6d\n", $_, $mq->{$_};
    }

DESCRIPTION ^

This module implements a fast partial replacement for the mailq utility that comes with Postfix, where emphasis in on fast and reliable, not on complete.

It is a Postfix-specific module.

MOTIVATION ^

Why would you want to use a replacement for mailq?

Because the standard mailq can get very slow and unreliable if your system is under heavy I/O load.

If you use Nagios to monitor your mail queue, the nagios checks will fail if the system in under load, even if your mail queue is not stressed at all.

That sucks and must be fixed.

FUNCTIONS ^

get_fast_count()

Gets you a fast count of the messages in the spool dirs. Checks in active, incoming, deferred/* by default.

If you want it to check in the hold directory too, then you should supply an additional get_hold option, as in:

    my $mq = Postfix::Mailq::get_fast_count({ get_hold => 1 });

If your postfix spool directory is not in the default (specified by the DEFAULT_SPOOL_DIR constant, usually /var/spool/postfix, then you can specify your own with:

    my $mq = Postfix::Mailq::get_fast_count({
        spool_dir => '/var/local/postfix/spool'
    });

The result is a hash reference with all counts by folder, as in:

    my $mq = Postfix::Mailq::get_fast_count();

    # $mq = {
    #     active => 0,
    #     total  => 0,
    #     incoming => 0,
    #     deferred => 0,
    #     # and optionally, hold
    # }

    if (! $mq) {
        die "Something's very wrong?";
    }

    for (sort keys %{$mq}) {
        printf "%s: %-6d\n", $_, $mq->{$_};
    }

THANKS ^

Thanks to Bron Gondwana and the Opera Mail team for this code. I just cleaned it up and packaged it for CPAN.

AUTHOR ^

Cosimo Streppone <cosimo@opera.com>

COPYRIGHT AND LICENSE ^

This software is Copyright (c) 2011 by Opera Software ASA.

This is free software, licensed under:

  The (three-clause) BSD License
syntax highlighting: