我在Linux下有一個小應用程序,用於接收使用smtpd.SMTPServer的電子郵件。下面是小的測試代碼:用Python中的SMTPServer接收電子郵件:
class CustomSMTPServer(smtpd.SMTPServer):
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)
return
server = CustomSMTPServer(('0.0.0.0', 25), None)
asyncore.loop()
我有以下的問題: (1)當使用這一段代碼,發送電子郵件的計算機得到以下信息: 502錯誤:命令「EHLO」不實施了 ,因此服務器無法正確回覆以接收更多數據/與發送電子郵件的計算機(我認爲它是客戶端)進行通信。
不應該像EHLO這樣的基本東西在Ubuntu安裝中首先實現嗎?爲什麼沒有實施? (2)我想通過在Ubuntu中安裝postfix可以安裝EHLO。我這樣做,和相同的測試呼叫繼續,但後來與其他錯誤停止:
Client: RCPT TO: [email protected]
Server: 554 5.7.1 <[email protected]>: Relay access denied
(3)在稍後的時間,做一些更多的其他測試之後,我從測試代碼本身的錯誤:
error: [Errno 98] Address already in use
事實證明,所使用的IP地址已經在使用中如能與
netstat -lnpt
其中的情況是正在運行的後綴可以看出。停止postfix服務後的地址是不再使用,但當然是回到問題#1:
502 Error: command "EHLO" not implemented
我想能夠使用SMTPSERVER接收電子郵件 1.無需要安裝postfix 2.使用asyncore
如果有任何關於如何使用python庫以簡單方式實現這個想法的想法,那將是非常棒的!
乾杯 亞歷