尝试设置邮件服务器,无法使端口(25,587)正常工作

我到处search,我真的很挣扎着这个。 我想我已经试过了一切。

背景信息

  • VPS与CentOS 6.7
  • 后缀2.6.6
  • dovecot,amavis,mysql,fail2ban
  • 我已经与我的VPS提供商validation过,他们不会阻止任何端口。

我做的事情

  • 删除了股票sendmail
  • 我已经安装了postfix,dovecot,mysql等完整的邮件解决scheme
  • 我只允许imap,与STARTTLS smtp(端口143和587)
  • SSHlogin被禁用,只有使用密钥
  • 我可以收到邮件(通过143端口)
  • 我可以从本地telnet到两个端口(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)是否在端口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 

以下是后缀/ main.cf,以防万一:

 # Enable both IPv4 and/or IPv6: ipv4, ipv6, all. inet_protocols = ipv4 # Enable all network interfaces. inet_interfaces = all 

3)你是否正确强制安全连接? 据我所知,是的,这是后缀/ 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)是否后缀甚至工作正确?

是的,login到服务器并从控制台作品和电子邮件发送testing邮件是在另一端收到,即:

 echo "Test mail from postfix" | mail -s "Test Postfix" [email protected] 

6)在587端口连接时会发生什么?

显然,一无所有。 如果我尝试telnet到任何随机端口,我至less得到一些东西。 例如,试图telnet到端口666(这是不是打开)不产生回应的客户端,但至less我得到的东西在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到它时绝对没有任何事情发生。

我还缺less什么?

以上所有内容都耗尽了我仍然可以尝试的东西的知识。 我设法把它钉在我的港口587被完全封锁的东西。 正如我所说,我的VPS提供商确认他们根本没有阻止任何端口。 我已经尝试了25端口,这是一样的故事。

我唯一能看到的是我在设置服务器的时候阻塞了这些端口,但是我不记得是否是这种情况,我不知道如何testing。

我真的很感激你能给我的任何帮助。 事实上,我正在买一杯啤酒给谁帮我解决这个问题 ,我已经浪费了两天的时间,而且开始变得非常烦人。

Reachergilt,欢迎来到SF,并感谢您的第一个优秀问题。 你可能会觉得我们已经救了你,但是老实说 – 你已经完成了所有的重任,并且非常系统地提出了这个问题。 以这样的法医心态,我希望你留在这些地方一段时间。

tcpdump输出特别令人沮丧。 无可争议地certificate你的连接尝试甚至不能到达你的服务器,从而免除了服务器的防火墙, postfix的绑定以及服务器端的一切。

用这个指针武装起来,你已经走了,并确认你的出站连接被阻塞,所以你的testing永远不会像你的服务器一样。 由于发送垃圾邮件的僵尸networking使用这些networking,因此从现代networking中阻止25个(较小的程度上是587个)是相当(令人压抑的)正常的。

无论如何,你现在很高兴你的新邮件服务器正在广告中工作,这很好。