Начал разбираться и не смог найти не одной полноценной публикации в рунете, которая раскрывала бы проблему и помогала решить все вопросы.
Вашему вниманию представляю собранный из разных источников, проверенный и используемый способ настройки сервера для правильной отправки писем sendmail.
Система: Ubuntu 20.06
Почтовый сервис: Яндекс
1. Установка Sendmail
Если по какой-то причине не был установлен. Произведите базовую установку и настройку
sudo apt-get install php-mail
sudo apt-get install sendmail
sudo sendmailconfig
Правим php.ini
Вместо noreply@site.ru пишем почту на которую будут приходить отчеты (заголовок Return-Path:).
sendmail_path = "/usr/sbin/sendmail -t -f noreply@site.ru -i"
Заголовок «Return-Path:» является важным заголовком в глазах почтовых сервисов.
Если его не установить, заголовок будет равен примерно такому значению «Return-Path: <noreply@localhost.localdomain>».
Очень желательно чтобы значение заголовка всегда совпадало с именем домена с которого отправляется письмо, независимо от значения заголовка «From:», иначе оно может быть отправлено в «Спам» или же отклонено вовсе.
2. Настройка DNS записей
Нам необходимо настроить SPF, DMARC, DKIM записи.
Какая за что отвечает расписывать не буду. В рунете огромное количество инструкций.
Если тоже используете какой-либо почтовый сервис, у них свои подробные инструкции по настройке.
На что следует обратить внимание — чтобы в SPF был прописан IP-адрес сервера.
v=spf1 ip4:ip_server include:_spf.yandex.net ~all
Затем следует запросить у провайдера DNS-хостинга обратную запись rDNS (PTR-запись).
Привязать свой домен к ip-адресу сервера.
Как правило провайдер самостоятельно ее устанавливает по запросу.
4. Изменить hostname
Установить hostname равный названию нашего домена:
sudo hostnamectl set-hostname site.ru
5. Редактировать файл sendmail.mc
Переходим к файлу /etc/mail/sendmail.mc
Нам необходимо настроить заголовки «Received: from» и «Received: by». Они являются важными при определении уровня доверия к серверу отправляющему электронную почту.
Добавляем следующие строки в конце файла перед MAILER_DEFINITIONS
FEATURE(allmasquerade)
FEATURE(masquerade_envelope)
FEATURE(local_no_masquerade)
MASQUERADE_AS(`site.ru')
И в конец файла:
define(`MAIL_HUB', `site.ru.')dnl
define(`LOCAL_RELAY', `site.ru.')dnl
6. Проверяем настройки apache и файервола
sudo ufw allow 25
sudo nano /etc/apache2/envvars
Ищем строчки и заменяем www-data на текущего пользователя под которым запущен apache
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
7. Обновляем конфигурацию и перезагружаем sendmail
sudo sendmailconfig
sudo service sendmail restart
sudo systemctl restart apache2
balamutang
Ух, я думал сендмейл сгинул еще в нулевых
maxzhurkin
он и сгинул - это какая-то рябь пространства-времени