``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. SMTPServer Objects ================== class 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). DebuggingServer Objects ======================= class class smtpd.DebuggingServer(localaddr, remoteaddr) Create a new debugging server. Arguments are as per ``SMTPServer``. Messages will be discarded, and printed on stdout. PureProxy Objects ================= class 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. MailmanProxy Objects ==================== class 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.