Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Net::Server::Mail::ESMUser)Contributed Perl DocumenNet::Server::Mail::ESMTP(3)

NAME
       Net::Server::Mail::ESMTP	- A module to implement	the ESMTP protocol

SYNOPSIS
	   use Net::Server::Mail::ESMTP;

	   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::ESMTP->new( socket => $conn );
	       # activate some extensions
	       $esmtp->register('Net::Server::Mail::ESMTP::8BITMIME');
	       $esmtp->register('Net::Server::Mail::ESMTP::PIPELINING');
	       # 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	ESMTP (RFC 2821) protocol.

       This class inherit from Net::Server::Mail::SMTP.	Please see
       Net::Server::Mail::SMTP for documentation of common methods.

METHODS
       ESMTP specific methods.

   register
       Activate	an ESMTP extension. This method	takes a	module's name as
       argument. This module must implement certain methods. See
       Net::Server::Mail::ESMTP::Extension for more details.

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.

   EHLO
       Takes the hostname given	as argument. Engage the	reverse	path step on
       success.	RFC 2821 requires that EHLO command return the list of
       supported extension. Default success reply implement this, so it	is
       deprecated to override this reply.

       You can rebuild extension list with get_extensions() method.

       Example:

	   my @extends;
	   foreach my $extend ($esmtp->get_extensions())
	   {
	       push(@extends, join(' ',	$extend->keyword(), $extend->parameter()));
	   }
	   my $extends_string =	join("\n", @extends);

SEE ALSO
       Please, see Net::Server::Mail, Net::Server::Mail::SMTP and
       Net::Server::Mail::LMTP.

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

perl v5.32.0			  2018-09-19	   Net::Server::Mail::ESMTP(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | EVENTS | SEE ALSO | AUTHOR | AVAILABILITY | BUGS | LICENCE | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Net::Server::Mail::ESMTP&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help