NAME Mail::SpamAssassin::SMTP::SmartHost - A simple smarthost module for Net::SMTP::Server. SYNOPSIS use Carp; use Net::SMTP::Server; use Net::SMTP::Server::Client; use Mail::SpamAssassin::SMTP::SmartHost; $smarthost="localhost:10026"; $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 Mail::SpamAssassin::SMTP::SmartHost($client->{FROM}, $client->{TO}, $client->{MSG}, $smarthost); } DESCRIPTION The Mail::SpamAssassin::SMTP::SmartHost module implements simple SMTP client connection for use with the Net::SMTP::Server module. All this module does is to take a given message and deliver it into another SMTP server, using it as a "smarthost", making it useful for reinjecting filtered content back into an SMTP server via an unfiltered port. This code started life as the Net::SMTP::Server::Relay module which comes standard with the Net::SMTP::Server package. After some appropriate modifications, it is now useful to connect to an arbitrary SMTP server. The above example illustrates the use of the Mail::SpamAssassin::SMTP::SmartHost module -- you simply have to instantiate the module, passing along the sender, recipients, message, and next-hop mailserver. More formally: $relay = new Mail::SpamAssassin::SMTP::SmartHost($from, @to, $msg, $smarthost); Where $from is the sender, @to is an array containing the list of recipients, $msg is the message to relay, and $smarthost is the SMTP server to which you wish to connect including port in host:port format. AUTHOR AND COPYRIGHT Orignial code Net::SMTP::Server / SMTP::Server is Copyright(C) 1999, MacGyver (aka Habeeb J. Dihu) . ALL RIGHTS RESERVED. Modifications to Net::SMTP::Server::Relay Ian R. Justman You may distribute this package under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file. SEE ALSO Net::SMTP::Server::Server, Net::SMTP::Server::Client, Net::SMTP::Server::Relay