我正在 Ubuntu 服务器上配置 Exim,以便通过以下方式发送和接收邮件TLS。
我按照许多指南操作,了解如何使用 TLS 配置 Exim,但我的 Exim 仍然无法监听 465 或 587
Exim 只监听 25 端口,我可以发送和接收邮件
这是我遵循的官方指南: https://help.ubuntu.com/community/Exim4
但还是没有运气,我也没有在配置文件中找到任何参考资料来表明 exim 正在监听哪些端口
我还使用以下命令通过 ufw 允许端口 465 和 587:
ufw allow 465
ufw allow 465
但 Exim 仍然无法监听 465 或 587,有人能帮我解释一下为什么会发生这种情况吗,或者我是否遗漏了某些步骤
答案1
对于 Ubuntu 18.04,我发现以下内容有效update-exim4.conf.conf
:
dc_local_interfaces='<; [0.0.0.0]:465; [0.0.0.0]:587'
然后照常运行:运行update-exim4.conf
并重新启动服务。
检查(抱歉 - 还有更多现代的方法,但手指记住了netstat
):
# netstat --listen -lnp | grep exim
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 10874/exim4
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 10874/exim4
注意:启用端口 25 也是个好主意。例如,某些本地服务可能要将邮件发送到 localhost:25。
答案2
您必须在“/etc/default/exim4”文件中进行配置。该文件显示:
# Options for the SMTP listener daemon. By default, it is listening on
# port 25 only. To listen on more ports, it is recommended to use
# -oX 25:587:10025 -oP /run/exim4/exim.pid
SMTPLISTENEROPTIONS=''
因此,要使其监听其他端口,您必须更改 /etc/default/exim4 中的 SMTPLISTENEROPTIONS。要仅使用端口 587,您必须写入以下内容:
SMTPLISTENEROPTIONS='-oX 25:587:10025 -oP /run/exim4/exim.pid'
要使用端口 465,您必须这样写:
SMTPLISTENEROPTIONS='-oX 25:465:587:10025 -oP /run/exim4/exim.pid'
之后你必须重新启动 exim:
/etc/init.d/exim4 restart
使用端口 465 时,还必须添加
tls_on_connect_ports = 465
到您的 exim 配置文件,以便在连接到端口 465 时立即启动 SSL 会话。
之后你可以检查连接:
不使用 SSL:
telnet localhost 25
EHLO test
使用 SSL:
openssl s_client -connect localhost:25 -starttls smtp
EHLO test
openssl s_client -crlf -connect localhost:465
EHLO test
openssl s_client -connect localhost:587 -starttls smtp
EHLO test
如果您的 exim 服务器管理多个域,并且每个域使用不同的证书,那么您可以在测试服务器时使用“-servername”参数:
openssl s_client -connect localhost:587 -servername example.com -starttls smtp
EHLO test
然后您可以检查是否发送了正确的证书。