我试图使用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 MailrnrnThis 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配置或我在PHP .ini文件中设置的命令行有问题。
我已经搜索了一整天,但我得到的每一个结果要么与PHP无关,要么从一开始就没有工作过。我的是在命令行中工作,而不是在PHP中。
我在服务器上使用UFW,每个端口都是完全打开的,所以我猜这与阻塞端口无关。
它对Gmail有效,但每封邮件都被发送到垃圾邮件文件夹,并不是每次都有效。
编辑:我试着用PHP5-CLI发送电子邮件,它工作了。所以我猜这是PHP5-FPM或MyBB的问题。
我无法在没有MyBB安装的情况下进行测试,但是如果它使用本地PHP邮件函数,您可能需要在mail()函数调用中添加-f选项,因为您正在使用sendmail。注意,这是第5个参数(我浪费了一天的时间以为它是第4个)
mail('nobody@example.com', 'the subject', 'the message', null,
'-flocaluserr@thisdomain.com');