現在、ユーザーは電子メールを送信できますが、サーバー(POP3)にログインしたり、Outlookクライアントを使用して電子メールを受信できない電子メールサーバーの問題を解決したいと思います。以前は動作していましたが、サーバーを現在の場所に移動すると問題が発生しました。私はファイアウォールが問題の原因であると疑った。
まず、ファイアウォールを変更する前(または変更しようとする前)のハンドシェイクは次のとおりです。
- メールサーバー:192.168.25.26
顧客:192.168.25.50
Source | Destination | PROTO | INFO 192.168.25.50 192.168.25.26 TCP 50861 > pop3 [SYN] seq=0 win=65535 len=0 192.168.25.26 192.168.25.50 TCP pop3 > 58601 [RST, ACK] seq=1 win=1 len=0 192.168.25.50 192.168.25.26 TCP [TCP Retransmission] 58061 > pop3 [Syn] etc....
そして[rst、ack]、[tcp retransmit]ダンスが失敗する前に再び発生します。
192.168.25.26およびPOP3のファイアウォール(Cisco)規則は次のとおりです。
中: source | destination | service
any 192.168.25.0/24 tcp/pop3
192.168.25.0/24 any tcp/smtp
208.105.121.196
外部:
source | destination | service
any 192.168.25.26 tcp/pop3
any tcp/smtp
私にとってはこれがよさそうだ。確かにメールサーバー(Zentyal)で次のコマンドを実行しました。
(IPテーブルがひどく設定されています。ここに問題があるようです。許可する方法はありますか?みんなトラフィック、単にテスト用ですか? )
sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
ただし、まだOutlook接続機能はありません。この時点で、電子メールサーバーで次のコマンドを実行しました。
telnet 127.0.0.1 110
メールサーバーにログインできます。ネットワーク内のクライアントで同じコマンドを実行しましたが、「接続に失敗しました」というメッセージが表示されました。
これらの変更を行った後、Outlookで「設定テスト」を試みると、ハンドシェイクプロセスは次のようになります。何か変なことを見つけました。
Source | Destination | PROTO | INFO
192.168.25.50 192.168.25.26 TCP apollo-status > pop3 [SYN] seq=0 win=65535 len=0
192.168.25.26 192.168.25.50 TCP pop3 > apollo-status [RST, ACK] seq=1 win=1 len=0
192.168.25.50 192.168.25.26 TCP [TCP Retransmission] apollo-status > pop3 [Syn] etc....
前回と同様にさらに2回行われました。これで、情報ウィンドウにポート番号の代わりにapollo-statusが表示されます。次の 2 回実行すると、それぞれ npep_messaging と synapse が表示されました。 dovecot.configでデフォルトのリスナーを以前に指定されたポートからアスタリスク "*"に変更したため、これはdovecotで選択された任意のポートであると思われます。これは4,000年代のランダムポートであるように見え、ファイアウォールの背後にあります。
確認すると、(推奨)設定によって使用するポートが毎回変更されるようです。明らかに、ループバックインターフェイスポート110にリスナーが接続されていますが、他のコンピュータでは動作が停止しているようです。
どんな助けでも別の言葉ありがとうございます。私はこのために多くの努力を払っており、コミュニティから新しいアイデアを思い出すことができることを願っています。
ベストアンサー1
したがって、RSTニュースはあなたを驚かせてはいけません。これは、ファイアウォールを持つサービスにアクセスしようとするたびに、またはオペレーティングシステムがそのサービスがこのポートでリッスンしていないことを通知するたびに発生します(BTW、Tracerouteは、このトリックを使用してTracerouteが検出を停止する必要がある場合)を把握します。)。
私のボックスのListen状態にあるTCPソケットを見てみましょう。
❯ netstat -an | grep LISTEN [11:49:58 PM]
tcp4 0 0 *.9100 *.* LISTEN
tcp4 0 0 *.17500 *.* LISTEN
tcp4 0 0 127.0.0.1.8021 *.* LISTEN
tcp6 0 0 ::1.8021 *.* LISTEN
tcp4 0 0 127.0.0.1.3306 *.* LISTEN
tcp4 0 0 *.22 *.* LISTEN
tcp6 0 0 *.22 *.* LISTEN
tcp4 0 0 127.0.0.1.631 *.* LISTEN
tcp6 0 0 ::1.631 *.* LISTEN
それでは、私のローカルトラフィックをスヌーピングしながら、存在しないサービスに接続してみましょう。
❯ nc -v -z 127.0.0.1 12002 [11:50:12 PM]
nc: connectx to 127.0.0.1 port 12002 (tcp) failed: Connection refused
これはそのようなサービスがないことを知らせるオペレーティングシステムです。ファイアウォールはまったく同じように偽造します(REJECTターゲットを使用するとうまく機能します。ターゲットはトラフィックに対して/ dev / nullを破棄します)。
❯ sudo tshark -i lo -s0 [11:50:04 PM]
Capturing on 'Loopback'
1 0.000000 127.0.0.1 -> 127.0.0.1 TCP 68 54188→12002 [SYN] Seq=0 Win=65535 Len=0 MSS=16344 WS=32 TSval=688032360 TSecr=0 SACK_PERM=1
2 0.000063 127.0.0.1 -> 127.0.0.1 TCP 44 12002→54188 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
アクティブポートに接続すると、TCPハンドシェイクと解体ダンスが発生します。
❯ nc -v -z 127.0.0.1 8021 [11:50:23 PM]
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif lo0
src 127.0.0.1 port 54190
dst 127.0.0.1 port 8021
rank info not available
TCP aux info available
関連するネットワークトラフィックは次のとおりです。
3 11.123990 127.0.0.1 -> 127.0.0.1 TCP 68 54190→8021 [SYN] Seq=0 Win=65535 Len=0 MSS=16344 WS=32 TSval=688043453 TSecr=0 SACK_PERM=1
4 11.124082 127.0.0.1 -> 127.0.0.1 TCP 68 8021→54190 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=16344 WS=32 TSval=688043453 TSecr=688043453 SACK_PERM=1
5 11.124091 127.0.0.1 -> 127.0.0.1 TCP 56 54190→8021 [ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=688043453 TSecr=688043453
6 11.124099 127.0.0.1 -> 127.0.0.1 TCP 56 [TCP Window Update] 8021→54190 [ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=688043453 TSecr=688043453
7 11.136377 127.0.0.1 -> 127.0.0.1 TCP 56 54190→8021 [FIN, ACK] Seq=1 Ack=1 Win=408288 Len=0 TSval=688043464 TSecr=688043453
8 11.136406 127.0.0.1 -> 127.0.0.1 TCP 56 8021→54190 [ACK] Seq=1 Ack=2 Win=408288 Len=0 TSval=688043464 TSecr=688043464
9 11.136415 127.0.0.1 -> 127.0.0.1 TCP 56 [TCP Dup ACK 7#1] 54190→8021 [ACK] Seq=2 Ack=1 Win=408288 Len=0 TSval=688043464 TSecr=688043464
10 11.263097 127.0.0.1 -> 127.0.0.1 TCP 56 8021→54190 [FIN, ACK] Seq=1 Ack=2 Win=408288 Len=0 TSval=688043587 TSecr=688043464
11 11.263126 127.0.0.1 -> 127.0.0.1 TCP 56 54190→8021 [ACK] Seq=2 Ack=2 Win=408288 Len=0 TSval=688043587 TSecr=688043587
では、問題をどのように解決しますか?
ソケットが外部から見えるポート(*:port_number)でリッスンしていることを確認してください。
❯ netstat -an | grep LISTEN [11:49:58 PM]
tcp4 0 0 *.9100 *.* LISTEN <<< COOL
tcp4 0 0 *.17500 *.* LISTEN
tcp4 0 0 127.0.0.1.8021 *.* LISTEN <<< NOT COOL
最も簡単なファイアウォールで起動するか、ファイアウォールなしで起動して、同じLAN上のリモートデバイスからサービスポートに接続します。カーネルフラグを渡すには、サーバー側でsysctlを介してiptablesを開く必要があります。
sudo iptables -n -L -X -v
sudo tshark -i eth0 -s0 port 110
クライアントから
sudo tshark -i eth0 -s0 port 110
nc -v -z mailserver.example.org 110
送信内容が正確にリモートボックスに到達する内容であることを確認するには、両端のtshark出力を比較することが重要です。