Особенности работы Postfix | Блог Timeweb Cloud

Виртуальные почтовые ящики

Это альтернатива ящикам, созданным для каждого из пользователей системы. Если на обслуживании вашего почтовика числятся сотни клиентов, то будет непрактично создавать всем им системные учетные записи для работы с почтой. Чтобы воспользоваться виртуальными п/я, вам нужно будет подкорректировать настройки программы и прописать окружение операционки.

Рассмотрим общий принцип функционирования виртуальных ящиков в системе. Если сервер почты не является релеем, то вся почтовая информация записывается на диск. При использовании постфиксом системных учеток, почтовые записи можно распознать по уникальным идентификаторам.

Идентификаторы пользователей и групп, а также их права можно задать с помощью параметров virtual_uid_maps, virtual_gid_maps. Кроме того, необходимо прописать папку, в которой будет храниться почта.

Класс виртуальных п/я создан для того, чтобы доставлять корреспонденцию для hosted_domains. Транспорт, который доставляет письма, прописывается в параметре Postfix virtual transport. По молчанию ему присвоено значение virtual, что обозначает доставку виртуальным агентом. Параметр mailbox_domains отвечает за наименования доменов, а в maps указываются допустимые адресаты.

Начальная настройка

В простейшем случае, пересылка всей почты доверенному (на сколько в данном контексте вообще можно говорить о доверии) посреднику конфигурируется на клиенте следующим образом:

Как письма попадают в почтовую систему

1. Чаще всего — через сеть. Сначала их получает в postfix SMTP-демон. Проводится проверка на спам, если эту функцию включил администратор. 

Затем запускается процесс cleanup, отвечающий за зачистку. Он проверяет, правильно ли оформлено сообщение и допустимый ли у него формат. Цель — не допустить переполнение буфера, которое может быть причиной атак.

Trivial-rewrite дописывает служебные заголовки и приводит адреса к стандартному виду. Они становятся такими: имя_юзера@поддомен.домен. 

Обработанное письмо записывается в каталог incoming, выделенный для хранения входящей очереди.

2. Послание может быть отправлено с локальных серверов скриптами или командой, например, такой:

Проверка работы почтового сервера

Проверим работу почтового сервера командой в консоли:

Установка и настройка почтового агента postfix

Для установки почтового агента введите следующую команду:

apt-get install -y postfix

Во время автоматической настройки пакета Postfix выберите пункт «Интернет-сайт«:

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

После установки проверьте статус демона Postfix, для этого введите команду:

service postfix status

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

Откройте для редактирования конфигурационный файл Postfix:

nano /etc/postfix/main.cf

Если у вас не работает команда nano, установите редактор командой apt-get install nano или воспользуйтесь другим редактором.

В конфигурационном файле main.cf найдите строку:

inet_interfaces = all

Измените значение inet_interfaces на localhost

inet_interfaces = localhost 

Параметр inet_interfaces указывает на каких сетевых интерфейсах postfix должен ожидать соединений. По умолчанию MTA Postfix слушает на всех активных сетевых интерфейсах. Вы можете переопределить значение inet_interfaces , указав IP адрес (либо доменное имя) нужного сетевого интерфейса.

*MTA — агент пересылки электронной почты (сервер электронной почты)

Внимание: при настройках из данной статьи не рекомендуется указывать значением ваш внешний IP адрес в inet_interfaces. Иначе ваш почтовый сервер может быть использован для массовой рассылки злоумышленниками.

Далее найдите следующие строки:

myhostname = 
myorigin = 
mydestination =

Измените их так, чтобы значение каждой из них соответствовало тому, которое приведено в следующем листинге:

Введение

В данной статье будет рассказано про настройку почтового сервера с использованием Postfix Dovecot MySQL. Материал не претендует на абсолютную уникальность, т.к. по сути является собранным с разных источников. Тем не менее, в рунете очень мало статей с пояснением многих важных параметрови общим планом по выполнению работ.

