技術解説 · 出典付きの回答
SMTPポート587と25の違い:メール送信にはどちらを使うべきか
クライアントやアプリケーションからメールサーバーにメールを送信する(サブミッションする)には、ポート587を使ってください。ポート25はサーバー間のリレー用であり、迷惑メールを防ぐためにインターネットサービスプロバイダー(ISP)によってブロックされていることがよくあります。ポート587は安全な暗号化のためのSTARTTLSをサポートしており、メッセージのサブミッションにおける現在の標準です。
メッセージのサブミッション用のポート587
ポート587は、メールのサブミッション用に指定されたポートです。Outlookのようなメールクライアントや独自のアプリケーションが、SMTPサーバーにメールを送るために使います。このポートは通常認証を必要とし、STARTTLSコマンドを使って平文の接続を安全なTLS暗号化セッションにアップグレードします。サブミッションの標準であるためISPにブロックされることはまれで、開発者にとって信頼できる選択肢です。SendHQは https://sendhq.cc/tools で無料ツールを提供しており、メール設定の確認に役立ちます。
サーバー間リレー用のポート25
ポート25は、メール転送エージェント(MTA)間でメールをリレーするために使われてきた本来のSMTPポートです。あるメールサーバーが別のメールサーバーにメッセージを送信するときは、ポート25を使います。しかし、乗っ取られた家庭用コンピューターや認証のないスクリプトから大量の迷惑メールが送られてきたため、ほとんどの家庭向けプロバイダーやクラウドプロバイダーはポート25の送信トラフィックをブロックしています。アプリケーションからのサブミッションにポート25を使おうとすると、多くの場合接続がタイムアウトします。
セキュリティと暗号化の違い
ポート587はSTARTTLSと組み合わせて使うよう設計されており、最初のハンドシェイクの後にクライアントとサーバーが安全な接続をネゴシエートできます。ポート25もSTARTTLSをサポートできますが、レガシーシステムでは暗号化されていないトラフィックに使われることがよくあります。暗黙的TLSにはポート465が使われることもありますが、サブミッションについてはポート587が引き続きIANAの推奨する標準です。ポート587を使えば、メールが配信のために受け付けられる前に認証が正しく処理されます。
適切なポートの選び方
PythonやNode.jsでコードを書いている場合や、ライブラリを使ってトランザクションメールを送信する場合は、必ずポート587から始めてください。ポート25は、インターネット上の他のサーバーからメールを受信する本格的なメールサーバーを構築する場合にのみ使います。アプリケーションが587で接続できない場合は、ファイアウォールの設定やクラウドプロバイダーのセキュリティグループを確認し、そのポートでの送信トラフィックが許可されていることを確かめてください。
よく寄せられる質問
ポート25がブロックされるのはなぜですか?
ISPがポート25をブロックするのは、スパムボットが正規のメールサーバーを使わずに、感染したデバイスから直接何百万通ものメールを送信するのを防ぐためです。
ポート587は安全ですか?
はい、ポート587はSTARTTLSを使ってクライアントとサーバー間の通信を暗号化し、認証情報とメッセージの内容を保護します。
代わりにポート465を使えますか?
ポート465は元々SMTPS(暗黙的TLS)用でした。現在もよく使われていますが、STARTTLSによるサブミッションの現在の標準はポート587です。
一次情報源
- RFC 5321:簡易メール転送プロトコル(SMTP) — RFC Editor
- RFC 3207:トランスポート層セキュリティ(TLS)上のセキュアなSMTPのためのサービス拡張 — RFC Editor
- サービス名およびトランスポートプロトコルのポート番号レジストリ — IANA