我的Postfix提交服务无法远程访问

我的Postfix提交服务无法远程访问

我有一个在端口 25 (SMTP) 上工作的 Postfix 服务器。

我可以使用 Thunderbird 通过此 Postfix 服务器发送邮件。

我遵循了这些文档:

配置很容易:

$ sudo apt install libsasl2-modules sasl2-bin
$ sudo saslpasswd2 -c -u example.com yugiohjcj
$ sudo sasldblistusers2

$ sudo vim /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

$ sudo vim /etc/postfix/main.cf
# SASL
cyrus_sasl_config_path = /etc/postfix/sasl
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous

$ sudo bash /etc/init.d/postfix restart

以下是我配置 Thunderbird 的方法:

  • 编辑 > 帐户设置 > 发送服务器 (SMTP)
  • 服务器名称:example.com
  • 端口:25
  • 连接安全:STARTTLS
  • 认证方式:普通密码
  • 用户名:[电子邮件受保护]

不过,我知道大多数时候 ISP 都会阻止端口 25,所以最好使用其他端口来发送邮件。

因此,我想在我的 Postfix 服务器上启用端口 587(提交)。

这是我所做的:

$ sudo vim /etc/postfix/master.cf
 submission inet n       -       y       -       -       smtpd
   -o syslog_name=postfix/submission
   -o smtpd_tls_security_level=encrypt
   -o smtpd_sasl_auth_enable=yes
   -o smtpd_tls_auth_only=yes
$ sudo bash /etc/init.d/postfix restart
$ sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT

当我在本地测试我的服务器时,它可以工作:

$ telnet localhost 587
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.example.com ESMTP Postfix (Debian/GNU)
[...]

但是当我远程测试我的服务器时,它不起作用:

$ telnet example.com 587
Trying 1.2.3.4...
[...]

它被卡住了。

请问为什么我的Postfix提交服务无法远程访问?

谢谢。

此致。

答案1

这只是命令的问题iptables

我输入了这些命令:

$ sudo iptables -A INPUT -j DROP
$ sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT

这不好,因为我在所有端口上丢弃数据包,然后在端口 587 上接受数据包。

因此,端口 587 上的数据包仍然会被丢弃。

我改变了命令的顺序:

$ sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT
$ sudo iptables -A INPUT -j DROP

现在,我的 Postfix 提交服务可以使用命令远程访问telnet

我可以使用 STARTTLS 通过 Thunderbird 端口 587 发送邮件。

问题已解决。

相关内容