Буду стараться излагать материал с достаточным уровнем теории, но без излишеств. В любом случае, тема сложная и с первого раза разобраться и настроить ничего не получится, поэтому так или иначе придётся дополнительно почитать материалы для глубокого понимания. С данной же статьей начинать должно быть немного проще.

Любая конструктивная критика только приветствуется.

/etc/postfix/main.cf

Как правило, после установки главный файл настроек Postfix находится по адресу:

/etc/postfix/main.cf

Сделаем копию исходного файла конфигурации Postfix:

> cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

Думаю, будут удобнее сразу привести работающий пример этого файла.

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

Mysql: создание бд и пользователей

Внимание! Если в последующем будут какие-либо непонятные ошибки, например, “Unknown database driver ‘mysql’”, то проверьте: все ли нужные пакеты были установлены.

Условимся, что MySQL уже установлен и есть root-доступ. Надо создать базу и учётки:

create database postfix character set UTF8mb4 collate utf8mb4_bin

Postfix logs

Журнальные файлы по умолчанию хранятся в файле mail.log, расположенном в подкаталоге /var/log/mail.log. 

Если вы или ваш провайдер изменили их местоположение, то для возврата к первичным настройкам потребуется выполнить apt-get install rsyslog и перезапустить службы постфикса.

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

  • выяснить, отправлялось ли письмо с указанного адреса;
  • изучить статистику работы с почтовиком;
  • узнать объем сообщений, прошедших через SMTP.

Из этих строк не всегда можно понять, какое послание было обработано, так как одному и тому же получателю их могло быть отправлено несколько. Рассмотрим, как добавить в логе заголовки, которые смогут идентифицировать письмо с помощью директивы header_checks.

1. Создаем в подкаталоге etc/postfix файл header_checks и пишем в него правило для проверки заголовков:

/^X-Message-(.*)$/ Information $1 

2. Проверяем. Если нет ошибок в формате файла, то по команде:

postmap -q “X-Message-Result: 79461” pcre:/etc/postfix/header_checks

выведется результат:

Information Result: 79461

3. Подключим этот файл в почтовый сервер:

postconf –e header_checks=pcre:/etc/postfix/header_checks postfix reload

Итог: для всех посланий, содержащих такой заголовок, в журнальных записях запишется последняя часть заголовка, по которой можно распознать письмо.

Postfix: настройка отправки почты

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

  • внешний белый IP-адрес, приобретенный или взятый в аренду;
  • реальный домен, вы настроите его поддомен как имя сервера и будете управлять настройками DNS.

