技術解説 · 出典付きの回答

ポート587が開いているか確認する方法

ポート587が開いているかどうかは、telnet、netcat、PowerShellなどのコマンドラインツールでSMTPサーバーへの接続を試みることで確認できます。接続に成功すると、サーバーは通常220のグリーティングコードを返します。これは、ポートが開いていてメールのサブミッション用の接続を受け付けていることを示します。

Telnetで接続をテストする

TelnetはTCP接続をテストするための標準的なツールです。ターミナルで telnet smtp.example.com 587 というコマンドを実行します。画面が空白になるか、サーバーのグリーティングが表示されれば、ポートは開いています。connection refusedやタイムアウトのエラーが返ってきた場合は、ポートが閉じているか、ファイアウォールでブロックされています。なお、Windowsではtelnetを使う前に「Windowsの機能」で有効にする必要がある場合があります。

LinuxとmacOSでNetcat(nc)を使う

Netcatはネットワークのデバッグに役立つ強力なユーティリティです。nc -zv smtp.example.com 587 というコマンドを使います。zフラグはデータを送らずに待ち受け中のデーモンをスキャンするようnetcatに指示し、vフラグは詳細な出力を有効にします。成功した場合はポートへの接続に成功したことが明示され、失敗した場合は接続のタイムアウトまたは拒否が示されます。

WindowsでPowerShellを使う

telnetがないWindowsユーザーは、PowerShellのTest-NetConnectionコマンドレットを使えます。Test-NetConnection -ComputerName smtp.example.com -Port 587 を実行します。出力にはTcpTestSucceededのブール値が含まれます。これがTrueであれば、ポート587は開いています。ネットワーク経路に関する詳細な診断情報が得られるため、最近のWindows環境ではこの方法が推奨されます。

ブロックされたポートのトラブルシューティング

ポート587が閉じている場合は、ローカルのファイアウォール設定とISPの制限を確認してください。家庭向けISPの多くは、スパム対策として送信用のメールポートをブロックしています。SendHQやその無料ツール(https://sendhq.cc/tools)を使えば、外部から見た設定を確認し、メールサーバーがパブリックインターネットから到達可能であることを確かめられます。クラウドプロバイダーのセキュリティグループで、TCP 587の送信トラフィックが許可されていることも確認してください。

ポート587とSTARTTLSを理解する

ポート587は、メールのサブミッションに使われる標準のポートです。暗黙的TLSを使うポート465とは異なり、ポート587は平文の接続として始まり、STARTTLSコマンドで安全な接続にアップグレードします。そのため、単純なTCPチェックではポートが開いていることは確認できますが、暗号化が正しく機能していることを確認するには完全なSMTPハンドシェイクが必要です。

よく寄せられる質問

ポート25と587の違いは何ですか?

ポート25は主にサーバー間のリレーに使われ、ポート587はクライアントからサーバーへのメールのサブミッション用に指定されたポートです。

ポート587で接続がタイムアウトするのはなぜですか?

タイムアウトは通常、ファイアウォールがパケットを破棄していることを示します。ローカルOSのファイアウォール、ネットワークルーター、クラウドのセキュリティグループのルールを確認してください。

telnetで接続できれば、メールを送信できますか?

いいえ。確認できるのはTCPポートが開いていることだけです。メールを正常に送信するには、有効な認証と正しいSMTPコマンドが必要です。

ポート587は安全ですか?

ポート587は、最初の接続の確立後に通信を暗号化するSTARTTLSと組み合わせて使えば安全です。

一次情報源