### Navigation

- index
- modules |
- next |
- previous |
- Python v3.1 documentation »
- The Python Standard Library »
- 20. Internet Protocols and Support »

# 20.16. `smtpd` — SMTP Server

This module offers several classes to implement SMTP servers. One is a generic do-nothing implementation, which can be overridden, while the other two offer specific mail-sending strategies.

## 20.16.1. SMTPServer Objects

class `smtpd.``SMTPServer`(localaddr, remoteaddr)

  Create a new `SMTPServer` object, which binds to local address localaddr. It will treat remoteaddr as an upstream SMTP relayer. It inherits from `asyncore.dispatcher`, and so will insert itself into `asyncore`‘s event loop on instantiation.

  `process_message`(peer, mailfrom, rcpttos, data)
    Raise `NotImplementedError` exception. Override this in subclasses to do something useful with this message. Whatever was passed in the constructor as remoteaddr will be available as the `_remoteaddr` attribute. peer is the remote host’s address, mailfrom is the envelope originator, rcpttos are the envelope recipients and data is a string containing the contents of the e-mail (which should be in RFC 2822 format).

## 20.16.2. DebuggingServer Objects

class `smtpd.``DebuggingServer`(localaddr, remoteaddr)
  Create a new debugging server. Arguments are as per `SMTPServer`. Messages will be discarded, and printed on stdout.

## 20.16.3. PureProxy Objects

class `smtpd.``PureProxy`(localaddr, remoteaddr)
  Create a new pure proxy server. Arguments are as per `SMTPServer`. Everything will be relayed to remoteaddr. Note that running this has a good chance to make you into an open relay, so please be careful.

## 20.16.4. MailmanProxy Objects

class `smtpd.``MailmanProxy`(localaddr, remoteaddr)
  Create a new pure proxy server. Arguments are as per `SMTPServer`. Everything will be relayed to remoteaddr, unless local mailman configurations knows about an address, in which case it will be handled via mailman. Note that running this has a good chance to make you into an open relay, so please be careful.

### Navigation

- index
- modules |
- next |
- previous |
- Python v3.1 documentation »
- The Python Standard Library »
- 20. Internet Protocols and Support »