私はあらゆる場所を検索してきましたが、これに本当に苦労しています。私はすべてを試してみたと思います。
背景情報
- CentOS 6.7のVPS
- Postfix 2.6.6
- dovecot、amavis、mysql、fail2ban
- 私のVPSプロバイダーは、ポートをブロックしないことを確認しました。
私がやったこと
- ストックsendmailを削除
- 完全なメールソリューションのためにpostfix、dovecot、mysqlなどをインストールしました
- STARTTLSでimap、smtpのみを許可しています(ポート143および587)
- SSHログインは無効になり、キーのみ
- メールを受信できる(ポート143経由)
- localhostから両方のポート(587、25)にtelnetで接続でき、Postfixグリーティングが表示されます
- 587または25(メールクライアントまたはtelnet)に接続しようとすると、応答がゼロになります(接続タイムアウト)。
私が試したもの
1)ポートは開いていますか?はい、iptables:
Chain INPUT (policy DROP 11 packets, 1375 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
25 2579 f2b-dovecot tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 110,995,143,993,587,465,4190
68 7788 f2b-postfix tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,587
0 0 f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
25 2579 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
7 600 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
23464 2662K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
49 2940 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3915
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
5 300 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 23235 packets, 2494K bytes)
pkts bytes target prot opt in out source destination
Chain f2b-dovecot (1 references)
pkts bytes target prot opt in out source destination
25 2579 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain f2b-postfix (1 references)
pkts bytes target prot opt in out source destination
68 7788 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain f2b-sshd (1 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
2)Postfixはポート587でリッスンしていますか?はい。ローカルホストでのみリッスンしていますか?いいえ、すべてのホスト。
ここにnetstatがあります:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 7173/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 917/httpd
tcp 0 0 127.0.0.1:4190 0.0.0.0:* LISTEN 749/dovecot
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 7173/master
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 749/dovecot
tcp 0 0 127.0.0.1:24 0.0.0.0:* LISTEN 749/dovecot
そして、念のためpostfix / main.cfもここにあります:
# Enable both IPv4 and/or IPv6: ipv4, ipv6, all.
inet_protocols = ipv4
# Enable all network interfaces.
inet_interfaces = all
3)安全な接続を正しく強制していますか?私の知る限り、はい、これがpostfix / master.cfです。
# Submission, port 587, force TLS connection.
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o content_filter=smtp-amavis:[127.0.0.1]:10026
4)smtpd制限についてはどうですか?大丈夫だ:
# HELO restriction
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_non_fqdn_helo_hostname
reject_invalid_helo_hostname
check_helo_access pcre:/etc/postfix/helo_access.pcre
5)postfixは正しく機能していますか?
はい、サーバーにログインし、コンソールからテストメールを送信すると、反対側で電子メールが受信されます。
echo "Test mail from postfix" | mail -s "Test Postfix" user@something.com
6)ポート587で接続するとどうなりますか?
どうやら、何もない。ランダムなポートにtelnetで接続しようとすると、少なくとも何かが表示されます。たとえば、ポート666(開いていない)にtelnetで接続しようとすると、クライアントへの応答はありませんが、少なくともtcpdumpで何かが得られます。
15:22:20.305697 IP xxx > xxx.com.mdqs: Flags [S], seq 3195304468, win 8192, options [mss 1352,nop,wscale 8,nop,nop,sackOK], length 0
ポート587をtcpdumpするとき、それにtelnetで接続しようとしても、何も起こりません。
まだ何が欠けていますか?
上記のすべてが、私がまだ試すことができることについての私の知識を使い果たしています。私はなんとかそれを私のポート587に釘付けし、何かによって完全にブロックされました。前述のように、私のVPSプロバイダーは、ポートをまったくブロックしていないことを確認しました。私はポート25を試しましたが、それは同じ話です。
私が見ることができる他の唯一のことは、サーバーをセットアップするときに何らかの方法でそれらのポートをブロックしたことですが、それが事実であるかどうか思い出せず、それをテストする方法がわかりません。
どうぞよろしくお願いいたします。実際、私はこれを解決するのを手伝ってくれる人のためにビールを買っています、私はすでにそれで2日を無駄にしていて、それは本当に迷惑になり始めています。
iptables
上記の出力をiptables -L -n -v
、全体、および編集されていないものに置き換えることはできますか?また、あなたのtcpdupmp
テストと、プロバイダーが25と587の受信をブロックしないことを保証している場合、テストしている場所が25と587の送信からブロックしている可能性もあります。IPアドレスを投稿した場合、その仮説を確認または否定する方がはるかに簡単です。