Sendmail debian 10 настройка

Обновлено: 06.07.2024

Начиная с версии 8.11, sendmail поддерживает защиту ESMTP соединения с помощью расширения STARTTLS ( RFC 2487 ). Для настройки TLS прежде всего нужно создать SSL сертификат и секретный DSA-ключ для шифрования:

Если у вас уже есть ключ шифрования, то для создания сертификата следует подать команду:

Параметр -days позволяет указать количество дней, в течение которых сертификат будет действительным. Чтобы проверить созданный сертификат, можно воспользоваться следующей командой:

Если вы не планируете использовать TLS для авторизации (не путать с SMTP авторизацией) или используете сертификат, подписанный самим собой, следует создать symlink:

В противном случае следует поместить сертификат авторизации в файл /etc/mail/certs/CAcert.pem . Не забудьте установить права, запрещающие чтение/запись файлов сертификатов и ключей простым пользователям:

Теперь следует настроить sendmail. В .mc файле конфигурации нужно добавить следующие строки:

После добавления вышеуказанных строк в файл конфигурации следует пересобрать его с помощью m4 (см. файл /usr/share/sendmail/README ) и рестартовать уже запущенный sendmail:

Для проверки настроек TLS можно воспользоваться командой telnet:

Для того чтобы научить sendmail работать по SSL (без использования STARTTLS), нужно создать и добавить в .mc файл сертификат и ключ для шифрования, как описано выше, а также добавить следующие строки: Не забудьте перезапустить sendmail: Для проверки можно воспользоваться командой openssl:

Настройка SMTP авторизации

Для настройки авторизации следует пересобрать sendmail с поддержкой SASL. Для этого следует установить пакет cyrus-sasl2 или порт security/cyrus-sasl2 . Для включения поддержки SASL нам потребуется перекомпилировать sendmail следующим образом: Также можно воспользоваться набором site.tar.gz и пересобрать sendmail, установив настройку SENDMAIL_SASL=Yes в mk.conf.

Далее следует создать файл конфигурации SASL для sendmail ( /usr/local/lib/sasl2/Sendmail.conf ):

Добавляем в /etc/rc.local строки для запуска saslauthd:

Теперь остается только включить поддержку авторизации в .mc файле конфигурации sendmail:

Не забудьте перезапустить sendmail:

Для проверки настройки авторизации можно воспользоваться командой telnet:

При правильной настройке в ответе сервера на команду "EHLO" должна присутствовать строка "250-AUTH". В случае если в файле конфигурации запрещено использование PLAIN авторизации по незащищенному соединению, вместо команды telnet следует использовать команду openssl:

Смотрите также /usr/share/sendmail/README , Настройка TLS и SSL.

Настройка sendmail как SMTP клиента с авторизацией

В случае, когда sendmail выступает в роли клиента, демон saslauthd не требуется. В файл конфигурации необходимо внести следующие изменения:

Указываем SMTP-сервер, имя и пароль пользователя, а также метод аутентификации в отдельном файле /etc/mail/authinfo :

Создаем хэшированную базу данных /etc/mail/authinfo.db :

Как заставить sendmail использовать /etc/hosts

По умолчанию sendmail использует в первую очередь DNS. Чтобы заставить его сначала смотреть /etc/hosts , нужно создать файл /etc/mail/service.switch и прописать в нем следующую строку:

После этого достаточно перезапустить sendmail:

Хранение писем в Maildir

По умолчанию sendmail использует mail.local в качестве локального агента доставки почты. При этом почта доставляется в формате стандартного BSD mailbox. Чтобы доставлять почту в Maildir, нам потребуется установить альтернативный агент доставки mail.buhal , который можно скачать отсюда.

Сначала нужно собрать и установить mail.buhal:

Далее следует указать mail.buhal в файле конфигурации sendmail в качестве локального агента доставки:

Теперь достаточно перекомпилировать файл конфигурации и перезапустить sendmail.

В портах OpenBSD, в категории mail , есть программы procmail и maildrop , которые также поддерживают формат Maildir и дополнительные расширения данного формата.

Использование procmail в качестве LDA

После установки procmail из портов или пакетов, необходимо создать глобальный конфигурационный файл. Пример конфигурации:

