Python smtpd
跳转到导航
跳转到搜索
示例
#!/usr/bin/env python3
# vim:fileencoding=utf-8
from smtpd import SMTPServer
import subprocess
import asyncore
import time
class MySMTPServer(SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
lines = data.split('\n')
print('收到来自 %s 的发往 %s 的邮件' % (mailfrom, rcpttos))
procmail = subprocess.Popen(["sudo", "-u", "lilydjwg", "procmail"], stdin=subprocess.PIPE)
procmail.stdin.write(b'From lily@lily.10dig.net ' + time.ctime().encode())
procmail.stdin.write(b'\n')
procmail.stdin.write(b'Return-Path: <lily@lily.10dig.net>\n')
procmail.stdin.write(b'Delivered-To: unknown\n')
for line in lines:
procmail.stdin.write(line.encode())
procmail.stdin.write(b'\n')
procmail.stdin.close()
if __name__ == '__main__':
MySMTPServer(('0.0.0.0', 25), ('localhost', 25))
try:
asyncore.loop()
except KeyboardInterrupt:
pass