Функция PHP mail() через msmtp: не работает через браузер, но работает в консоле. Контейнер Docker php:7.3-fpm. Сайт Битрикс
Сборка Докер: nginx + php-fpm 7.3 (так же mysql, certbot, memcached) Работает сайт на Битриксе. Все нормально, кроме отправки почты.
В файле testmail.php (в корне сайте) есть простой код:
if(mail("[email protected]", "TEST SUBJECT", "TEST BODY"))
echo "Почтовая система работает!";
else
echo "Неудача, почтовая система не работает, попробуйте еще!";
Если в Докер контейнере php-fpm запустить этот код через команду php -f testmail.php (а так же через php -a ), то письмо приходит на мою почту, если открывать файл через браузер, то нет.
Подобные вопросы уже есть и в ответах к ним предлагается проверить, что запускается именно тот php и именно с теми настройками. PHP у меня точно один и создается он через Dockerfile, где написано
FROM php:7.3-fpm
а так же идет установка
RUN apt-get update -q -y && apt-get install -q -y --no-install-recommends msmtp
И раз через консоль php письмо уходит, значит все установилось, как надо.
Далее я проверил настройки phpinfo(): Параметр Local Value и Master Value:
sendmail_path /usr/bin/msmtp -t -i -C /var/.msmtprc -a yandex
Тоже самое будет, если в моем php файле дописать:
var_dump(ini_get('sendmail_path'));
результат:
string(47) "/usr/bin/msmtp -t -i -C /var/.msmtprc -a yandex"
Настройка ini файла такая:
sendmail_path = "/usr/bin/msmtp -t -i -C /var/.msmtprc -a yandex"
Эта настройка как раз и видна выше.
Далее начал проверять логи:
в /var/log/msmtp/msmtp.log неудачные попытки отправки через браузер не фиксируются, только удачные через консоль. Выглядят они вот так:
Jul 09 11:59:57 host=smtp.yandex.ru tls=on auth=on user=<...> from=<...> recipients=<...>
mailsize=126 smtpstatus=250 smtpmsg='250 2.0.0 Ok: queued on vla1-cde8305024b9.qloud-
c.yandex.net as 1625831997-JXMMT0lDbg-xvQuPk7w' exitcode=EX_OK
Остается, наверное, последнее, что нужно проверить - это Nginx. В конфиге настройки для php выглядят так:
location ~* \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php-fpm:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_read_timeout 1800;
}
(Файл /var/log/nginx/php_errors.log отсутствует). Какие-то другие логи php не нашел, чтобы в них увидеть хоть что-нибуть связанные с mail.
Помогите, пжл, советом, что еще нужно проверить. Я в тупике, не понимаю, где искать.