Как настроить отсылку уведомлений на внешний почтовый сервер с помощью msmtp в Debian 10 (Buster)


Не смотря на то, что в документе указано то, что Exim поставляется в Debian Linux по умолчанию, как это было в предыдущих версиях Debain, свежеустановленный Debian Buster не имеет никакого ПО для отправки электронной почты за пределы сервера.

Предположим, у нас в организации уже имеется почтовый сервер и нам нужно сделать так, чтобы письма, сформированные всевозможными локальными службами и приложениями на нашей Linux-системе, пересылались на этот почтовый сервер (relayhost/smarthost).

Для решения этой задачи мы можем установить в систему простой и легковесный почтовый клиент, умеющий выполнять такую пересылку - msmtp:

Конфигурационные файлы для работы msmtp могут быть, как глобальные на уровне системы, так и на уровне отдельно взятого пользователя системы.
Глобальный файл может располагаться в /etc/msmtprc .
Файл настроек пользователя может размещаться в профиле в

/.msmtprc .
Получить информацию о настройке конфигурации msmtp можно в man msmtp.

Примеры конфиг.файлов для системы и пользователя лежат здесь:

Скопируем примерный конфиг.файл уровня системы и откроем его на редактирование:

Задаём в файле адрес внешнего почтового сервера в опциях host / port , а также при необходимости добавляем поле from , в котором указывается имя отправителя почты на тот случай, если в внутренний почтовый сервер использует проверку имён отправителя.

Пример заполненного файла:

Сохраняем конфигурационный файл и тестируем отправку с помощью msmtp:

Должно прийти письмо с адреса, указанного в опции from в конфиг.файле msmtprc .
Если письмо не приходит, то можно проанализировать лог отправки:

Клиент msmtp это sendmail-совместимое приложение, поэтому для любых служб и приложений сервера, использующих вызов sendmail мы сделаем перенаправление на msmtp.
Для начала убедимся в том, что в системе нет действующих ссылок на /usr/sbin/sendmail :

Слинкуем sendmail с клиентом msmtp:

Теперь можно протестировать приложения, использующие отправку почты.
Например, если в системе сконфигурированы программные RAID-массивы mdraid и настроена и сконфигурирована служба оповещений mdmonitor (опции MAILADDR и MAILFROM в /etc/mdadm/mdadm.conf ), то можем инициировать разовый тест состояния RAID-устройств с отправкой оповещения:

В результате по каждому из устройств mdraid мы должны получить по отдельному письму. Если это произошло, значит настроенный нами механизм оповещений через msmtp работает успешно.

Дополнительные источники информации:


Автор первичной редакции:
Алексей Максимов
Время публикации: 21.08.2020 18:22

Но можно ли сделать так, чтобы письма с сайта отправлять прямо с сервера сайта, а принимать на Yandex или Google? Да, можно!

Подготовка к настройке собственного почтового сервера ¶

Прежде чем настраивать почтовый сервер убедитесь, что хостинг-провайдер разрешает использовать SMTP-порты (25, 465 и другие). Многие провайдеры по умолчанию блокируют эти порты и открывают при обращении в службу поддержки. Уточните у своего хостера требования для того, чтобы безбоязненно рассылать письма, а также требования к самим письмам, чтобы они не подпадали под определение SPAM.

Быстрая проверка доступности SMTP через консоль:

Если появится примерно такой текст, то порты открыты:

Что такое DMARC и с чем его едят ¶

DMARC — это набор правил и протоколов для авторизации почты. Если перевести на общечеловеческий, то это будет означать "делай вот так и письма не будут сразу падать в спам".

Дело в том, что протоколы электронной почты разрабатывались в те славные времена, когда люди доверяли друг другу. И если на сервер приходило письмо, то оно сразу падало в ящик получателя. Сам протокол отправки писем не предполагает авторизацию сервера, который отправляет письмо, а это значит, что любое устройство в сети Интернет может слать письма от кого угодно и куда угодно. Да-да, именно от кого угодно и куда угодно!

  1. Проверять сервер, чтобы ему было дозволено отправлять письма с определённого домена (SPF-запись).
  2. Проверять письмо, что оно пришло именно то, какое было отправлено (цифровая подпись DKIM).
  3. Получать отчёты о проблемах доставки (DMARC-запись).

