我有一个在端口 25 (SMTP) 上工作的 Postfix 服务器。
我可以使用 Thunderbird 通过此 Postfix 服务器发送邮件。
我遵循了这些文档:
- http://www.postfix.org/SASL_README.html#auxprop_sasldb
- https://wiki.debian.org/PostfixAndSASL#Using_auxprop_with_sasldb
配置很容易:
$ 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 发送邮件。
问题已解决。