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.' }
},
data_validate => sub {
my ($m,$data) = @_;
my $size = length $data;
if ($size > $max_email_size) {
return 0, 552, 'REJECTED: message size limit exceeded';
} else {
return 1;
}
},
);
$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->{host}:$mail->{port}) $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
- ready()
-
Invoked when server is ready
- 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 => '...', host => 'remote addr', port => 'remote port', helo => 'HELO/EHLO string', };
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.