1 Python には、smtpd モジュールがあります。これは、smtp サーバーとして機能し、独自のメールサーバーの smtp 機能を実装することができます。
このモジュールには 4 つのクラスがあります:
smtpd.SMTPServer: process_message 関数を実装する必要があり、メッセージの内容を独自に処理し、それを他のメールサーバーに送信できます。ただし、Windows では実際にメールを送信しない空の smtp サーバーになります。
smtpd.PureProxy: 純粋なプロキシ転送として機能し、送信できます。Wireshark を使用して、実際に外部の mx にデータを送信しているのが見えます。
smtpd.MailmanProxy: mailman のプロキシ転送
smtpd.DebuggingServer: 主にデバッグ用。
2 smtp はクライアントとしてメールを送信するために使用され、Foxmail などと同様の機能を持っています。
一般的に無料の smtp は送信するために認証が必要であり、リレー(転送)もサポートされていません。
そのため、メールアドレスの mx サーバーに自分で配信する必要があります。
nslookup を使用して、set type=mx を設定すると、mx サーバーを検索できます。
この時点での mx サーバーは認証が必要ありません。以下のコードは、qq.com のサフィックスを持つメールアドレスにのみ送信できます。ただし、送信回数に制限があります。IP 認証をバイパスするためにプロキシサーバーを使用すると、理論的には無制限にメールを送信できるはずです。
コード:
import smtpd
import asyncore
print 'proxy start at 25 ...'
server = smtpd.PureProxy(('127.0.0.1', 25), ('mx1.qq.com', 25))
asyncore.loop()