SSMTP 不发送邮件“无法打开 mailhub:25”(tldr:用户为 www-data 时的文件权限)

SSMTP 不发送邮件“无法打开 mailhub:25”(tldr:用户为 www-data 时的文件权限)

我为解决 SSMTP 安装问题付出了很多努力——太多了,所以我决定在这里分享解决方案。

我在 docker 容器内得到了多个 php 实例。每个实例都应该能够发送电子邮件,但我没有在每个 docker 中安装邮件服务器,而是将它们设置为使用 SSMTP 来中继电子邮件。 SSMTP 将把电子邮件转发给 exim docker (南希/smtp)这将发送电子邮件。

(n * [PHP -> SSMTP]) -> EXIM

我必须根据他们的文档/etc/ssmtp/revaliases进行设置/etc/ssmtp/ssmtp.conf,但它仅在我通过 root 发送电子邮件时有效,但不适用于通过www-data.

我重命名了链接的 docker,以便 php 实例和 ssmtp 通过“mailhub”调用它们。

答案1

SSMTP 没有给出任何提示,除了 之外什么也没有给出Cannot open mailhub:25。阅读数小时后SSMTP源代码,尝试一切可能的步骤来重现 SSMTP 所做的事情,我终于找到了它......

使用 时www-data/etc/ssmtp由于文件权限而无法访问。SSMTP 处于静默状态关于这一点,并且永远不会告诉您它使用其默认配置而不是无法访问的配置文件。

我所要做的就是解决这个问题:chmod 777 /etc/ssmtp /etc/ssmtp/*

注意:我的配置文件不包含任何密码,在这种特殊情况下我并不真正关心安全性,但任何关心这些问题的机构不应该使用 777,而可能使用 640。

测试配置的有用命令:

mail.txt的内容:

从:[电子邮件受保护]

到:[电子邮件受保护]

主题:测试电子邮件

测试文本

答案2

您可以将非特权用户添加到邮件组:
usermod -aG mail <username>

并在 /etc/ssmtp/revaliases 中添加别名
<username>:[email protected]:mailhub.your.domain[:port]

这就像一个魅力。

  • 如果没有<username>/etc/ssmtp/revaliases ,它就不起作用。
    不要忘记重新登录由您的用户进入系统(必须为 0n ubuntu )
    尝试您的新设置。不知道为什么,但事情就是这样……

相关内容