NAME
Net::Server::Mail::LMTP - A module to implement the LMTP protocol
SYNOPSIS
my
@local_domains
=
qw(example.com example.org)
;
my
$server
= IO::Socket::INET->new(
Listen
=> 1,
LocalPort
=> 25 );
my
$conn
;
while
(
$conn
=
$server
->
accept
)
{
my
$esmtp
= Net::Server::Mail::LMTP->new(
socket
=>
$conn
);
# adding some handlers
$esmtp
->set_callback(
RCPT
=> \
&validate_recipient
);
$esmtp
->set_callback(
DATA
=> \
&queue_message
);
$esmtp
->process();
$conn
->
close
();
}
sub
validate_recipient
{
my
(
$session
,
$recipient
) =
@_
;
my
$domain
;
if
(
$recipient
=~ /\@(.*)>\s*$/)
{
$domain
= $1;
}
if
(not
defined
$domain
)
{
return
(0, 513,
'Syntax error.'
);
}
elsif
(not(
grep
$domain
eq
$_
,
@local_domains
))
{
return
(0, 554,
"$recipient: Recipient address rejected: Relay access denied"
);
}
return
(1);
}
sub
queue_message
{
my
(
$session
,
$data
) =
@_
;
my
$sender
=
$session
->get_sender();
my
@recipients
=
$session
->get_recipients();
return
(0, 554,
'Error: no valid recipients'
)
unless
(
@recipients
);
my
$msgid
= add_queue(
$sender
, \
@recipients
,
$data
)
or
return
(0);
return
(1, 250,
"message queued $msgid"
);
}
DESCRIPTION
This class implement the LMTP (RFC 2033) protocol.
This class inherit from Net::Server::Mail::ESMTP. Please see Net::Server::Mail::ESMTP for documentation of common methods.
EVENTS
Descriptions of callback who's can be used with set_callback method. All handle takes the Net::Server::Mail::ESMTP object as first argument and specific callback's arguments.
LHLO
Same as ESMTP EHLO, please see Net::Server::Mail::ESMTP.
DATA
Override the default DATA event by a per recipient response. It will be called for each recipients with data (in a scalar reference) as first argument followed by the current recipient.
SEE ALSO
Please, see Net::Server::Mail, Net::Server::Mail::SMTP and Net::Server::Mail::ESMTP.
AUTHOR
Olivier Poitrey <rs@rhapsodyk.net>
AVAILABILITY
Available on CPAN.
anonymous Git repository:
git clone git://github.com/rs/net-server-mail.git
Git repository on the web:
https://github.com/rs/net-server-mail
BUGS
Please use CPAN system to report a bug (http://rt.cpan.org/).
LICENCE
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
COPYRIGHT
Copyright (C) 2002 - Olivier Poitrey, 2007 - Xavier Guimard