| \section{\module{smtpd} --- | 
 |          SMTP Server} | 
 |  | 
 | \declaremodule{standard}{smtpd} | 
 |  | 
 | \moduleauthor{Barry Warsaw}{barry@zope.com} | 
 | \sectionauthor{Moshe Zadka}{moshez@moshez.org} | 
 |  | 
 | \modulesynopsis{Implement a flexible 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. | 
 |  | 
 |  | 
 | \subsection{SMTPServer Objects} | 
 |  | 
 | \begin{classdesc}{SMTPServer}{localaddr, remoteaddr} | 
 | Create a new \class{SMTPServer} object, which binds to local address | 
 | \var{localaddr}.  It will treat \var{remoteaddr} as an upstream SMTP | 
 | relayer.  It inherits from \class{asyncore.dispatcher}, and so will | 
 | insert itself into \refmodule{asyncore}'s event loop on instantiation. | 
 | \end{classdesc} | 
 |  | 
 | \begin{methoddesc}[SMTPServer]{process_message}{peer, mailfrom, rcpttos, data} | 
 | Raise \exception{NotImplementedError} exception. Override this in | 
 | subclasses to do something useful with this message. Whatever was | 
 | passed in the constructor as \var{remoteaddr} will be available as the | 
 | \member{_remoteaddr} attribute. \var{peer} is the remote host's address, | 
 | \var{mailfrom} is the envelope originator, \var{rcpttos} are the | 
 | envelope recipients and \var{data} is a string containing the contents | 
 | of the e-mail (which should be in \rfc{2822} format). | 
 | \end{methoddesc} | 
 |  | 
 |  | 
 | \subsection{DebuggingServer Objects} | 
 |  | 
 | \begin{classdesc}{DebuggingServer}{localaddr, remoteaddr} | 
 | Create a new debugging server.  Arguments are as per | 
 | \class{SMTPServer}.  Messages will be discarded, and printed on | 
 | stdout. | 
 | \end{classdesc} | 
 |  | 
 |  | 
 | \subsection{PureProxy Objects} | 
 |  | 
 | \begin{classdesc}{PureProxy}{localaddr, remoteaddr} | 
 | Create a new pure proxy server. Arguments are as per \class{SMTPServer}. | 
 | Everything will be relayed to \var{remoteaddr}.  Note that running | 
 | this has a good chance to make you into an open relay, so please be | 
 | careful. | 
 | \end{classdesc} | 
 |  | 
 |  | 
 | \subsection{MailmanProxy Objects} | 
 |  | 
 | \begin{classdesc}{MailmanProxy}{localaddr, remoteaddr} | 
 | Create a new pure proxy server. Arguments are as per | 
 | \class{SMTPServer}.  Everything will be relayed to \var{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. | 
 | \end{classdesc} |