Установил msmtp на сервер (ubuntu 16.04), чтобы отправлять почту через smtp Яндекса и никак не могу отладить бесследную пропажу писем, которая происходит при попытке использовать mail() в php-файлах веб-сервера. В консоли всё работает отлично, делаю
php -r "mail('mymail@yandex.ru', 'Test Subject', 'Test Message');"
и письмо мгновенно приходит на mymail@yandex.ru
Делаю такой же вызов mail() из php-файла через браузер - ничего не происходит.
В стандартном логе msmtp (/var/log/msmtp/msmtp.log) фиксируется только отправка почты из консоли. Вызовы от веб-сервера в нём никак не отражаются. В логе nginx (/var/log/nginx/error.log) никаких ошибок нет. В php.ini (/etc/php/7.0/fpm/php.ini) прописал:
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -a myaccountname -t"
mail.log = /var/log/maillog
В лог maillog вызовы mail() от сервера попадают, но выглядят как-то странно:
[18-Dec-2017 15:09:30 Asia/Krasnoyarsk] mail() on [/var/www/mydomain.com/html/wp-content/themes/mywebsite/send.php:23]: To: mymailbox@yandex.ru -- Headers:
То есть, полезной информации практически никакой и ошибок я не вижу. :(
Может, проблема в конфигурационном файле msmtp? При вызове mail() из консоли пользователя, конфиг читается из домашнего каталога пользователя и этот сценарий работает отлично. При вызове mail() из файла на веб-сервере, запуск msmtp происходит от пользователя www-data и в этом случае он должен читать конфигурационный файл в папке по умолчанию: /etc/msmtprc. Этот файл существует, его содержимое такое же, как у файла в домашней папке пользователя ~/.msmtprc Права на доступ к файлу одинаковые (0600), как в /etc/msmtprc, так и в ~/.msmtprc, только в первом случае владельцем файла является www-data (чтобы nginx мог читать его), а во втором - обычный пользователь, в домашней папке которого лежит конфиг. Не вижу ошибку в конфигурации, но очевидно, что она есть, если с веб-сервера почта не уходит. Подскажите куда ещё можно копнуть и где посмотреть, чтобы отыскать причину проблемы?