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


9

我到处搜索,真的很挣扎。我想我已经尝试了几乎所有东西。

背景资料

  • 使用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,这是相同的故事。

我只能看到的另一件事是,在设置服务器时以某种方式阻塞了这些端口,但是我不记得是这种情况,而且我也不知道如何测试。

非常感谢您能给我的任何帮助。实际上,我正在为任何可以帮助我解决这个问题的人买啤酒,我已经在上面浪费了两天,而且开始变得很烦人。


3
您能否将iptables上面的输出替换为iptables -L -n -v,完整且未编辑的输出?另外,考虑到您的tcpdupmp测试情况以及提供者的保证,即我不会阻止25和587 入站,因此 25和587 出站开始进行测试的地方也很可能。如果您发布的IP地址,这将是一个很多更容易证实或否认这一假设。
MadHatter '16

感谢回复。当然,我已经编辑了我的帖子。嗯,我从没想过端口会被阻塞,这是个好主意。我将尝试进行测试。
reachergilt

1
@MadHatter,您完全可以站在我这一边的阻塞端口上。事实证明(经过多次通话),我公司的VPN管理员决定开始阻止某些端口,其中25和578是其中之一,但不是其他。这就解释了为什么我以前从未遇到过此类问题,甚至从未考虑过。在我迷失了服务器的最后几天,我的服务器可能已经运行良好。如果您愿意,可以将其发布为真实答案,我会接受。另外,请给我PM您的PayPal(或类似信息)信息,您真的应该得到一个很大的折扣,上帝知道我什么时候知道的。
reachergilt

我已经写好了,所以您可以接受答案-否则问题将永远存在,这很糟糕。而且,这将来很有可能对其他人有用。我的意思是我在我对你已经完成了大部分的调查工作已经(更多权力给你!),但如果你感到荣幸,势必给我回答说,一个啤酒,你可以找到我的个人网站我的联系方式,通过我的简历。
MadHatter '16

完成并再次感谢您的帮助,即使没有浪费几天的时间,您也可能节省了我几个小时。我明天会联系您,已经检查了您的网站。
reachergilt

Answers:


4

Reachergilt,欢迎来到SF,并感谢您提出了一个很好的第一个问题。您可能会觉得我们已经救了您,但是说实话-您已经完成了所有繁重的工作,并非常系统地介绍了它。怀着这样的法医思维,我希望您能在以后的工作中待在这些地方。

tcpdump输出是特别确凿。毫无疑问,事实证明,您进行连接的尝试甚至都没有到达服务器,这使服务器的防火墙,postfix绑定以及服务器端的其他所有东西都得到了释放。

有了该指针,您就可以离开并确认您的出站连接已被阻止,因此您的测试永远不会到达服务器。将25(在较小程度上为587)从现代网络的出站阻止是相当正常的(令人沮丧的),因为发送垃圾邮件的僵尸网络会使用它们。

无论如何,您现在都对您的新邮件服务器能够像宣传的那样正常工作感到高兴,这很好。


3
是的,对于有类似问题的人,我的帖子确实是一个不错的清单。有趣的是,因为我认为服务器出了点问题,所以我对从A到Z的所有内容进行了四重检查,从而可以在此处记录所有内容。
reachergilt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.