mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			64 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| 
								 | 
							
								\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}
							 |