---
name: "Mail::SpamAssassin::SMTP::SmartHost"
section: "3pm"
platform: "linux"
package: "spamassassin"
version: "2.20-1woody4"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/Mail::SpamAssassin::SMTP::SmartHost"
---

# Mail::SpamAssassin::SMTP::SmartHost(3pm)

A simple smarthost module for Net::SMTP::Server.

## 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) \<macgyver@tos.net\>.  ALL RIGHTS RESERVED.

Modifications to Net::SMTP::Server::Relay\
   Ian R. Justman \<ianj@esper.net\>

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
