PHP - 553 Запрещена ретрансляция почты Zoho и MyBB
Я пытаюсь использовать SMTP-серверы Zoho для отправки регистрационных писем из инсталляции 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
(Некоторые части были замаскированы, чтобы скрыть личную информацию!)
Это путь sendmail, заданный в php.ini
sendmail_path = "/usr/bin/msmtp -C /etc/msmtp/myserver --logfile /var/log/msmtp/myserver.log -a default -t"
(Некоторые части были замаскированы, чтобы скрыть личную информацию!)
Это конфигурация myserver для MSMTP
# 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 или командной строкой, которые я установил в файле php.ini.
Я искал это весь день, но каждый полученный результат либо не связан с PHP, либо никогда не работал с самого начала. И мой работает из командной строки, но не из PHP.
Я использую UFW на сервере, и каждый порт полностью открыт, поэтому я предполагаю, что он не связан с заблокированными портами.
Это работало с Gmail, но каждое письмо отправлялось в папку со спамом, и оно не работало каждый раз с каждым письмом.
РЕДАКТИРОВАТЬ: Я пытался отправить письмо с PHP5-CLI, и это сработало. Поэтому я предполагаю, что это либо что-то не так с PHP5-FPM или MyBB.
1 ответ
Я не могу проверить это без установки MyBB, но если она использует собственную почтовую функцию PHP, вам может понадобиться добавить опцию -f к вызову функции mail(), так как вы используете sendmail. Обратите внимание, что это 5-й параметр (Я потратил впустую день, думая, что это был четвертый)
mail('nobody@example.com', 'the subject', 'the message', null,
'-flocaluserr@thisdomain.com');