Tls let`s encrypt

Сертификат будет использоваться в трех местах:

  •     веб-интерфейс почты (управляемый Apache или nginx);
  •     Postfix (для аутентификации во время SMTP-сессии с пользователями);
  •     Dovecot (для аутентификации во время обмена данными IMAP).

Авторизация с использованием tls

К сожалению, далеко не всегда имеется возможность указать на релее список доверенных сетей. Например, такая ситуация возможна, когда отправитель является виртуальным сервером и исходящий IP адрес может не соответствовать входящему, а использоваться адрес гипервизора, через который осуществляются все исходящие соединения со всех виртуальных серверов, которые он обслуживает — в этой ситуации вносить исходящий IP адрес клиента в список доверенных сетей является опрометчивым решением и необходима авторизация

На клиентской стороне подключение сертификата для авторизации на релее осуществляется следующим образом:

Алиасы и преобразования адресов

Alias, или никнейм — это короткое имя, которое легко запомнить. Оно присваивается сложным и длинным наименованиям. 

Имя адресата может быть таким же, как и имя пользователя системы, но также их можно извлечь из таблицы алиасов. Например: 

alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

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

При установке Postfix “с нуля” в этой таблице создаётся алиас на имя root для доставки всей корреспонденции, предназначенной администратору и поступающей на другие системные адреса, на имя реального пользователя, который осуществляет функции администратора.

Изначально им становится первый зарегистрированный в системе реальный пользователь. Таблица алиасов отличается от остальных таблиц, используемых Postfix; имена слева, которые являются ключами для поиска, отделяются от значений справа двоеточиями. Адресаты справа перечисляются через запятую и могут быть адресами, командами (обозначаются символом | в начале правой части; сообщение подаётся на стандартный поток ввода команды) и именами файлов:

Рассмотрим на примере, как выглядит таблица. 

      Fitzwilliam Darcy: fitzwilliam
accountant: accountant@chiefcomputer
result: calendars, plans, reports
view: | postcat -q mail_id

Слева, до двоеточия — имена, выступающие как поисковые ключи. Справа могут быть адреса, имена файлов и команды (в этом случае в начале правой части ставится символ |).

Утилита postalias создает базы псевдонимов и обрабатывает запросы к ним. Чтобы построить рабочую таблицу, наберите команду:

postalias /etc/postfix/aliases

Архитектура

Соответствует стилю UNIX:

  • приложения просты;
  • количество функций минимально;
  • выполнение — быстрое и надежное.

Виды очередей

Если доставка сорвалась, Queue manager отсылает это послание в директорию, выделенную отложенным сообщениям. Спустя какое-то время будет предпринята повторная проба. Если вам нужно попытаться отправить письмо раньше, запустите команду postfix flush.

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

Очередь hold — для тех писем, которые были приостановлены. Из этого состояния их можно вывести специальной командой.

Виртуальные пользователи, домены и алиасы в postfix

Вся конфигурация может храниться в файлах, но для удобства управления и хранения будет использоваться СУБД.

База и пустые таблицы были созданы, теперь снова необходимо внести ясность по теоретическим моментам директив в конфиге Postfix, для которых нужен MySQL.

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

Дополнительная информация

Переходим к настройке Dovecot…

Авторизуйтесь для добавления комментариев!

Заполнение созданных таблиц тестовыми данными

В первую таблицу virtual_domains надо добавить основной домен и его ID:

Как происходит доставка

Сообщения, поставленные в очередь incoming, должны быть доставлены адресатам. 

Queue manager — менеджер очередей. Когда приходит сигнал о прибытии новой почты, он ставит ее в активную очередь active и отправляет запрос демону trivial-rewrite. Он сообщает, локальный это адрес или удаленный. Дополнительные сведения находятся в файле Postfix transport.

Менеджер очередей на основе анализа данных выбирает программы доставки. Перечислим их.

  • Агент Local доставляет корреспонденцию внутри системы. Несколько таких процессов запускаются одновременно.
  • Virtual — урезанная версия Local. Виртуальная доставка применима к п/я в формате mailbox. С *.forward и системными псевдонимами работа не предусмотрена.
  • SMTP подключается, если послание адресовано удаленному клиенту. Менеджер очередей передает сведения о получателе: наименование очереди, адресные данные, домен или хост. По завершении пересылки выдается ее статус, например, успешно, фатальная ошибка или временная ошибка.
  • LMTP доставляет корреспонденцию локальному/удаленному серверу, предназначенному для сбережения п/я. Принцип работы LMTP аналогичен SMTP, но протоколы разные.
  • Интерфейс Pipe mailer работает с транспортными агентами со стороны, например, с UUCP. 

Конфигурационные файлы для связи с бд

Информация о виртуальных доменах, алиасах и пользователях как раз и будет храниться в MySQL, в которой уже есть созданные для этого таблицы.

Я создал директорию для отдельного хранения конфигов, связанных с БД.

mkdir /etc/postfix/mysql ; cd /etc/postfix/mysql

virtual_domains:

Концепция подсистем

В Sendmail работает одно большое приложение, а в Постфикс — компактные программы, функционирующие совокупно. Они связаны алгоритмами FIFO и сокетами Unix. Каналы обмена размещены в защищенном каталоге. К функциям программ относятся отправление/прием сетевых сообщений и локальная доставка корреспонденции. 

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

Запускает и контролирует процессы утилита master. В ее конфигурационном файле master.cf записаны сведения о вспомогательных программах и очередности их запуска. Процесс master активизируется, когда система стартует, и «живет», пока она работает. Он запускает остальные модули по требованию и перезапускает те, что из-за проблем были завершены аварийно. 

Меняем темы писем с postfix pcre

В Постфикс можно заменять темы писем. Для этого потребуется доустановить библиотеку pcre, введя в терминале команду:

apt install postfix-pcre

Рассмотрим пример, где почтовик приписывает имя сервера к теме сообщения.

1. Добавляем в файл конфигурации запись:

header_checks = pcre:/etc/postfix/rewrite_subject

2. Создаем файл rewrite_subject в подкаталоге etc/postfix.

3. Записываем в этот файл правило, по которому наименование сервера припишется к теме письма.

/^Subject: (.*)$/ REPLACE Subject: $1 (from server.domain.tld)

Здесь:

Результатом этой команды будет замена заголовка на «заголовок имя сервера». 

4. Перезапускаем почтовый сервер, чтобы изменения вступили в силу.

Справка. Регулярные выражения pcre можно применять не только для правки заголовков, но и для фильтрации сообщений.

Настраиваем /etc/postfix/master.cf

Сейчас мы будем переходить к настройке Dovecot, поэтому сразу пропишем в конфиге Postfix, что Dovecot отвечает за локальную доставку почты.

Редактируем /etc/postfix/master.cf.

В конец файла /etc/postfix/master.cf добавляем две строки:

Настройка переадресации с локального ящика сервера на внешний ящик

Переадресация настраивается с помощью файла /etc/aliases. Рассмотрим создания правила для переадресации локальной почты для root на внешний почтовый ящик. Откройте файл /etc/aliases для редактирования:

nano /etc/aliases

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

# See man 5 aliases for format 
postmaster:    root

Внесите в файл дополнительную строку для настройки переадресации:

Некоторые утилиты

В приложение входит набор утилит, которые работают через командную строку. Эти утилиты заточены на решение административных задач. С их помощью вы сможете обращаться к картам, просматривать очереди, ставить в нее сообщения и извлекать их, а также модифицировать конфигурацию. У всех их есть общая характеристика — post в начале имени, так что вы легко найдете их в таблице.

Обновление кэша пакетов

Пройдите авторизацию в операционной системе через систему удаленного доступа. В данной инструкции считается, что команды исполняются под пользователем root. Если вы используете sudo, то перед каждой командой используйте sudo.

Для начала настройки необходимо обновить кэш пакетов операционной системы. В терминале введите следующую команду для выполнения обновления кэша:

apt-get update

Обязательные параметры

При настройке обязательно указываются такие параметры: myhostname, mydomain и mydestination.

Хост и домен прописываются так:

myhostname = mail.example.org
mydomain = example.org

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

myorigin = $mydomain

Прописываем почтовые домены, к которым сервер доставит почту. В mydestination перечисляются DNS-имена, для которых этот почтовый сервер сможет принимать корреспонденцию. Их лучше обрабатывать механизмом virtual, так что значения не присваиваем.

my destination =  
localhost
$myhostname

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

local_recipient_maps = 

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

Особенности работы

Чем интересен этот почтовый сервер?

  • Его исходный код открыт, а файлы конфигурации состоят всего из двух строк. Он готов отправлять сообщения сразу же после установки, но в нем нет встроенного механизма авторизации. 
  • Если не установить плагин Dovecot, любой желающий может подсоединиться к почтовику и начать отправлять или получать письма со всех ящиков. 
  • Возможна настройка виртуальных доменов.
  • Фильтруется спам.
  • Postfix и Sendmail — две совместимые программы. Персональные файлы пользователей с расширением *.forward и алиасы, хранящие пути перенаправления e-mail пользователей, имеют сходную семантику и формат.
  • Server Postfix комуницирует не только по SMTP, POP3 и IMAP, а также по расширенному протоколу ESMTP. В Постфиксе адреса не подставляются, а «вытягиваются» из табличных файлов или SQL-базы пользователя.

Отправка почты через релей

На данном этапе конфигурации сторонние наблюдатели могут предположить куда и сколько писем мы отправляем, однако, они не могут узнать содержимое посланий. Но что будет, если они установят на пути прохождения соединения «блок-пост», подобный описанному в предисловии, или будут совершать «набеги» время от времени? Вариантов не много:

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

Использование обходных путей возможно только до тех пор, пока они не будут раскрыты и перекрыты противником (т.н. security through obscurity или «безопасность через сокрытие»), однако, в случае наличия постоянного блок-поста, эта мера является единственно возможной альтернативой полному раскрытию содержимого сообщения

Первичные настройки

После инсталляции программные настройки запишутся в подкаталог /etc/postfix. Здесь же будет храниться main.cf — главный конфигурационный файл. 

Решим, как будет использоваться клиент mail Postfix: чтобы пересылать корреспонденцию на иной хост или хранить одну часть локально, а другую — пересылать.

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

Зайдите в подкаталог etc/postfix и раскройте файл конфигурации main.cf. Вы увидите строки такого вида: 

имя_параметра = значение

Их можно закомментировать, прописав в начале #. 

Если параметру может быть присвоено больше одного значения, это записывается одним из способов: 

имя_параметра = знач1 знач2 знач3
имя_параметра = знач1, значение2, значение3
имя_параметра =
знач1
знач2
знач3
имя_параметра =
знач1,
знач2,
знач3

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

После присваивания значения можно указать перед его именем $ и использовать его величину в других выражениях. Для этого укажите $имя_параметра там, где требуется «вытащить» значение. 

Это может быть выглядеть так: 

mydomen = example.net
mydestination=mail.$mydomen

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

Пересылка с использованием tls

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

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

Все действия будут проводиться на Centos 7.6. Ваш сетевой экран должен быть настроен, чтобы пропускать трафик (порты 25, 143, 587, 80, 443).

Физический путь для хранения писем – /var/vmail

FQDN в /etc/hosts:

Проксирование через tor

Одним из способов обхода постоянного блок-поста является использование TOR — «сети луковой маршрутизации». TOR может использоваться только в паре с доверенным релеем — собственным или публичным почтовым сервером, т.к. попытка прямой отправки почты через TOR, скорее всего, окончится неудачей — подавляющее большинство выходов SMTP из сети TOR находится под санкциями крупных почтовых систем.

Для запуска SOCKS-прокси достаточно в файле конфигурации TOR (/etc/tor/torrc или /usr/local/etc/tor/torrc для FreeBSD) установить адрес и порт для принятия входящих соединений (документация по опциям):

SocksPort 9050SocksListenAddress 127.0.0.1

Для проксирования трафика Postfix в SOCKS-прокси потребуется ввести дополнительный транспорт, который бы поддерживал данный тип проксирования. Наиболее простым способом является загрузка приложения с библиотекой, которая прозрачно перенаправляет все TCP соединения в прокси. Такой библиотекой, например, является tsocks

Конфигурация параметров работы библиотеки tsocks задается в файле /etc/tsocks.conf (или /usr/local/etc/tsocks.conf для FreeBSD):

local = 127.0.0.1/255.255.255.255server = 127.0.0.1server_ENGINE= 5server_port = 9050

Здесь параметр local является списком хостов, которые достижимы без использования прокси, остальные параметры указывают на адрес и порт SOCKS-5 прокси TOR

Для создания транспорта Postfix необходимо создать скрипт с именем /usr/lib/postfix/smtp_socks вида:

#!/bin/shexport LD_PRELOAD=/usr/lib/libtsocks.soexec /usr/lib/postfix/smtp $@

и дать ему права на выполнение (chmod 0755 smtp_socks). Во FreeBSD исполняемые файлы транспортов находятся в директории /usr/local/libexec/postfix, а библиотека в /usr/local/lib

Далее необходимо включить новый транспорт непосредственно в самой конфигурации Postfix в файле master.cf исправив соответствующую строку:

smtp unix - - n - - smtp_socks

Здесь следует обратить внимание на значение n в поле chroot — в Debian оно по умолчанию установлено в значение — (или yes), что будет препятствовать загрузке библиотеки libtsocks.so без дополнительных настроек chroot-окружения

Часть 1, Часть 3

Работа с очередью

  • С помощью утилиты postcat Postfix вы сможете просматривать содержимое сообщений, которые застряли в очереди.
  • С помощью qshape Postfix можно увидеть письма, стоящие в очереди по каждому из доменов. 
  • Просмотр очереди:
postqueue -p | less
  • Узнать количество писем в очереди:
mailq | grep Request
  • Установить наименование сервера 

Имя узнается с помощью команды:

hostname

Если имя не установлено, или не такое, его можно прописать:

Секция auth

Здесь задаются параметры авторизации пользователей для отправки почты. Это обязательно, если у вас не локальный почтовый сервер и вы не собираетесь бесплатно рассылать спам!

Секция config

В этой секции задаются пути до файлов конфигураций, переменные, имя пользователя, от которого запускается Postfix и пр. Как правило, содержимое этой секции задается по-умолчанию (раскидано по дефолтному конфигу) и не требует серьезной доработки. Эти параметры зависят от дистрибутива, если вы ставите из бинарника (например, rpm), от параметров при сборке из исходников и др.

Секция quotas

Ограничения на размер почтового ящика и др.

Секция relay domains

“Домены для пересылки”. Это самая короткая секция. Здесь указываются те домены, почту которых наш сервер будет стараться переслать дальше соответственно старшинству MX записей для этого домена. Например, это может быть использовано при создании резервного сервера.

Секция restrictions

Дополнительно предлагаю ознакомиться с настройками ограничений Postfix (в новом окне).

Мы же не хотим, чтобы мы погрязли в спаме?

  • smtpd_sender_restrictions – проверка адреса отправителя (т.е. проверяются те, кто пытается отправить письмо на наш сервер).
    permit_mynetworks – разрешаем отправлять нам из нашей же сети (логично)
    permit_sasl_authenticated – разрешаем отправлять тем, кто прошел проверку паролем (если виртуальный домен один, это означает, что один коллега шлет письма другому коллеге. На серверах с большим количеством доменов возможны ситуации, когда два незнакомых человека в разных доменах обслуживаются нашим почтовым сервером)
    reject_non_fqdn_sender, reject_unknown_sender_domain – неправильные и несуществующие домены отвергаем – скорее всего, это спам или неправильно сконфигурированный почтовый сервер отправителя.
    permit – почту от всех остальных все-таки принимаем! В эту категорию войдут все нормальные люди. Можете проверить, поставьте reject и попробуйте написать письмо на этот сервер с другого сервера. Вы должны будете получить сообщение об ошибке доставки.
  • smtpd_recipient_restrictions – для кого можно принимать почту.
    reject_non_fqdn_recipient – нельзя принимать почту для неправильных доменов 
    reject_unknown_recipient_domain – нельзя принимать почту для несуществующих доменов
    permit_sasl_authenticated – можно принимать почту для авторизовавшихся
    reject_unlisted_recipient
    permit_mynetworks – можно принимать почту для тех, кто из нашей сети
    reject_unauth_destination
    permit_auth_destination
    reject

Секция secure headers

Не обязательная, но – полезная секция. Например, можно удалить информацию об IP-адресе в локальной сети, если таковая фигурирует в отправленных письмах, или о том, какой почтовый клиент вы используете (X-Mailer).

Секция tls

Шифрование сеансов связи с сервером от атак Man-in-the-Middle, от перехвата пароля… В настоящее время уже необходимость, нежели чрезмерность. Практически все крупные бесплатные почтовые системы реализовали TLS или SSL. А мы чем хуже?

Секция virtual domains

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

Серверные настройки

1. Прописываем сетевые интерфейсы, работающие на приеме почты, например, все: 

inet_interfaces = all

Выбираем из ipv4, ipv6, all нужный нам протокол:

inet_protocols = all 

2. Указываем доверенные сети, где разрешены практически любые соединения:

mynetworks =
127.0.0.0/7
[::ffff:127.0.0.0]/108
[::1]/121
192.168.0.0/9

3. Если вы планируете отправлять корреспонденцию через relay, пропишите это в relayhost.

Справка. Relay — это узел, перенаправляющий входящую почту. В его задачи входит:

  • получение корреспонденции;
  • хранение на протяжение указанного периода;
  • пересылка писем получателю или другому relay.

Relay для отправляемой корреспонденции:

relayhost = smtp.myprovider.net

Так как вы отправляете всю переписку на релей, вам нет смысла опрашивать DNS. Поэтому отключаем эти запросы:

disable_dns_lookups = yes

4. Прописываем домены, на которые разрешим пересылать сообщения от клиентов недоверенных сетей. Возможен один из вариантов:

relay_domains = $mydestination
  • Запрет пересылки корреспонденции от посторонних:
relay_domains =
  • Отправление корреспонденции своим доменам:
relay_domains = $mydomain

Справка. По умолчанию, Постфикс:

  • переправляет корреспонденцию исключительно авторизованным доменам;
  • воспринимает авторизованными те домены, что прописаны в mydestination.

Статус доставки

Задача DSN Postfix — оповестить о статусе доставки корреспонденции: успех, неудача, задержка или не отправлено. 

Вы можете запретить оповещения: 

/etc/postfix/main.cf:
smtpd_discard_ehlo_keywords=silent-discard, dsn

Или разрешить лишь отобранным:

/etc/postfix/main.cf:
smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_access

Перечень выбранных сетей — в файле esmtp_access. Например: 

192.168.0.0/25 silent-discard
0.0.0.0/0 silent-discard, dsn

Стратегии

Queue manager умеет функционировать в различных режимах/стратегиях, или комбинировать их. 

  • Leaky bucket. При этой стратегии число писем в активной очереди ограничивается.
  • Fairness. Если не заполнена активная очередь, то берутся письма, залежавшиеся в отложенной и входящей очередях.
  • Slow start. Режим направлен на предотвращение заторов, которые происходят, когда получатель задерживается с обработкой запросов. Подстройка проводится путем регулирования числа попыток одновременной отправки.
  • Round robin. Queue manager рассортировывает по очередям корреспонденцию в соответствии с местом доставки.
  • Exponential backoff. Та почта, что не отправилась с первого раза, уходит в отложенную очередь. Ее тайм-аут после последующих неудачных попыток умножается на 2. Это позволяет не тратить ресурсы на нерабочие узлы.
  • Кэширование статуса. Queue manager работает с таблицей, в которой содержатся статусы неудачных попыток доставки. 

Теория “в двух словах”. как работает почта

На эту тему много статей, но для общей картины опишу процесс прохождения письма.

Для отправки потребуется работать как минимум с двумя известными протоколами: SMTP и IMAP. Условно говоря, первый отвечает за отправку почты, второй – за управление и доступ к почте на сервере. Есть ещё POP3, но он не так популярен и о нём речь не идёт.

Теория “в двух словах”. схема настройки

Для настройки почтового сервера нам понадобится: Postfix, Dovecot, MySQL ещё несколько пакетов, о которых расскажу далее.

Установка postfix

Чтобы инсталлировать приложение, наберите: 

apt-get install postfix

Запустится конфигурирование. Вам начнут задавать вопросы. Среди профилей, которые вам предложат, выберите Internet Site — тогда программа сконфигурирует конфиг main.cf и сразу же запустится. Иначе вам придется конфигурировать самостоятельно.

Справка. Main.cf может содержать свыше 330 строк. 

Итоги

Настройте для пересылки почты собственный клиент, если планируете:

  • отправлять сообщения пользователей сервера за пределы локальной сети;
  • мониторить оборудование;
  • получать извещения о происшедших событиях. 

Число отказов снизится, а вероятность доставки возрастет с уменьшением количества посредников при пересылке писем.

В программе Postfix, server пересылает корреспонденцию либо напрямую, непосредственно на почтовый сервер адресата, либо через relay (посредника). Почтовик легко устанавливается и запускается, но нужно понимать тонкости его работы, чтобы внедрить или разобраться в проблемах.

Похожее:  Передать показания счетчиков - Расчетно аналитический центр в Старый осколе (Белгородская область): личный кабинет, через интернет-сайт, по телефону

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *