Provided by: libnet-server-mail-perl_0.22-1ubuntu1_all bug

NAME

       Net::Server::Mail::LMTP - A module to implement the LMTP protocol

SYNOPSIS

           use Net::Server::Mail::LMTP;

           my @local_domains = qw(example.com example.org);
           my $server = new IO::Socket::INET Listen => 1, LocalPort => 25;

           my $conn;
           while($conn = $server->accept)
           {
               my $esmtp = new Net::Server::Mail::LMTP 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
       Overide 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