如何在 Linux 上通过 Firewalld 启用 SMTP 接收?

如何在 Linux 上通过 Firewalld 启用 SMTP 接收?

我从一家托管公司租用了一台专用的、轻度管理的 CentOS7 机器。主机自带防火墙安装并运行,并iptables预先施加的偏好。

我没想到这一点;我习惯于接收没有防火墙的盒子,除了我打开的服务外,没有运行任何服务。我对防火墙iptables甚至连最基本的外部电子邮件流量都无法通过端口 25 传输到后缀的队列。我相信是防火墙阻止了我,因为:

  • 我的所有 DNS 记录都已正确设置。这些记录多年来都没有改变;我所要做的就是更新 IP 地址以适应这个新主机。

  • netstat -ln确认端口正在监听;我telnet localhost 25甚至可以协商EHLO等等。

  • 我的后缀配置可能正确,但也无关紧要。我没有测试别名或虚拟域等功能:我只是发送到真实本地用户@postfix-$mydestination-entry。当我从本地主机发送消息时,它就能正常传送。

  • 我提高了后缀的详细程度管理者守护进程,无论我从机器外部发送多少邮件,它的日志都不会显示任何邮件进入队列。它只会报告每 5 分钟醒来执行一些常规操作。

相关区域防火墙我拿到机器的时候是这样的:

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: http ssh https
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

我现在设法使它看起来像这样(所有隐藏线保持不变):

public
  target: default
  services: http ssh https smtp
  ports: 25/tcp

(我每次都进行修改--permanent并编辑。)--reload

不幸的是,我仍然无法telnet host 25从远程位置和远程邮件仍然无法到达我的后缀队列。对于我遗漏了什么,您有什么想法吗?

PS请注意http是同一个防火墙telnet host 80区域,从第一天起我就能够通过网络浏览器进行连接。

PPS 我避免发布任何关于iptables输出在这里,因为我实际上不知道其中哪些部分是相关的。我希望有人能够在没有这些信息的情况下推断出我的问题,但如果不能,那么我当然可以挖掘它……

答案1

由于这是一个 VPS,他们中的许多人预先配置 Postfix 以仅监听 127.0.0.1:25 而不是 0.0.0.0:25,这将阻止外部访问 SMTP 端口 - 检查 main.cf 中的 inet_interfaces 是合乎逻辑的第一步。

您说您使用 netstat 来确保进程正在监听,也许仔细检查它是否实际绑定到所有接口会更有启发性,而不仅仅是 127.0.0.1:25。

相关内容