我到处搜索,真的很挣扎。我想我已经尝试了几乎所有东西。
背景资料
- 使用CentOS 6.7的VPS
- 后缀2.6.6
- dovecot,amavis,mysql,fail2ban
- 我已经与我的VPS提供商确认,它们不会阻止任何端口。
我做的事
- 删除了库存sendmail
- 我已经安装了postfix,dovecot,mysql等,以获得完整的邮件解决方案
- 我只允许使用带有STARTTLS的imap,smtp(端口143和587)
- SSH登录已禁用,仅具有密钥
- 我可以接收邮件(通过端口143)
- 我可以从本地主机远程登录到两个端口(587、25),并且得到后缀问候
- 尝试连接到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上连接时会发生什么?
显然,什么都没有。如果我尝试远程登录到任何随机端口,至少会得到一些帮助。例如,尝试远程登录到端口666(未打开)不会对客户端产生任何答复,但至少我在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
当tcpdumping 587端口时,尝试通过telnet到它绝对没有任何反应。
我还缺少什么?
上面的一切耗尽了我对仍然可以尝试的东西的了解。我设法将其固定到587端口完全被某些东西阻塞。就像我说的那样,我的VPS提供商确认他们根本没有阻塞任何端口。我已经尝试过端口25,这是相同的故事。
我只能看到的另一件事是,在设置服务器时以某种方式阻塞了这些端口,但是我不记得是这种情况,而且我也不知道如何测试。
非常感谢您能给我的任何帮助。实际上,我正在为任何可以帮助我解决这个问题的人买啤酒,我已经在上面浪费了两天,而且开始变得很烦人。
iptables
上面的输出替换为iptables -L -n -v
,完整且未编辑的输出?另外,考虑到您的tcpdupmp
测试情况以及提供者的保证,即我不会阻止25和587 入站,因此从 25和587 出站开始进行测试的地方也很可能。如果您发布的IP地址,这将是一个很多更容易证实或否认这一假设。