Полный цикл в digital

Установка и настройка 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
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг