我为解决 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。
测试配置的有用命令:
sudo -u root ssmtp -v [email protected] < mail.txt
sudo -u www-data ssmtp -v [email protected] < mail.txt
/usr/sbin/ssmtp -v [email protected] < mail.txt
mail.txt的内容:
主题:测试电子邮件
测试文本
答案2
您可以将非特权用户添加到邮件组:
usermod -aG mail <username>
并在 /etc/ssmtp/revaliases 中添加别名
<username>:[email protected]:mailhub.your.domain[:port]
这就像一个魅力。
- 如果没有
<username>
/etc/ssmtp/revaliases ,它就不起作用。
和不要忘记重新登录由您的用户进入系统(必须为 0n ubuntu )
前尝试您的新设置。不知道为什么,但事情就是这样……