CentOS 7 Web サーバーには postfix、dovecot、mailx がインストールされています。リモートのThunderbirdクライアントを使用して受信トレイメールを読み取るためにサーバーへのIMAP接続を確立できましたが、Thunderbirdから電子メールを送信するためのSMTP接続を確立できませんでした。フォレンジックを実行したときに試みたSMTP接続がタイムアウトしたことがわかりました。 Thunderbirdがサーバー経由で電子メールを送信できるように、接続タイムアウトをどのように解決しますか?
これまでの私のフォレンジックの結果は次のとおりです。
hostname
サーバー端末に入力すると、が返されますmydomain.com
。
nano /usr/lib/firewalld/services/smtp.xml
smtp ポートが 25 であることを示します。
パブリックゾーンでsmtpサービスを有効にすると、次の結果が得られますfirewall-cmd --list-all
。
public (default, active)
interfaces: enp3s0
sources:
services: dhcpv6-client imaps openvpn smtp
ports:
masquerade: yes
forward-ports:
icmp-blocks:
rich rules:
しかし、私のdevboxからリモートCentOS 7サーバーにTelnetを試してみると、次のような結果が表示されます。入力結果はtelnet mydomain.com 25
次のとおりです。
Trying my.SERVER.ip.addr...
telnet: connect to address my.SERVER.ip.addr: Connection timed out
次にtelnet smtp.mydomain.com 25
結果を入力します。
Trying my.SERVER.ip.addr...
telnet: connect to address my.SERVER.ip.addr: Connection timed out
また、入力openssl s_client -CApath /etc/ssl/certs -starttls smtp -port 25 -host smtp.mydomain.com
結果は以下の通りです。
socket: Connection timed out
connect:errno=110
同様に入力すると、次のようなopenssl s_client -CApath /etc/ssl/certs -starttls smtp -port 25 -host mydomain.com
結果になります。
socket: Connection timed out
connect:errno=110
設定確認の開始を入力しましたが、nano /etc/postfix/main.cf
ポートに関連するエントリが見つかりませんでした。
編集する:
FaheemMithaの提案に従って、telnet mydomain.com 587
顧客と一緒に試してみましたが、No route to host
良い反応を得ました。これは、ファイアウォールでsmtp用にポート25のみが開いているためです。
だから私はリモートサーバーmydomain.com内でTelnetを試したいと思います。 SSHを介してリモートサーバーにログインしてこれを入力すると、telnet localhost 25
結果は次のようになります。
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mydomain.com ESMTP Postfix
これにより、postfixはポート25で実行されていますが、どういうわけか外部接続を許可できないと思われます。
編集#2
@RedCricketのアドバイスに従ってiptables -L
。結果が長くなるのでファイル共有サイトに投稿しましたが、このリンクをクリックするとご覧いただけます。
iptables --flush
また、後者を試してfirewall-cmd --reload
から上記のTelnetテストとThunderbirdテストを繰り返しましたが、まだ接続タイムアウトエラーが発生します。
また何を試すことができますか?
ファイル全体を/etc/postfix/main.cf
ファイル共有サイトにアップロードしました。あなたはできます読むには、このリンクをクリックしてください。
編集#3
有効なメールアドレス some.else@some_other_domain.com メールを送信[Eメール保護]大丈夫です。そのため、テストでは、リモートThunderbirdクライアントに、このOPで上記のタスクの一部としてsome.else@some_other_domain.comに電子メールを送信させました。今朝、Thunderbirdからテストメールの返信メッセージを受け取りました。この戻りメッセージは、Thunderbird から送信された 1 つ以上のテストメッセージが mydomain.com の SMTP に入ってきたが、mydomain.com が some_other_domain.com を検索または接続できないことを意味します。メッセージは次のとおりです。
This is the mail system at host mydomain.com.
I'm sorry to have to someone.elserm you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<someone.else@some_other_domain.com>: Host or domain name not found. Name service error for
name=some_other_domain.com type=MX: Host not found, try again
Reporting-MTA: dns; mydomain.com
X-Postfix-Queue-ID: 2C915811BD1C
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Mon, 23 Feb 2015 16:46:34 -0500 (EST)
Final-Recipient: rfc822; someone.else@some_other_domain.com
Action: failed
Status: 4.4.3
Diagnostic-Code: X-Postfix; Host or domain name not found. Name service error
for name=some_other_domain.com type=MX: Host not found, try again
ForwardedMessage.eml
Subject: key enclosed
From: [email protected]
Date: 02/23/2015 01:46 PM
To: someone.else@some_other_domain.com
this is the body of the email
そのため、リモートdevboxからmydomain.comへの接続が失われる場合があり、mydomain.comから残りのインターネットへの接続も失われる場合があります。
編集#4
@derobertの提案に従って、最初にdevboxからサーバーに2つのTelnetコマンドを試してください。[Eメール保護]私のdevboxでThunderbirdクライアントを使用し、devboxとサーバーの両方でtcpdumpコマンドを実行します。 devbox端末の入力結果tcpdump port 25
は次のとおりです。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
tun0で受信中、リンクタイプRAW(raw IP)、キャプチャサイズ65535バイト^ Cキャプチャされた0個のパケットフィルタ受信された0個のパケットカーネルが0個のパケットを削除する
次にtcpdump
サーバーに入力すると、多くの出力が生成され、Ctrl-Cを入力するまで結果は無限にスクロールされます。だから入力をしてみるとtcpdump port 25
以下のような結果が出ました。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
好奇心が強いと、tcpdump port 25
devboxとサーバーの両方に再入力し、入力せずに開いたままにしてから、次から手動Ctrl-C
で入力しようとしました。[Eメール保護]私の開発ボックスでThunderbirdクライアントを使用します。それでも同じ接続タイムアウトエラーが発生しますが、openコマンドはアクティビティがないことを報告しますtcpdump port 25
。その後、両方の端末に入力すると、Ctrl-C
合計も0です。
答え1
後ろに多くのトラブルシューティング、クライアントのISPが発信するポート25(SMTP)をブロックしたことが確認されました。これは、インターネット上の任意のメールサーバーでサイトをテストした結果、メールサーバーに正しく接続できることを確認することによって確認されました。クライアントコンピュータのSMTPパケットはまったく到着しません(承認を介してtcpdump
)。
回避策は、別のポートでSMTPリスナーを再構成することです。 465(SSL経由のSMTP)と587(メール送信、RFC6409)は一般的なオプションです。