То есть DMARC не решает проблемы спама на 100%, но позволяет понимать, что письмо было отправлено и доставлено с добросовестного сервера, а не с кофеварки бабы Маши. Если не выполнять требования DMARC, то вероятность того, что ваше письмо отправится в спам, будет примерно 100%.

PTR-запись ¶

Помимо DMARC существует ещё один способ проверить, что сервер, который отправляет письмо, это настоящий сервер, а не кофеварка. Надо всего лишь получить его PTR-запись по IP-адресу:

К сожалению, самостоятельно задать PTR-запись нельзя, этим занимаются хостинг-провайдеры. Если для вашего сервера PTR-запись не указана или там неверное значение, обратитесь в поддержку хостинг-провайдера для уточнения этого момента.

Без PTR-записи некоторые сервера не будут даже и пытаться принимать вашу почту, сразу обрывают соединение. Лучше уточните этот вопрос заранее.

Поднимаем POSTFIX ¶

Все команды необходимо выполнять в консоли от суперпользователя.

Для удобства сделаем алиасы для замены доменов из примеров на ваши значения:

  • ВАШ_ХОСТ — домен вашего сервера, где будет работать POSTFIX. Если на этом сервере у вас размещён сайт, то можно указать домен сайта.
  • ВАШ_ПОЧТОВЫй_ДОМЕН — домен, с которого будет приходить почта (@mydomain.tld).

Задаём имя хоста

Теперь следующая команда должна выводить ВАШ_ХОСТ :

Если выводится ошибка или значение отличное от вашего хоста, проверьте /etc/hostname и /etc/hosts .

Устанавливаем и настраиваем POSTFIX

Создаём конфиг (предполагается, что сервер будет только отправлять письма, а принимать будет кто-нибудь другой):

Подключаем OpenDKIM ¶

Создаём папку для хранения ключей и таблиц:

Генерируем ключи для домена из настроек POSTFIX и селектора key1 :

Селектор указывает на то, какую запись домена нужно будет использовать для хранения публичного ключа.

Задаём верные права на доступ к приватному ключу:

Заполняем таблицу приватных ключей ( имя_ключа домен:селектор:/путь/до/ключа ):

Говорим, какой домен, каким ключом подписывать ( шаблон имя_ключа ):

Прописываем настройки для POSTFIX:

Выводим конфиг TXT-записи с публичным ключом для домена:

Идём в панель управления DNS и добавляем TXT-запись key1._domainkey со значением, которое указано в кавычках (кавычки вносить не нужно).

Если всё сделано правильно, то через некоторое время запись можно получить командой:

Результат должен быть примерно такой:

Настраиваем SPF ¶

Необходимо перейти в панель управления доменом, с которого будет отправляться почта.

Если домен уже привязан к какой-либо почте

Находим в настройках домена TXT-запись, которая начинается с v=spf1 и добавляем в середину информацию о дополнительном сервере, например так:

Если домен не привязан к почте

Добавляем новую TXT-запись к самому домену (иногда нужно указать @ в качестве имени хоста) следующего содержания:

Такая запись означает "доверять почте с сервера ВАШ_ХОСТ и не доверять остальным".

После внесения изменений

Выполните следующую команду, чтобы проверить настройки домена:

Если изменения успели попасть на сервер, то результатом будет значение, которое вы внесли, а если нет, придётся ждать. Время ожидания зависит от того, как быстро ДНС-сервер вашего провайдера применяет настройки, и сколько времени живёт запись (TTL). И то и другое можно проверить с помощью команды dig :

Тестируем отправку ¶

Проверяем запущенные сервисы:

Должно быть две записи:

Если что-то не запустилось, смотрите /var/log/syslog на предмет ошибок.

Теперь отправляем тестовое письмо:

И смотрим логи отправки:

Если ошибок нет, то письмо должно прийти в течение нескольких секунд. Проверяйте на всякий случай и папку спам.

Когда письмо придёт (на Google), откройте его исходный текст (Ctrl + U) и проверьте заголовок Authentication-Results , там будет информация о проверках сервера, откуда пришло письмо:

Безопасность ¶

