はいメールサーバーの設定を検討してくださいしかし、ISPがポート25をブロックするのは心配です。電子メールサーバーを設定する前に、ポート25が開いていることを確認することをお勧めします。
実際に、電子メールサーバーを設定せずに私のISPがポート25をブロックしていることを確認するために使用できる端末コマンドはありますか?
答え1
2つをテストする必要があります。ブロックしますか?出るポート25接続(サーバーに対応)送るメッセージ)とブロックするかどうか着信ポート25に接続する(サーバー買収情報)。
発信接続をテストするのは非常に簡単です。テスト対象として知られている良好なメールサーバーを選択します。ここでは@google.comのメールサーバーを探します。
$ host -t mx google.com
google.com mail is handled by 10 smtp.google.com.
nc
その後、接続を試み、成功した接続とSMTPサーバーメッセージを受信したことを確認します。
$ { sleep 2; echo "quit"; } | nc -w5 smtp.google.com. 25 && echo "connection succeeded" || echo "connection failed"
220 mx.google.com ESMTP p5-20020a170902eac500b001d7077d91b1si1426011pld.170 - gsmtp
221 2.0.0 closing connection p5-20020a170902eac500b001d7077d91b1si1426011pld.170 - gsmtp
connection succeeded
$
「220...」メッセージはSMTPプロトコルの一部であり、デフォルトでは「ようこそ...」と言うサーバーです。そして、「接続の成功」は、接続が有効であることを示します。
私が使っているコマンドはやや複雑なので、その機能は次のとおりです。このnc
コマンドは、サーバーのポート25への接続を開こうとします(-w5
応答がない場合は5秒後にタイムアウトします)。 2秒待ってから、「exit」SMTPコマンドを送信して、実際の電子メールを送信せずに接続を閉じるように慎重にサーバーに通知します。 2秒遅延が発生する理由は、「220...」ウェルカムメッセージを送信する前にコマンドを送信し始めると、一部のサーバーがユーザーをスパム送信者として扱うためです。最後に、echo
最後のコマンドがある理由は、それ自体がnc
接続の成功または失敗を示す何も印刷しないためです。したがって、これらのコマンドは、終了ステータスに応じて適切なメッセージを提供しますnc
。
接続がブロックされると終了し(おそらく数秒後)、サーバーから「220...」の内容が表示されず、「Connection failed」が印刷されます。
もっと曖昧な他の可能性もあります。ギズが指摘したようにコメントから、「220...」および「接続成功」というメッセージが表示されますが、「220...」というメッセージは、サーバーがテストしたい会社ではなくISPに属していることを示す場合、ISPがブロックされている可能性があります。発信接続を完全にブロックするのではなく、影響を調べるために彼らの戦術を調べる必要があります。サーバー名が予想される名前と常に一致していないため、多少曖昧になる可能性があります(たとえば、「smtp.google.com」というサーバーが「mx.google.com」として応答します)。したがって、複数の異なる名前でテストすると、ターゲットサーバーが役に立ちます。 - もし彼らがみんな同じように答えると、あなたがブロックされていることが非常に明らかになります。
「220...」メッセージの後に「接続失敗」が続くなど、競合する指示を受けたり、サーバーがヘルスチェックで「接続成功」以外に何も送信しない場合があります。これが発生した場合は、tcpdump
何が起こっているのかを判断するために、より詳細なテスト(接続状態を確認するために走るなど)を実行する必要があります。
着信接続のテストは、最初にポート25のポート転送設定(NATを使用していると仮定)、パブリックIPアドレスの検索などのすべての作業を実行する必要があるため、より複雑です。デフォルトで設定する必要がありますあなたの役割ネットワークはポート 25 から着信接続を受信するように接続されています。
ただし、実際にメールサーバーを設定する必要はなく、ポート25でリッスンするだけです。したがって、ネットワークを設定したら、sudo nc -l 25
メールサーバーとして使用するコンピュータでネットワークを実行するだけです(パスワードで認証する必要がありますsudo
)。これにより、ポート 25 で接続を受信および受信するすべての内容が印刷されます。何かが接続されるまで待つ必要があります。
その後、アクセスをテストする必要があります。プライベートネットワーク外で(好ましくはISPネットワーク外)。最も簡単なテストはおそらく行くでしょうhttps://www.yougetsignal.com/tools/open-ports/、パブリックIPが正しいことを確認し、ポート番号を25に設定して[OK]をクリックします。機能すると、「ポート25が開いています」と表示されます。[あなたのIPは次のとおりです]コマンドsudo nc
は何も印刷せず(待っていた接続を取得したため)終了します(テストから実際のデータを送信していないため)。
接続に失敗した場合、yougetsignal ページに「ポート 25 が閉じられました」に似たメッセージが表示されます。[あなたのIPは次のとおりです]「sudo nc
まだ接続を待っています(Ctrl+を使用してC接続を切断できます)。これは、ISPがアクセスをブロックしているか、ユーザーが指定した設定に何かが間違っていることを意味します。
答え2
私が考えることができる最も簡単な方法は、インターフェイスに着信パケットを使用tcpdump
してスニッフィングすることです。public
# tcpdump -i public tcp port 25
次に、別のISPネットワーク上のシステムにログインし、次の操作を行います。
$ telnet myhost.example.com 25
tcpdump
着信パケットが表示されていることを確認してください。
答え3
以下を実行できます(ポート< 1024にルートとしてバインド)。
socat -u tcp-listen:25,reuseaddr 'system:
echo "Got a connection from ${SOCAT_PEERADDR}:${SOCAT_PEERPORT}"'
anyone@[a.b.c.d]
その後、電子メールプロバイダから電子メールを送信しようとすると、a.b.c.d
サーバーにアクセスできるパブリックIPアドレスのために、次の内容を出力する必要があります。
Got connection from 1.2.3.4:59604
ポートがブロックされていないことを確認してください。
答え4
無応答:ただしないでください。着信メールの場合、動的IPアドレスのMXレコードを設定することは可能ですが、少しトリッキーです。ただし、送信メールの場合は、住宅/動的IPアドレスではこれを実行しないでください。 ISPがポート25をブロックしない場合でも、ほとんどの通常のメールサーバーはIPアドレスからのメールの受信を拒否する必要があります。
静的IPアドレスを使用して小規模な仮想プライベートサーバーをリースすることは費用がかからず、メールを正常に送信する可能性も高いです。 Gmailなどの一部のサービスは、大規模な作業にスパム対策メカニズムを使用する傾向があり、メールがブロックされたときに効果的な緩和パスがないため、まだ運が悪くなる可能性があります。