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

    Команда Simple-Server
    03.06.2026
    17 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

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

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

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

    После инсталляции программные настройки запишутся в подкаталог /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

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

    Задача 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
    • С помощью утилиты postcat Postfix вы сможете просматривать содержимое сообщений, которые застряли в очереди.

    • С помощью qshape Postfix можно увидеть письма, стоящие в очереди по каждому из доменов.

    • Просмотр очереди:

    • Узнать количество писем в очереди:

    • Установить наименование сервера

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

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

    echo "server" > /etc/hostname hostname -F /etc/hostname

    Справка. Hostname сервера не совпадает с его доменом. Например, server.example.com — полное имя домена, а server — его hostname.

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

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

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

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

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

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

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

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

    my destination =   localhost $myhostname

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

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

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

    Выбираем из ipv4, ipv6, 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 = $mydomain

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

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

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

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

    Если вы хотите добавить еще одного user postfix,**** то самым**** простым способом будет введение новой учетки в систему, об остальном почтовый клиент позаботится сам.

    Чтобы создать нового пользователя, в терминале Ubuntu наберите команду:

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

    1. Устанавливаем MySQL, в которой будет храниться информация о пользователях.
    2. Добавляем Постфикс Admin — интерфейс администрирования и управления почтовым клиентом.
    3. Переносим учетные записи пользователей в базу данных.

    Этот процесс подробнее описан в блоге Simple-Server, разбирается настройка Postfix и Dovecot.

    Меняем темы писем с Postfix Pcre

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

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

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

    header_checks = pcre:/etc/postfix/rewrite_subject

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

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

    /^Subject: (.*)$/ REPLACE Subject: $1 (from server.domain.tld)
    • /^Subject: (.*)$/ — регулярное выражение, которое совпадет с текстом заголовка, идущего после слова «Subject».
    • (.*) — любая из тем письма, ее значение присвоится переменной $1.
    • REPLACE — замена текста.

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

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

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

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

    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

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

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

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

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

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

    Журнальные файлы по умолчанию хранятся в файле 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

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

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

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

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

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

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

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

    postsuperПоддержание очередей администратором с правами root. Снятие и повторная отправка сообщений.
    postqueueУправление очередями обычными администраторами. Если сравнить с postsuper, часть функционала урезана.
    postconfПросмотр состояния переменных, входящих в конфиг.
    postlogЗапись информации в журналы. Пригодится при создании скриптов.
    postcatПросмотр очередей.
    postmapЗапросы к дополнительным таблицам. Формирование вспомогательных таблиц по текстовым данным. Конверсия текста в таблицу.
    postlockРабота с блокировками.
    postkickПередача сигналов внутри почтового сервера. Взаимодействие скриптов с приложением.
    spawnПодключение сторонних приложений для фильтрации сообщений.
    proxymapЦентрализованные запросы к служебным таблицам. Предоставление доступа в обход ограничений chroot.
    smtpdПрием корреспонденции через порт SMTP. Проверка авторизации пользователя перед отправкой почты.
    pickupСканирование каталога локальных писем. Обработка найденных файлов.
    cleanupОбработка входящей почты. Добавление заголовков. Формирование адреса по картам virtual и canonical.
    mailqПросмотр списка писем в очередях.
    trivial-rewriteНебольшая правка адресов. Дописывание домена и не полностью заполненного адреса.
    qmgrАдминистратор очередей для корреспонденции, ожидающей доставки.

    Поддержание очередей администратором с правами root.

    Снятие и повторная отправка сообщений.

    Управление очередями обычными администраторами. Если сравнить с postsuper, часть функционала урезана.

    Просмотр состояния переменных, входящих в конфиг.

    Запись информации в журналы. Пригодится при создании скриптов.

    Запросы к дополнительным таблицам.

    Формирование вспомогательных таблиц по текстовым данным.

    Конверсия текста в таблицу.

    Передача сигналов внутри почтового сервера.

    Взаимодействие скриптов с приложением.

    Подключение сторонних приложений для фильтрации сообщений.

    Централизованные запросы к служебным таблицам.

    Предоставление доступа в обход ограничений chroot.

    Прием корреспонденции через порт SMTP.

    Проверка авторизации пользователя перед отправкой почты.

    Сканирование каталога локальных писем.

    Обработка найденных файлов.

    Обработка входящей почты.

    Формирование адреса по картам virtual и canonical.

    Просмотр списка писем в очередях.

    Небольшая правка адресов.

    Дописывание домена и не полностью заполненного адреса.

    Администратор очередей для корреспонденции, ожидающей доставки.

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

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

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

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

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

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

    echo "text of the letter" | mail Dragon@domain.net -s "I wish you happiness"

    3. Письмо появилось как ответ системы. Отправителю сообщается, что его послание не удалось доставить.

    4. Письмо возникло как уведомление администратору. Сообщается, что есть проблемы c протоколом SMTP или настройки нарушены. Чтобы доставить письмо, сначала запускается процесс cleanup, а потом оно ставится в очередь.

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

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

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

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

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

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

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

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

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

    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны

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

      Команда Simple-Server
      03.06.2026
      17 мин

      Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

      Кратко о задаче

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

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

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

      После инсталляции программные настройки запишутся в подкаталог /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

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

      Задача 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
      • С помощью утилиты postcat Postfix вы сможете просматривать содержимое сообщений, которые застряли в очереди.

      • С помощью qshape Postfix можно увидеть письма, стоящие в очереди по каждому из доменов.

      • Просмотр очереди:

      • Узнать количество писем в очереди:

      • Установить наименование сервера

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

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

      echo "server" > /etc/hostname hostname -F /etc/hostname

      Справка. Hostname сервера не совпадает с его доменом. Например, server.example.com — полное имя домена, а server — его hostname.

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

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

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

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

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

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

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

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

      my destination =   localhost $myhostname

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

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

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

      Выбираем из ipv4, ipv6, 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 = $mydomain

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

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

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

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

      Если вы хотите добавить еще одного user postfix,**** то самым**** простым способом будет введение новой учетки в систему, об остальном почтовый клиент позаботится сам.

      Чтобы создать нового пользователя, в терминале Ubuntu наберите команду:

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

      1. Устанавливаем MySQL, в которой будет храниться информация о пользователях.
      2. Добавляем Постфикс Admin — интерфейс администрирования и управления почтовым клиентом.
      3. Переносим учетные записи пользователей в базу данных.

      Этот процесс подробнее описан в блоге Simple-Server, разбирается настройка Postfix и Dovecot.

      Меняем темы писем с Postfix Pcre

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

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

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

      header_checks = pcre:/etc/postfix/rewrite_subject

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

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

      /^Subject: (.*)$/ REPLACE Subject: $1 (from server.domain.tld)
      • /^Subject: (.*)$/ — регулярное выражение, которое совпадет с текстом заголовка, идущего после слова «Subject».
      • (.*) — любая из тем письма, ее значение присвоится переменной $1.
      • REPLACE — замена текста.

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

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

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

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

      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

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

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

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

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

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

      Журнальные файлы по умолчанию хранятся в файле 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

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

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

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

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

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

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

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

      postsuperПоддержание очередей администратором с правами root. Снятие и повторная отправка сообщений.
      postqueueУправление очередями обычными администраторами. Если сравнить с postsuper, часть функционала урезана.
      postconfПросмотр состояния переменных, входящих в конфиг.
      postlogЗапись информации в журналы. Пригодится при создании скриптов.
      postcatПросмотр очередей.
      postmapЗапросы к дополнительным таблицам. Формирование вспомогательных таблиц по текстовым данным. Конверсия текста в таблицу.
      postlockРабота с блокировками.
      postkickПередача сигналов внутри почтового сервера. Взаимодействие скриптов с приложением.
      spawnПодключение сторонних приложений для фильтрации сообщений.
      proxymapЦентрализованные запросы к служебным таблицам. Предоставление доступа в обход ограничений chroot.
      smtpdПрием корреспонденции через порт SMTP. Проверка авторизации пользователя перед отправкой почты.
      pickupСканирование каталога локальных писем. Обработка найденных файлов.
      cleanupОбработка входящей почты. Добавление заголовков. Формирование адреса по картам virtual и canonical.
      mailqПросмотр списка писем в очередях.
      trivial-rewriteНебольшая правка адресов. Дописывание домена и не полностью заполненного адреса.
      qmgrАдминистратор очередей для корреспонденции, ожидающей доставки.

      Поддержание очередей администратором с правами root.

      Снятие и повторная отправка сообщений.

      Управление очередями обычными администраторами. Если сравнить с postsuper, часть функционала урезана.

      Просмотр состояния переменных, входящих в конфиг.

      Запись информации в журналы. Пригодится при создании скриптов.

      Запросы к дополнительным таблицам.

      Формирование вспомогательных таблиц по текстовым данным.

      Конверсия текста в таблицу.

      Передача сигналов внутри почтового сервера.

      Взаимодействие скриптов с приложением.

      Подключение сторонних приложений для фильтрации сообщений.

      Централизованные запросы к служебным таблицам.

      Предоставление доступа в обход ограничений chroot.

      Прием корреспонденции через порт SMTP.

      Проверка авторизации пользователя перед отправкой почты.

      Сканирование каталога локальных писем.

      Обработка найденных файлов.

      Обработка входящей почты.

      Формирование адреса по картам virtual и canonical.

      Просмотр списка писем в очередях.

      Небольшая правка адресов.

      Дописывание домена и не полностью заполненного адреса.

      Администратор очередей для корреспонденции, ожидающей доставки.

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

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

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

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

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

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

      echo "text of the letter" | mail Dragon@domain.net -s "I wish you happiness"

      3. Письмо появилось как ответ системы. Отправителю сообщается, что его послание не удалось доставить.

      4. Письмо возникло как уведомление администратору. Сообщается, что есть проблемы c протоколом SMTP или настройки нарушены. Чтобы доставить письмо, сначала запускается процесс cleanup, а потом оно ставится в очередь.

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

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

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

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

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

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

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

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

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

      Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

      VPS для проекта

      VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

      StarterVDS

      490₽

      в месяц

      1 ядро

      1 ГБ RAM

      20 ГБ NVMe

      • 1 IPv4
      • KVM
      • Root-доступ
      • Безлимитный трафик
      Заказать VPS
      Рекомендуем

      PerformanceVDS

      1190₽

      в месяц

      2 ядра

      4 ГБ RAM

      60 ГБ NVMe

      • 1 IPv4
      • KVM
      • Root-доступ
      • Базовая DDoS-защита
      Заказать VPS

      Нужна другая конфигурация или чистый VPS без панели?

      Все тарифы VPS

      Похожие статьи, которые могут быть вам интересны

      и использовать его величину в других выражениях. Для этого укажите `$имя_параметра` там, где требуется «вытащить» значение. \r\n\r\nЭто может быть выглядеть так: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nmydomen = example.net\r\nmydestination=mail.$mydomen\n```\n\n \r\n\r\nНо, как правило, явные значения предпочтительней. Так как параметров используется меньше, их проще менять и вероятность ошибки ниже. \r\n\r\nЗадача DSN Postfix — оповестить о статусе доставки корреспонденции: успех, неудача, задержка или не отправлено. \r\n\r\nВы можете запретить оповещения: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\n/etc/postfix/main.cf:\r\nsmtpd_discard_ehlo_keywords=silent-discard, dsn\n```\n\n \r\n\r\nИли разрешить лишь отобранным:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\n/etc/postfix/main.cf:\r\nsmtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_access\n```\n\n \r\n\r\nПеречень выбранных сетей — в файле esmtp_access. Например: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\n192.168.0.0/25 silent-discard\r\n0.0.0.0/0 silent-discard, dsn\n```\n\n \r\n\r\n * С помощью утилиты postcat Postfix вы сможете просматривать содержимое сообщений, которые застряли в очереди.\r\n * С помощью qshape Postfix можно увидеть письма, стоящие в очереди по каждому из доменов. \r\n * Просмотр очереди:\r\n\r\n\r\n * Узнать количество писем в очереди:\r\n\r\n\r\n * Установить наименование сервера \r\n\r\n\r\nИмя узнается с помощью команды:\r\n\r\nЕсли имя не установлено, или не такое, его можно прописать:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\necho \"server\" > /etc/hostname\r\nhostname -F /etc/hostname\n```\n\n \r\n\r\n**Справка**. Hostname сервера не совпадает с его доменом. Например, server.example.com — полное имя домена, а server — его hostname.\r\n\r\n## Postfix: настройка отправки почты \r\n\r\nДля того чтобы отправленные через MTA письма не попали под спам, а пришли адресату, вам будут нужны:\r\n\r\n * внешний белый IP-адрес, приобретенный или взятый в аренду;\r\n * реальный домен, вы настроите его поддомен как имя сервера и будете управлять настройками DNS.\r\n\r\n\r\nПри настройке обязательно указываются такие параметры: myhostname, mydomain и mydestination.\r\n\r\nХост и домен прописываются так:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nmyhostname = mail. example.org\r\nmydomain = example.org\n```\n\n \r\n\r\nЕсли не указать название хоста, система определит его сама, но лучше прописать явно. Имя домена получится из названия хоста, если отбросить левую часть до первой точки. Поэтому можно не прописывать его вручную. Mydomain — это публичное наименование почтового сервиса. К адресу, откуда отсылается корреспонденция, автоматически дописывается домен локальной почты:\r\n\r\nПрописываем почтовые домены, к которым сервер доставит почту. В mydestination перечисляются DNS-имена, для которых этот почтовый сервер сможет принимать корреспонденцию. Их лучше обрабатывать механизмом virtual, так что значения не присваиваем.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nmy destination =  \r\nlocalhost\r\n$myhostname\n```\n\n \r\n\r\nЗатем подключаем виртуальные домены, чтобы доставить почту:\r\n\r\nТак как обычная локальная доставка нас не интересует, оставляем перечень адресатов без значений.\r\n\r\n1\\. Прописываем сетевые интерфейсы, работающие на приеме почты, например, все: \r\n\r\nВыбираем из ipv4, ipv6, all нужный нам протокол:\r\n\r\n2\\. Указываем доверенные сети, где разрешены практически любые соединения:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nmynetworks =\r\n127.0.0.0/7\r\n[::ffff:127.0.0.0]/108\r\n[::1]/121\r\n192.168.0.0/9\n```\n\n \r\n\r\n3\\. Если вы планируете отправлять корреспонденцию через relay, пропишите это в relayhost.\r\n\r\n**Справка.** Relay — это узел, перенаправляющий входящую почту. В его задачи входит:\r\n\r\n * получение корреспонденции;\r\n * хранение на протяжение указанного периода;\r\n * пересылка писем получателю или другому relay.\r\n\r\n\r\nRelay для отправляемой корреспонденции:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nrelayhost = smtp.myprovider.net\n```\n\n \r\n\r\nТак как вы отправляете всю переписку на релей, вам нет смысла опрашивать DNS. Поэтому отключаем эти запросы:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\ndisable_dns_lookups = yes\n```\n\n \r\n\r\n4\\. Прописываем домены, на которые разрешим пересылать сообщения от клиентов недоверенных сетей. Возможен один из вариантов:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nrelay_domains = $mydestination\n```\n\n \r\n\r\n * Запрет пересылки корреспонденции от посторонних:\r\n\r\n\r\n * Отправление корреспонденции своим доменам:\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nrelay_domains = $mydomain\n```\n\n \r\n\r\n**Справка**. По умолчанию, Постфикс:\r\n\r\n * переправляет корреспонденцию исключительно авторизованным доменам;\r\n * воспринимает авторизованными те домены, что прописаны в mydestination.\r\n\r\n\r\nЧем интересен этот почтовый сервер?\r\n\r\n * Его исходный код открыт, а файлы конфигурации состоят всего из двух строк. Он готов отправлять сообщения сразу же после установки, но в нем нет встроенного механизма авторизации. \r\n * Если не установить плагин Dovecot, любой желающий может подсоединиться к почтовику и начать отправлять или получать письма со всех ящиков. \r\n * Возможна настройка виртуальных доменов.\r\n * Фильтруется спам.\r\n * Postfix и Sendmail — две совместимые программы. Персональные файлы пользователей с расширением *.forward и алиасы, хранящие пути перенаправления e-mail пользователей, имеют сходную семантику и формат.\r\n * Server Postfix комуницирует не только по SMTP, POP3 и IMAP, а также по расширенному протоколу ESMTP. В Постфиксе адреса не подставляются, а «вытягиваются» из табличных файлов или SQL-базы пользователя.\r\n\r\n\r\nЕсли вы хотите добавить еще одного user postfix,**** то самым**** простым способом будет введение новой учетки в систему, об остальном почтовый клиент позаботится сам. \r\n\r\nЧтобы создать нового пользователя, в терминале Ubuntu наберите команду:\r\n\r\nДобавленный пользователь сможет пользоваться почтовиком. Такой метод подходит небольшим организациям. Если же в организации много пользователей, систему наращивают. \r\n\r\n 1. Устанавливаем MySQL, в которой будет храниться информация о пользователях.\r\n 2. Добавляем Постфикс Admin — интерфейс администрирования и управления почтовым клиентом.\r\n 3. Переносим учетные записи пользователей в базу данных.\r\n\r\n\r\nЭтот процесс подробнее описан в блоге [Simple-Server](/optimalnyij-xosting-dlya-telegram-bota), разбирается [настройка Postfix и Dovecot](/blog/mail/ustanovka-i-nastrojka-postfix-i-dovecot).\r\n\r\n## Меняем темы писем с Postfix Pcre \r\n\r\nВ Постфикс можно заменять темы писем. Для этого потребуется доустановить библиотеку pcre, введя в терминале команду:\r\n\r\nРассмотрим пример, где почтовик приписывает имя сервера к теме сообщения.\r\n\r\n1\\. Добавляем в файл конфигурации запись:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nheader_checks = pcre:/etc/postfix/rewrite_subject\n```\n\n \r\n\r\n2\\. Создаем файл rewrite_subject в подкаталоге etc/postfix.\r\n\r\n3\\. Записываем в этот файл правило, по которому наименование сервера припишется к теме письма.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\n/^Subject: (.*)$/ REPLACE Subject: $1 (from server.domain.tld)\n```\n\n \r\n\r\n * `/^Subject: (.*)$/` — регулярное выражение, которое совпадет с текстом заголовка, идущего после слова «Subject». \r\n * `(.*)` — любая из тем письма, ее значение присвоится переменной $1.\r\n * `REPLACE` — замена текста.\r\n\r\n\r\nРезультатом этой команды будет замена заголовка на «заголовок + имя сервера». \r\n\r\n4\\. Перезапускаем почтовый сервер, чтобы изменения вступили в силу.\r\n\r\n**Справка**. Регулярные выражения pcre можно применять не только для правки заголовков, но и для фильтрации сообщений.\r\n\r\n## Алиасы и преобразования адресов \r\n\r\nAlias, или никнейм — это короткое имя, которое легко запомнить. Оно присваивается сложным и длинным наименованиям. \r\n\r\nИмя адресата может быть таким же, как и имя пользователя системы, но также их можно извлечь из таблицы алиасов. Например: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nalias_maps = hash:/etc/postfix/aliases\r\nalias_database = hash:/etc/postfix/aliases\n```\n\n \r\n\r\nВо время первой установки почтового клиента таблица пополняется записью с алиасом суперпользователя root. Ему будут отправляться все письма, отправленные на системные адреса или администратору (по умолчанию им становится первый зарегистрированный пользователь). \r\n\r\nПри установке Postfix “с нуля” в этой таблице создаётся алиас на имя root для доставки всей корреспонденции, предназначенной администратору и поступающей на другие системные адреса, на имя реального пользователя, который осуществляет функции администратора. Изначально им становится первый зарегистрированный в системе реальный пользователь. Таблица алиасов отличается от остальных таблиц, используемых Postfix; имена слева, которые являются ключами для поиска, отделяются от значений справа двоеточиями. Адресаты справа перечисляются через запятую и могут быть адресами, командами (обозначаются символом | в начале правой части; сообщение подаётся на стандартный поток ввода команды) и именами файлов:\r\n\r\nРассмотрим на примере, как выглядит таблица. \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\nFitzwilliam Darcy: fitzwilliam \r\naccountant: accountant@chiefcomputer \r\nresult: calendars, plans, reports \r\nview: | postcat -q mail_id\n```\n\n \r\n\r\nСлева, до двоеточия — имена, выступающие как поисковые ключи. Справа могут быть адреса, имена файлов и команды (в этом случае в начале правой части ставится символ |).\r\n\r\nУтилита postalias создает базы псевдонимов и обрабатывает запросы к ним. Чтобы построить рабочую таблицу, наберите команду:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\npostalias /etc/postfix/aliases\n```\n\n \r\n\r\n## Виртуальные почтовые ящики \r\n\r\nЭто альтернатива ящикам, созданным для каждого из пользователей системы. Если на обслуживании вашего почтовика числятся сотни клиентов, то будет непрактично создавать всем им системные учетные записи для работы с почтой. Чтобы воспользоваться виртуальными п/я, вам нужно будет подкорректировать настройки программы и прописать окружение операционки.\r\n\r\nРассмотрим общий принцип функционирования виртуальных ящиков в системе. Если сервер почты не является релеем, то вся почтовая информация записывается на диск. При использовании постфиксом системных учеток, почтовые записи можно распознать по уникальным идентификаторам. Но, когда эксплуатируются виртуальные п/я, потребуется каким-то образом сообщить приложению о необходимости сохранения почтовой информации под определенной учеткой ОС. \r\n\r\nИдентификаторы пользователей и групп, а также их права можно задать с помощью параметров virtual_uid_maps, virtual_gid_maps. Кроме того, необходимо прописать папку, в которой будет храниться почта.\r\n\r\nКласс виртуальных п/я создан для того, чтобы доставлять корреспонденцию для hosted_domains. Транспорт, который доставляет письма, прописывается в параметре Postfix virtual transport. По молчанию ему присвоено значение virtual, что обозначает доставку виртуальным агентом. Параметр mailbox_domains отвечает за наименования доменов, а в maps указываются допустимые адресаты.\r\n\r\nЖурнальные файлы по умолчанию хранятся в файле mail.log, расположенном в подкаталоге /var/log/mail.log. \r\n\r\nЕсли вы или ваш провайдер изменили их местоположение, то для возврата к первичным настройкам потребуется выполнить `apt-get install rsyslog` и перезапустить службы постфикса.\r\n\r\nПо каждому из писем в логах фиксируются базовые данные: отправитель и адресат, а также факт и время обработки. Анализируя файлы журналов, вы можете: \r\n\r\n * выяснить, отправлялось ли письмо с указанного адреса;\r\n * изучить статистику работы с почтовиком;\r\n * узнать объем сообщений, прошедших через SMTP.\r\n\r\n\r\nИз этих строк не всегда можно понять, какое послание было обработано, так как одному и тому же получателю их могло быть отправлено несколько. Рассмотрим, как добавить в логе заголовки, которые смогут идентифицировать письмо с помощью директивы [header_checks](http://www.postfix.org/header_checks.5.html).\r\n\r\n1\\. Создаем в подкаталоге etc/postfix файл header_checks и пишем в него правило для проверки заголовков:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\n/^X-Message-(.*)$/ Information $1\n```\n\n \r\n\r\n2\\. Проверяем. Если нет ошибок в формате файла, то по команде:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\npostmap -q “X-Message-Result: 79461” pcre:/etc/postfix/header_checks\r\nInformation Result: 79461\n```\n\n \r\n\r\n3\\. Подключим этот файл в почтовый сервер:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\npostconf –e header_checks=pcre:/etc/postfix/header_checks postfix reload\n```\n\n \r\n\r\nИтог: для всех посланий, содержащих такой заголовок, в журнальных записях запишется последняя часть заголовка, по которой можно распознать письмо.\r\n\r\nСоответствует стилю UNIX:\r\n\r\n * приложения просты;\r\n * количество функций минимально;\r\n * выполнение — быстрое и надежное.\r\n\r\n\r\nВ Sendmail работает одно большое приложение, а в Постфикс — компактные программы, функционирующие совокупно. Они связаны алгоритмами FIFO и сокетами Unix. Каналы обмена размещены в защищенном каталоге. К функциям программ относятся отправление/прием сетевых сообщений и локальная доставка корреспонденции. \r\n\r\nРазбиение на подсистемы хорошо тем, что неиспользуемые модули отключаются. Все демоны завершаются не сами по себе, такую команду дает master. Когда почтовый сервер простаивает, демоны, которые в данный момент не нужны, прекращают работу и не занимают память. Если они понадобятся, master-демон может запустить их снова.\r\n\r\nЗапускает и контролирует процессы утилита master. В ее конфигурационном файле master.cf записаны сведения о вспомогательных программах и очередности их запуска. Процесс master активизируется, когда система стартует, и «живет», пока она работает. Он запускает остальные модули по требованию и перезапускает те, что из-за проблем были завершены аварийно. \r\n\r\nВ приложение входит набор утилит, которые работают через командную строку. Эти утилиты заточены на решение административных задач. С их помощью вы сможете обращаться к картам, просматривать очереди, ставить в нее сообщения и извлекать их, а также модифицировать конфигурацию. У всех их есть общая характеристика — post в начале имени, так что вы легко найдете их в таблице.\r\n\r\npostsuper | Поддержание очередей администратором с правами root. Снятие и повторная отправка сообщений. \r\n---|--- \r\npostqueue | Управление очередями обычными администраторами. Если сравнить с postsuper, часть функционала урезана. \r\npostconf | Просмотр состояния переменных, входящих в конфиг. \r\npostlog | Запись информации в журналы. Пригодится при создании скриптов. \r\npostcat | Просмотр очередей. \r\npostmap | Запросы к дополнительным таблицам. Формирование вспомогательных таблиц по текстовым данным. Конверсия текста в таблицу. \r\npostlock | Работа с блокировками. \r\npostkick | Передача сигналов внутри почтового сервера. Взаимодействие скриптов с приложением. \r\nspawn | Подключение сторонних приложений для фильтрации сообщений. \r\nproxymap | Централизованные запросы к служебным таблицам. Предоставление доступа в обход ограничений chroot. \r\nsmtpd | Прием корреспонденции через порт SMTP. Проверка авторизации пользователя перед отправкой почты. \r\npickup | Сканирование каталога локальных писем. Обработка найденных файлов. \r\ncleanup | Обработка входящей почты. Добавление заголовков. Формирование адреса по картам virtual и canonical. \r\nmailq | Просмотр списка писем в очередях. \r\ntrivial-rewrite | Небольшая правка адресов. Дописывание домена и не полностью заполненного адреса. \r\nqmgr | Администратор очередей для корреспонденции, ожидающей доставки. \r\n \r\nПоддержание очередей администратором с правами root. \r\n\r\nСнятие и повторная отправка сообщений.\r\n\r\nУправление очередями обычными администраторами. Если сравнить с postsuper, часть функционала урезана.\r\n\r\nПросмотр состояния переменных, входящих в конфиг. \r\n\r\nЗапись информации в журналы. Пригодится при создании скриптов.\r\n\r\nЗапросы к дополнительным таблицам.\r\n\r\nФормирование вспомогательных таблиц по текстовым данным.\r\n\r\nКонверсия текста в таблицу.\r\n\r\nПередача сигналов внутри почтового сервера.\r\n\r\nВзаимодействие скриптов с приложением.\r\n\r\nПодключение сторонних приложений для фильтрации сообщений. \r\n\r\nЦентрализованные запросы к служебным таблицам.\r\n\r\nПредоставление доступа в обход ограничений chroot.\r\n\r\nПрием корреспонденции через порт SMTP.\r\n\r\nПроверка авторизации пользователя перед отправкой почты. \r\n\r\nСканирование каталога локальных писем.\r\n\r\nОбработка найденных файлов.\r\n\r\nОбработка входящей почты.\r\n\r\nФормирование адреса по картам virtual и canonical.\r\n\r\nПросмотр списка писем в очередях. \r\n\r\nНебольшая правка адресов.\r\n\r\nДописывание домена и не полностью заполненного адреса.\r\n\r\nАдминистратор очередей для корреспонденции, ожидающей доставки.\r\n\r\n### Как письма попадают в почтовую систему \r\n\r\n1\\. Чаще всего — через сеть. Сначала их получает в postfix SMTP-демон. Проводится проверка на спам, если эту функцию включил администратор. \r\n\r\nЗатем запускается процесс cleanup, отвечающий за зачистку. Он проверяет, правильно ли оформлено сообщение и допустимый ли у него формат. Цель — не допустить переполнение буфера, которое может быть причиной атак.\r\n\r\nTrivial-rewrite дописывает служебные заголовки и приводит адреса к стандартному виду. Они становятся такими: имя_юзера@поддомен.домен. \r\n\r\nОбработанное письмо записывается в каталог incoming, выделенный для хранения входящей очереди.\r\n\r\n2\\. Послание может быть отправлено с локальных серверов скриптами или командой, например, такой:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n```bash\necho \"text of the letter\" | mail Dragon@domain.net -s \"I wish you happiness\"\n```\n\n \r\n\r\n3\\. Письмо появилось как ответ системы. Отправителю сообщается, что его послание не удалось доставить.\r\n\r\n4\\. Письмо возникло как уведомление администратору. Сообщается, что есть проблемы c протоколом SMTP или настройки нарушены. Чтобы доставить письмо, сначала запускается процесс cleanup, а потом оно ставится в очередь. \r\n\r\nСообщения, поставленные в очередь incoming, должны быть доставлены адресатам. \r\n\r\nQueue manager — менеджер очередей. Когда приходит сигнал о прибытии новой почты, он ставит ее в активную очередь active и отправляет запрос демону trivial-rewrite. Он сообщает, локальный это адрес или удаленный. Дополнительные сведения находятся в файле Postfix transport.\r\n\r\nМенеджер очередей на основе анализа данных выбирает программы доставки. Перечислим их.\r\n\r\n * Агент Local доставляет корреспонденцию внутри системы. Несколько таких процессов запускаются одновременно.\r\n * Virtual — урезанная версия Local. Виртуальная доставка применима к п/я в формате mailbox. С *.forward и системными псевдонимами работа не предусмотрена.\r\n * SMTP подключается, если послание адресовано удаленному клиенту. Менеджер очередей передает сведения о получателе: наименование очереди, адресные данные, домен или хост. По завершении пересылки выдается ее статус, например, успешно, фатальная ошибка или временная ошибка.\r\n * LMTP доставляет корреспонденцию локальному/удаленному серверу, предназначенному для сбережения п/я. Принцип работы LMTP аналогичен SMTP, но протоколы разные.\r\n * Интерфейс Pipe mailer работает с транспортными агентами со стороны, например, с UUCP. \r\n\r\n\r\nЕсли доставка сорвалась, Queue manager отсылает это послание в директорию, выделенную отложенным сообщениям. Спустя какое-то время будет предпринята повторная проба. Если вам нужно попытаться отправить письмо раньше, запустите команду postfix flush.\r\n\r\nCorrupt — очередь, куда отсылаются сообщения, которые повреждены, не читаются или у них недействительный формат. Подозрительные данные изолируются, пока администратор не примет решение о дальнейших действиях. \r\n\r\nОчередь hold — для тех писем, которые были приостановлены. Из этого состояния их можно вывести специальной командой.\r\n\r\nQueue manager умеет функционировать в различных режимах/стратегиях, или комбинировать их. \r\n\r\n * Leaky bucket. При этой стратегии число писем в активной очереди ограничивается.\r\n * Fairness. Если не заполнена активная очередь, то берутся письма, залежавшиеся в отложенной и входящей очередях.\r\n * Slow start. Режим направлен на предотвращение заторов, которые происходят, когда получатель задерживается с обработкой запросов. Подстройка проводится путем регулирования числа попыток одновременной отправки.\r\n * Round robin. Queue manager рассортировывает по очередям корреспонденцию в соответствии с местом доставки.\r\n * Exponential backoff. Та почта, что не отправилась с первого раза, уходит в отложенную очередь. Ее тайм-аут после последующих неудачных попыток умножается на 2. Это позволяет не тратить ресурсы на нерабочие узлы.\r\n * Кэширование статуса. Queue manager работает с таблицей, в которой содержатся статусы неудачных попыток доставки.\r\n\r\n---\r\n\r\n**Нужен сервер для практики?** [Арендуйте VPS/VDS в России](/optimalnyij-xosting-dlya-telegram-bota) — root-доступ, NVMe, DDoS-защита и поддержка 24/7."}}