## 18.14.1 SMTPServer Objects

class `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).