5

我正在尝试使用 Zoho 的 SMTP 服务器从 MyBB 安装发送注册电子邮件。但是,电子邮件永远不会发送,当我检查日志时,我注意到错误是。

Month Day Year:Hour:Minute host=smtp.zoho.com tls=on auth=on user=user[at]mydomain.com from=user[at]mydomain.com recipients=some.user[at]gmail.com smtpstatus=553 smtpmsg='553 Relaying disallowed' errormsg='the server did not accept the mail' exitcode=EX_UNAVAILABLE

某些部分被遮盖以隐藏私人信息!

这是在 php.ini 中设置的 sendmail 路径

sendmail_path = "/usr/bin/msmtp -C /etc/msmtp/myserver --logfile /var/log/msmtp/myserver.log -a default -t"

某些部分被遮盖以隐藏私人信息!

这是 MSMTP 的 myserver 配置

# Define here some setting that can be useful for every account
defaults
    logfile /var/log/msmtp/general.log

# Settings for default account
account default
    protocol smtp
    host smtp.zoho.com
    tls on
    tls_starttls off
    tls_certcheck off
    port 465
    auth plain
    user user[at]mydomain.com
    password **********
    from user[at]mydomain.com
    logfile /var/log/msmtp/myserver.log

# If you don't use any "-a" parameter in your command line,
# the default account "default" will be used.
# account default: default # (disabled because this gives a "redefined" error)

某些部分被遮盖以隐藏私人信息!

问题是我知道它正在工作并且没有端口被阻止,因为当我在命令行中使用相同的命令时。电子邮件已成功发送和接收。

sudo echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" | msmtp --debug -a default --from=user[at]mydomain.com -t some.user[at]gmail.com --file=/etc/msmtp/myserver

某些部分被遮盖以隐藏私人信息!

这意味着要么是 MyBB 发送电子邮件的方式有问题,要么是我在 php.ini 文件中设置的 PHP 配置或命令行有问题。

我已经搜索了一整天,但我得到的每个结果要么与 PHP 无关,要么从一开始就没有用。我的是从命令行工作,而不是从 PHP 工作。

我在服务器上使用 UFW,每个端口都完全打开,所以我猜它与阻塞的端口无关。

它适用于 Gmail,但每封电子邮件都被发送到垃圾邮件文件夹,而且并非每次都适用于每封电子邮件。

编辑:我尝试使用 PHP5-CLI 发送电子邮件并且它有效。所以我猜这可能是 PHP5-FPM 或 MyBB 有问题。

4

1 回答 1

0

我无法在没有安装 MyBB 的情况下对此进行测试,但如果它使用原生 PHP 邮件功能,您可能需要在 mail() 函数调用中添加 -f 选项,因为您使用的是 sendmail。请注意,它是第 5 个参数(我一度认为这是第四天浪费了一天)

mail('nobody@example.com', 'the subject', 'the message', null,
'-flocaluserr@thisdomain.com'); 
于 2015-07-29T20:04:57.993 回答