MSMTP
Эта заметка для настройки почтового релея MSMTP. Довольно часто приходится персонализировать настройки почты под сайт, особенно когда на сервере их с десяток. В этом нам поможет msmtp
В конфигурационном файле apache, или php-fpm можно для каждого сайта прописать персональные настройки.
php_admin_value sendmail_path "/usr/bin/msmtp -C /etc/msmtp/web_site.conf -t -i -a mysite.ru"
- -C указывает какой конфигурационный файл использовать
- -t адреса берем с тела письма
- -a указываем какой профиль будет использован в конфигурационном файле
- -i добавлен для обратной совместимости
- -d отладка
Пример конфигурационного файла msmtp, /etc/msmtp/web_site.conf для различных почтовых серверов.
#-- Google --------------- account mysite.ru logfile /var/log/msmtp/msmtp_mysite.ru.log host smtp.gmail.com port 587 tls_trust_file /etc/ssl/certs/ca-certificates.crt tls on tls_starttls on from info@gmail.com keepbcc on auth login user info@gmail.com password mysecretpass #-- Yandex --------------- account othersite.ru logfile /var/log/msmtp/msmtp_othersite.ru.log host smtp.yandex.ru port 587 from info@yandex.ru keepbcc on auth on user info@yandex.ru password mysecretpass tls on tls_starttls on tls_certcheck off #-- NIC.RU --------------- account secondsite.ru logfile logfile /var/log/msmtp/msmtp_secondsite.ru.log host mail.nic.ru port 587 from info@nic.ru aliases /etc/aliases keepbcc off auth on user info@nic.ru password mysecretpass tls on tls_starttls on tls_certcheck off
#-- MAIL.RU ----------------- account third.ru logfile /home/bitrix/msmtp_third.ru.log host smtp.mail.ru port 587 from info@mail.ru aliases /etc/aliases keepbcc off auth on user info@mail.ru password secretpass tls on tls_starttls on tls_certcheck off
Не забываем, что для корректной работы у конфигурационных файлов и лог-файлов, должны быть права на изменение, веб сервером.
Проверка из php скрипта.
error_reporting(E_ALL);
if (mail('log@yandex.ru', 'My Test Message', 'Message from server', ''))
{
echo "Сообщение передано функции mail, проверьте почту в ящике.";
}
else
{
echo "Функция mail не работает, свяжитесь с администрацией хостинга. ".print_r(error_get_last());
}
Проверка с командной строки:
echo -e "Subject: Test message from server\n\nMessage body." | msmtp -a sitename.ru -v recipient@yandex.ru
Проверка с командной строки, под другим пользователем:
sudo -H -u bitrix bash -c 'echo -e "Subject: Test message from server\n\nMessage body." | msmtp -a sitename.ru -v recipient@yandex.ru'