Пока POSTFIX работает на 127.0.0.1, можно особо не переживать, что вас через него взломают или как-то навредят. Но как только вы измените внутренний адрес на внешний, ваш сервер может стать источником рассылки спама и целью для хакерских атак. На мой взгляд, самая безопасная схема работы — когда сервер только отправляет письма, а принимает и обрабатывает их кто-то другой. Протокол SMTP имеет слишком большие возможности для разного рода обмана и вредоносных действий. Вы с этим столкнётесь, когда откроете 25 порт для внешнего мира.

Как только POSTFIX будет настроен и сможет отправлять письма, то заработает и функция mail() в PHP. Это значит, что вы должны быть передельно осторожны с выбором программ, которые работают на сервере. Крайне не рекомендуется настраивать POSTFIX на одном сервере с WordPress. Большинство атак на сайты заключаются в том, чтобы заразить сайт вирусом и рассылать спам. Сам по себе WordPress не является чем-то опасным, угрозу представляют его плагины. Некоторые из них изначально могут содержать вирусы, а некоторые имеют дыры и легко взламываются.

Столкнулся с проблемой: на правильно настроенном сервере Apache с установленными модулями и настроенными доменными записями у провайдера — письма отправленные через функцию mail из скриптов php попадали в спам или не доставлялись вовсе.

Начал разбираться и не смог найти не одной полноценной публикации в рунете, которая раскрывала бы проблему и помогала решить все вопросы.

Вашему вниманию представляю собранный из разных источников, проверенный и используемый способ настройки сервера для правильной отправки писем sendmail.

Система: Ubuntu 20.06
Почтовый сервис: Яндекс

1. Установка Sendmail

Если по какой-то причине не был установлен. Произведите базовую установку и настройку


Правим php.ini


Заголовок «Return-Path:» является важным заголовком в глазах почтовых сервисов.
Если его не установить, заголовок будет равен примерно такому значению «Return-Path: <noreply@localhost.localdomain>».

Очень желательно чтобы значение заголовка всегда совпадало с именем домена с которого отправляется письмо, независимо от значения заголовка «From:», иначе оно может быть отправлено в «Спам» или же отклонено вовсе.

2. Настройка DNS записей

Нам необходимо настроить SPF, DMARC, DKIM записи.

Какая за что отвечает расписывать не буду. В рунете огромное количество инструкций.
Если тоже используете какой-либо почтовый сервис, у них свои подробные инструкции по настройке.

На что следует обратить внимание — чтобы в SPF был прописан IP-адрес сервера.


Затем следует запросить у провайдера DNS-хостинга обратную запись rDNS (PTR-запись).
Привязать свой домен к ip-адресу сервера.

Как правило провайдер самостоятельно ее устанавливает по запросу.

4. Изменить hostname

Установить hostname равный названию нашего домена:


5. Редактировать файл sendmail.mc

Переходим к файлу /etc/mail/sendmail.mc

Нам необходимо настроить заголовки «Received: from» и «Received: by». Они являются важными при определении уровня доверия к серверу отправляющему электронную почту.

Добавляем следующие строки в конце файла перед MAILER_DEFINITIONS


И в конец файла:

6. Проверяем настройки apache и файервола


Ищем строчки и заменяем www-data на текущего пользователя под которым запущен apache

Сегодня электронная почта (email) — это очень важная часть жизни многих людей. Так как при настройке почты используется много параметров, а правильность настройки влияет на многие программы в Debian, в этом разделе мы попытаемся описать основные моменты настройки.

Данные части могут выполняться разными программами, но могут быть и объединены в одной или двух программах. Также можно настроить, чтобы разные виды почты обрабатывались разными программами.

Исторически, в системах Linux и Unix очень популярным MUA является mutt . Как и большинство классических программ Linux он имеет текстовый интерфейс. Часто он используется в связке с exim или sendmail , работающих в качестве MTA и procmail в качестве MDA.

В связи с ростом популярности систем с графическим рабочим столом, становятся более востребованными почтовые программы с графическим интерфейсом типа GNOME evolution , KDE kmail или Mozilla thunderbird (в Debian имеет название icedove [15] ). В этих программах объединены функции MUA, MTA и MDA, но они могут (так часто и происходит) использоваться совместно с классическими утилитами Linux.

