AnyEvent-SMTP
view release on metacpan or search on metacpan
ex/server-restricted.pl view on Meta::CPAN
# !
# ! Don't use this example as production code.
# ! This is only an example.
# ! Real production cases must be more smart
# !
my $cv = AnyEvent->condvar;
my $server = AnyEvent::SMTP::Server->new( port => 2525 );
sub verify {
my ($s,$con,@args) = @_;
warn "inner event";
my $helo = $con->{helo} = "@args";
# Before replying 250 we check that client truly said us his hostname and that his hostname has reverse lookup.
AnyEvent::DNS::reverse_lookup $con->{host}, sub {
if (my $hostname = shift) {
if (lc $hostname eq lc $helo) {
$con->ok("I'm ready.");
$con->new_m();
} else {
ex/server-restricted.pl view on Meta::CPAN
};
$s->stop_event;
return;
}
$server->reg_cb(
ready => sub {
my $s = shift;
warn "Server started on $s->{host}:$s->{port} with hostname $s->{hostname}\n";
},
before_HELO => \&verify, # For event order see L<Object::Event>
before_EHLO => \&verify,
mail => sub {
my ($s,$mail) = @_;
warn "Mail=".Dumper $mail;
},
);
$server->start;
$cv->recv;
( run in 0.404 second using v1.01-cache-2.11-cpan-5467b0d2c73 )