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'

    Copyright © 2022Powered by Bludit