8.5.1. Почтовая конфигурация по умолчанию

Даже если вы планируете использовать почтовую программу с графическим интерфейсом, очень важно, чтобы в системе Debian GNU/Linux также были установлены и правильно настроены классические MTA/MDA. Они нужны для различных утилит, которые работают в системе [16] , чтобы они могли послать важные уведомления по почте системному администратору о (потенциальных) проблемах или изменениях.

По этой причине по умолчанию устанавливаются пакеты exim4 и mutt (если вы не отменили задачу « стандарт » во время установки). exim4 — это комбинация MTA/MDA, имеет относительно небольшой размер, но очень гибок в настройке. По умолчанию, он настраивается на обработку только локальной почты самой системы, а почта, предназначенная системному администратору (учётная запись root), будет доставлена на учётную запись обычного пользователя, созданного во время установки [17] .

При доставке почты она добавляется в файл /var/mail/ учётная_запись . Почту можно читать с помощью mutt .

8.5.2. Отправка почты из системы

Как было упомянуто ранее, установленная система Debian настроена для обработки только локальной почты, она не может отправлять или принимать почту от других систем.

8.5.3. Настройка агента пересылки почты Exim4

Если вы хотите, чтобы система также работала с внешней почтой, то вам нужно перенастроить пакет exim4 [18] :

После ввода этой команды (имея права суперпользователя), вас спросят, хотите ли вы разделить конфигурацию на маленькие файлы. Если не знаете что делать, выберите установку по умолчанию.

Затем вам будет предложено несколько общих почтовых сценариев. Выберите тот, который подходит вам больше всего.

Ваша система подключена к сети, почта отправляется и получается напрямую по протоколу SMTP. На следующих экранах вам зададут несколько основных вопросов, таких как почтовое имя вашей машины или список доменов, для которых вы принимаете или передаёте почту.

отправка почты через компьютер-шлюз (smarthost)

По этому сценарию ваша исходящая почта переправляется на другую машину, называемую « smarthost » , которая и отправит письмо по назначению. Smarthost обычно ещё и хранит входящую почту, адресованную вашему компьютеру, так что вам не надо постоянно находиться в сети. Это также означает, что вам нужно загружать почту со smarthost с помощью программ типа fetchmail.

В большинстве случаев, в качестве smarthost используется почтовый сервер вашего ISP, что очень подходит пользователям, которые используют модемное подключение по телефонной линии. Также это может быть почтовый сервер компании или другая система в вашей сети.

отправка почты через smarthost; локальная почта отсутствует

То же самое, что и предыдущее значение, кроме того, что система не будет настроена на обработку почты локального домена. Почта от самой системы (например, для системного администратора) всё равно будет обработана.

доставка только локальной почты

Настроено в системе по умолчанию.

в данный момент конфигурация отсутствует

Если ни один из этих сценариев не подходит, или нужна более тонкая настройка, то после завершения установки вам нужно отредактировать файлы конфигурации в каталоге /etc/exim4 . Дополнительную информацию про exim4 можно найти в каталоге /usr/share/doc/exim4 ; в файле README.Debian.gz содержатся дополнительные подробности о настройке exim4 и указано где найти дополнительную документацию.

Заметим, что если у вас нет официального доменного имени и вы отправляете почту в интернет напрямую, это может привести к тому, что ваша почта не будет приниматься серверами, так как на них установлены средства борьбы со спамом. Предпочтительней использовать почтовый сервер ISP. Если вы всё равно хотите отправлять почту напрямую, то вам нужно использовать другой почтовый адрес, а не сгенерированный по умолчанию. Если в качестве MTA используется exim4 , это это делается добавлением записи в файл /etc/email-addresses .

[15] Причиной переименования thunderbird в icedove стала проблема с лицензией. Подробности выходят за рамки этого руководства.

[16] Примеры: cron , quota , logcheck , aide , …

[17] Пересылка почты root на учётную запись обычного пользователя настраивается в файле /etc/aliases . Если учётная запись обычного пользователя не была создана, почта, естественно, будет направляться самой учётной записи root.

[18] Конечно, также вы можете удалить exim4 и заменить его другим MTA/MDA.

Читайте также: