Установка и настройка mSMTP
Если ваш сервер использует сторонние сервера для отправки почты, для удобства пересылки можно воспользоваться клиентом mSMTP. Это довольно простой SMTP-клиент, который позволяет различным скриптам и приложениям на PHP, Python, и т.п. использовать отправку почты посредством стороннего сервера. SMTP-клиент под названием MSMTP может быть использован для отправки электронных писем при помощи сторонних SMTP-серверов, можно использовать вместе с функцией mail()
.
Установка MSMTP
Обновляем список пакетов сервера:
sudo apt update
Обновляем пакеты сервера:
sudo apt upgrade
Устанавливаем MSMTP:
sudo apt install msmtp
Настройка MSMTP
Для настройки клиента MSMTP, в домашней директории пользователя (работы видутся под root
) необходимо создать файл .msmtprc
, в котором будут вписаны основные параметры конфигурации. Общесистемный конфигурационный файл находится в /etc/msmtprc
.
Создаем файл .msmtprc
:
sudo nano /root/.msmtprc
Вносим указаные настройки:
account yandex
host smtp.yandex.ru
port 587
from info@domain.ru
keepbcc on
auth on
user info@domain.ru
password пароль
tls on
tls_starttls on
tls_certcheck off
Задаем права на файл, это действие обязательно, поскольку MSMTP не будет работать, если права больше чем 600:
sudo chmod 600 /root/.msmtprc
Прежде чем внедрить настройки в PHP, убедитесь что всё работает должным образом. Для этого создайте текстовый файл, содержащий простое электронное письмо:
sudo nano /root/sample_email.txt
Вносим указанное содиржимое:
echo -e "From: Me \n\
To: You \n\
Subject: Тест \n\
\n\
Тест
Отправляем письмо, заменив почту на свою:
cat /root/sample_email.txt | msmtp --debug -a yandex info@domain.ru
Если info@domain.ru
получил сообщение, значит всё работает как надо и теперь можно установить симлинк в каталог /etc
:
ln /root/.msmtprc /etc/msmtprc
Задаем пользователя файла от которого запускается PHP:
chown www-data:www-data /etc/msmtprc
Настройка PHP
Открываем файл php.ini
его расположение зависит от операционной системы и где именно будем вызывать функцию mail()
. При отправке почты из консоли, PHP использует один конфиг /etc/php/7.4/cli/php.ini
, а при вызовах mail()
из php-файлов веб-сервера - другой /etc/php/7.4/apache2/php.ini
, открываем нужный.
Найдите в php.ini
строку:
sendmail_path =
Добавляем путь к msmtp:
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -a yandex -t"
Найдите в php.ini
строку:
mail.log =
Добавляем путь к файлу логов:
mail.log = /var/log/msmtp.log
Затем вручную создаем лог-файл:
sudo nano /var/log/msmtp.log
Передаем права на файл веб-серверу:
chown www-data:www-data /var/log/msmtp.log
Тестируем отправку
Запускаем тестовую отправку из консоли, где info@domain.ru
адрес почты куда придет сообщение:
php -r "mail('info@domain.ru', 'Test', 'Test');"
Создаем в директории сайта файл msmtprc.php
в текстовом редакторе:
nano /var/www/название_домена.com/public_html/msmtprc.php
Записываем в него простую функцию mail()
для тестирования настройки:
<?php
if(mail("lisovvadik@yandex.ru","Test","Test"))
print "Email сообщение отправлено";
else
print "Email сообщение не отправлено";
?>
Открываем файл в веб-браузере:
название_домена.com/msmtprc.php