Source code: Lib/smtpd.py
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.13.1. SMTPServer Objects¶
Create a new
SMTPServerobject, which binds to local address localaddr. It will treat remoteaddr as an upstream SMTP relayer. Both localaddr and remoteaddr should be a (host, port) tuple. The object inherits from
asyncore.dispatcher, and so will insert itself into
asyncore‘s event loop on instantiation.
process_message(peer, mailfrom, rcpttos, data)¶
NotImplementedErrorexception. Override this in subclasses to do something useful with this message. Whatever was passed in the constructor as remoteaddr will be available as the
_remoteaddrattribute. 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.13.2. DebuggingServer Objects¶
20.13.3. PureProxy Objects¶
20.13.4. MailmanProxy Objects¶
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.