Skip to content

Instantly share code, notes, and snippets.

@clarkbw
Created March 6, 2011 17:53
Show Gist options
  • Save clarkbw/857447 to your computer and use it in GitHub Desktop.
Save clarkbw/857447 to your computer and use it in GitHub Desktop.
A python LMTP server using the smtpd module
#!/bin/env python
from smtpd import SMTPChannel, SMTPServer
import asyncore
class LMTPChannel(SMTPChannel):
# LMTP "LHLO" command is routed to the SMTP/ESMTP command
def smtp_LHLO(self, arg):
self.smtp_HELO(arg)
class LMTPServer(SMTPServer):
def __init__(self, localaddr, remoteaddr):
SMTPServer.__init__(self, localaddr, remoteaddr)
def process_message(self, peer, mailfrom, rcpttos, data):
print 'Receiving message from:', peer
print 'Message addressed from:', mailfrom
print 'Message addressed to :', rcpttos
print 'Message length :', len(data)
print 'Message :', data
return
def handle_accept(self):
conn, addr = self.accept()
channel = LMTPChannel(self, conn, addr)
server = LMTPServer(('localhost', 10025), None)
asyncore.loop()
@wiml
Copy link

wiml commented Jul 19, 2011

No, this is one of the ways LMTP differs from SMTP. rfc2033 4.2 says that DATA should return multiple responses, one for each RCPT that was accepted earlier.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment