NAME

AnyEvent::SMTP::Server - Simple asyncronous SMTP Server

SYNOPSIS

use AnyEvent::SMTP::Server 'smtp_server';

smtp_server undef, 2525, sub {
    my $mail = shift;
    warn "Received mail from $mail->{from} to $mail->{to}\n$mail->{data}\n";
};

# or

use AnyEvent::SMTP::Server;

my $server = AnyEvent::SMTP::Server->new(
    port => 2525,
    mail_validate => sub {
        my ($m,$addr) = @_;
        if ($good) { return 1 } else { return 0, 513, 'Bad sender.' }
    },
    rcpt_validate => sub {
        my ($m,$addr) = @_;
        if ($good) { return 1 } else { return 0, 513, 'Bad recipient.' }
    },
);

$server->reg_cb(
    client => sub {
        my ($s,$con) = @_;
        warn "Client from $con->{host}:$con->{port} connected\n";
    },
    disconnect => sub {
        my ($s,$con) = @_;
        warn "Client from $con->{host}:$con->{port} gone\n";
    },
    mail => sub {
        my ($s,$mail) = @_;
        warn "Received mail from $mail->{from} to $mail->{to}\n$mail->{data}\n";
    },
);

$server->start;
AnyEvent->condvar->recv;

DESCRIPTION

Simple asyncronous SMTP server. Authorization not implemented yet. Patches are welcome

FUNCTIONS

smtp_server $host, $port, $cb->(MAIL)

METHODS

new %args;

hosthame

Server FQDN

host

Address to listen on. by default - undef (0.0.0.0)

port

Port to listen on

start

Creates tcp server and starts to listen

stop

Closes all opened connections and shutdown server

EVENTS

client($connection)

Invoked when client connects

disconnect($connection)

Invoked when client disconnects

mail($mail)

Invoked when server received complete mail message

$mail = {
    from => ...,
    to   => [ ... ],
    data => '...',
};

BUGS

Bug reports are welcome in CPAN's request tracker http://rt.cpan.org/NoAuth/Bugs.html?Dist=AnyEvent-SMTP

AUTHOR

Mons Anderson, <mons at cpan.org>

COPYRIGHT & LICENSE

Copyright 2009 Mons Anderson, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.