The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Qmail::Deliverable::Client - Client for qmail-deliverabled

SYNOPSIS

    use Qmail::Deliverable::Client qw(deliverable);

    $Qmail::Deliverable::Client::SERVER = "127.0.0.1:8998";

    if (deliverable "foo@example.com") { ... }

DESCRIPTION

Qmail::Deliverable comes with a daemon program called qmail-deliverabled. This module is a front end to it.

This module requires LWP (libwww-perl), available from CPAN.

Error reporting

The error message for communication failure is reported via a warning, but also available via $Qmail::Deliverable::Client::ERROR.

Configuration

$Qmail::Deliverable::Client::SERVER

IP adress and port of the qmail-deliverabled server, joined by a colon. Defaults to 127.0.0.1:8998, just like the daemon.

This variable can also be assigned a code reference, in which case it is called in scalar context for each remote call, using the returned value.

If the value is undef, then a connection failure is faked, but without the warning.

Functions

All documented functions are exportable, and a tag :all is available for convenience.

Unless documented differently, these functions follow the interfaces described in Qmail::Deliverable.

qmail_local $address

As Qmail::Deliverable::qmail_local. Warns and returns "" on communication failure.

deliverable $address
deliverable $local

As Qmail::Deliverable::deliverable. Warns and returns 0x2f on communication failure.

PERFORMANCE

The server on which I benchmarked this, the client+daemon combination (on localhost) reached 300 deliverability checks per second for assigned/virtual users. Real users are slower: around 150 checks per second.

LICENSE

This software does not come with warranty or guarantee of any kind. Use it at your own risk.

This software may be redistributed under the terms of the GPL, LGPL, modified BSD, or Artistic license, or any of the other OSI approved licenses listed at http://www.opensource.org/licenses/alphabetical. Distribution is allowed under all of these these licenses, or any smaller subset of multiple or just one of these licenses.

When using a packaged version, please refer to the package metadata to see under which license terms it was distributed. Alternatively, a distributor may choose to replace the LICENSE section of the documentation and/or include a LICENSE file to reflect the license(s) they chose to redistribute under.

AUTHOR

Juerd Waalboer <#####@juerd.nl>