SYNOPSIS

  use Carp;
  use Net::SMTP::Server;
  use Net::SMTP::Server::Client;
  use Net::SMTP::Server::Relay;

  $server = new Net::SMTP::Server('localhost', 25) ||
    croak("Unable to handle client connection: $!\n");

  while($conn = $server->accept()) {
    # We can perform all sorts of checks here for spammers, ACLs,
    # and other useful stuff to check on a connection.

    # Handle the client's connection and spawn off a new parser.
    # This can/should be a fork() or a new thread,
    # but for simplicity...
    my $client = new Net::SMTP::Server::Client($conn) ||
        croak("Unable to handle client connection: $!\n");

    # Process the client.  This command will block until
    # the connecting client completes the SMTP transaction.
    $client->process || next;

    # In this simple server, we're just relaying everything
    # to a server.  If a real server were implemented, you
    # could save email to a file, or perform various other
    # actions on it here.
    my $relay = new Net::SMTP::Server::Relay($client->{FROM},
                                             $client->{TO},
                                             $client->{MSG});
  }

DESCRIPTION

The Net::SMTP::Server::Relay module implements simple \s-1SMTP\s0 relaying for use with the Net::SMTP::Server module. All this module does is to take a given message and iterate through the list of recipients, doing \s-1DNS\s0 lookups for the associated \s-1MX\s0 record and delivering the messages. This module makes extensive use of the plethora of other modules already implemented for Perl (specifically the \s-1DNS\s0 and Net::SMTP modules in this case), and should give but a glimpse of the potential for extending the Net::SMTP::Server's functionality to provide a full-featured \s-1SMTP\s0 server, native to Perl.

The above example illustrates the use of the Net::SMTP::Server::Relay modules \*(-- you simply have to instantiate the module, passing along the sender, recipients, and message. More formally:

$relay = new Net::SMTP::Server::Relay($from, @to, $msg);

Where $from is the sender, @to is an array containing the list of recipients, and $msg is the message to relay.

AUTHOR AND COPYRIGHT Net::SMTP::Server / SMTP::Server is Copyright(C) 1999, MacGyver (aka Habeeb J. Dihu) <[email protected]>. ALL RIGHTS RESERVED.

You may distribute this package under the terms of either the \s-1GNU\s0 General Public License or the Artistic License, as specified in the Perl \s-1README\s0 file.

RELATED TO Net::SMTP::Server::Relay…

Net::SMTP::Server::Server, Net::SMTP::Server::Client