4

SMTPプロトコルについて詳しく知るために、Pythonで遊んでみました。もっと正確に言えば、私はホストのSMTPサーバーに直接メールを送信しようとしていますが、ほとんど成功していません。

たとえば、gmail.comアドレスにメールを送信したい場合、xmlレコードでgmail.comを検索します。

>> nslookup -type=MX gmail.com
gmail.com       MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com
gmail.com       MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
gmail.com       MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com

次に、Pythonで次のことを行います。

import smtplib
# Tried both port 465 and 587 (can't test port 25 since it's blocked by my ISP)
s = smtplib.SMTP("alt1.gmail-smtp-in.l.google.com", 587) 

いくつか試してみましたが、1つを除いて、常に次のようになりました。
「[Errno 10051]到達不能なネットワークに対してソケット操作が試行されました」または
「[Errno10060]接続されたパーティが一定期間後に適切に応答しなかったため、接続の試行が失敗しました時間の、または接続されたホストが応答に失敗したために確立された接続が失敗しました」例外。

一部のメールサーバーがIPを逆引きし、ドメインを持っていない場合は接続を拒否することをどこかで読みました。彼らはどのようにそれをしますか?
また、多くのメールサーバーが動的IPアドレス(ISPの個人顧客として明らかに持っている)からの受信メールを拒否することもどこかで読みました。IPアドレスが動的か静的かをどのように確認できますか?

これらは、ほとんどのサーバーが私の接続を拒否しているように見える理由ですか?それともそれ以上のものがありますか?

4

2 に答える 2

4

ええと、あなたの問題はまさにこれです:

# Tried both port 465 and 587 (can't test port 25 since it's blocked by my ISP)

GoogleのMXサーバーはポート25でリッスンしています。ISPがこのポートでの発信接続を許可していない場合、目的の方法でSMTPメッセージを送信することはできません。これはISPで整理する必要があります。

メッセージの拒否に関しては、このように直接電子メールを送信すると、拒否されたり、スパムとしてフラグが付けられたりする可能性が高くなります。特に、「差出人」アドレスをIPアドレスに関連付けられたドメインと一致しないものに設定した場合、SMTPクライアントがメッセージで不一致のドメインを送信したEHLO場合、またはメッセージの内容が「スパム」に見える場合。実際の動作は、個々のMXサーバーがどのように構成されているかによって異なります。

于 2011-09-04T04:18:40.867 に答える
0

上記のようなDirecttoMXメールは、GmailのSMTPサーバーによってブロックされ、エラーメッセージ「421-4.7.0」が表示されますが、MailEnableなどの他の多くのSMTPサーバーではDirectToMXが許可されます。

次のWebサイトには、.NETのソースコードとDirect to MXコードのPHPがあります。http://www.directtomx.com-SUDSを使用してPythonでWebサービスを利用できる場合があります。

于 2015-09-29T09:56:04.677 に答える