Postfix — это бесплатный агент передачи почты (MTA) с открытым исходным кодом, который маршрутизирует и доставляет электронную почту .
Он выпущен под лицензией IBM Public License 1.0, которая является лицензией свободного программного обеспечения . Альтернативно, начиная с версии 3.2.5, он доступен по лицензии Eclipse Public License 2.0 по выбору пользователя. [2]
Первоначально написанный в 1997 году Витсе Венемой в Исследовательском центре IBM Томаса Дж. Уотсона в Нью-Йорке и впервые выпущенный в декабре 1998 года, [3] Postfix с 2023 года продолжает [обновлять]активно разрабатываться его создателем и другими участниками. Программное обеспечение также известно под прежними названиями VMailer и IBM Secure Mailer . Название Postfix представляет собой соединение слов «post» (что является другим словом для «почты») и «fix» [ требуется цитирование ] (что означает другое программное обеспечение, вдохновившее разработку Postfix).
Будучи SMTP- сервером, Postfix реализует первый уровень защиты от спам-ботов и вредоносных программ . Администраторы могут комбинировать Postfix с другим программным обеспечением, которое обеспечивает фильтрацию спама и вирусов (например, Amavisd-new ), доступ к хранилищу сообщений (например, Dovecot ) или сложные политики доступа на уровне SMTP (например, postfwd, milter-regex, policyd- масса ).
В качестве SMTP- клиента Postfix реализует высокопроизводительный параллельный механизм доставки почты. Postfix часто комбинируется с программным обеспечением для создания списков рассылки (например, Mailman ).
Postfix работает (или работал) на AIX , BSD , HP-UX , Linux , macOS , Solaris и, вообще говоря, на каждой Unix-подобной операционной системе, которая поставляется с компилятором C и предоставляет стандартную среду разработки POSIX . Это MTA по умолчанию для операционных систем macOS , NetBSD , [4] RedHat / CentOS [5] и Ubuntu . [6]
Postfix состоит из комбинации серверных программ, работающих в фоновом режиме, и клиентских программ, вызываемых пользовательскими программами или системными администраторами.
Ядро Postfix состоит из нескольких десятков серверных программ, работающих в фоновом режиме, каждая из которых обрабатывает один конкретный аспект доставки электронной почты. Примерами являются SMTP- сервер, планировщик , переписчик адресов и локальный сервер доставки. В целях предотвращения ущерба большинство серверных программ запускаются с фиксированными ограниченными привилегиями и завершают работу добровольно после обработки ограниченного числа запросов. Для экономии системных ресурсов большинство серверных программ завершают работу, когда они простаивают.
Клиентские программы работают вне ядра Postfix. Они взаимодействуют с серверными программами Postfix через инструкции по доставке почты в файле пользователя ~/.forward и через небольшие программы-шлюзы для отправки почты или запроса информации о состоянии очереди.
Другие программы предоставляют административную поддержку для запуска или остановки Postfix, запроса информации о состоянии, управления очередью или проверки или обновления файлов конфигурации.
Реализация Postfix использует безопасные подмножества языка C и системного API POSIX . Эти подмножества скрыты под уровнем абстракции, который содержит около 50% всего исходного кода Postfix и обеспечивает основу, на которой строятся все программы Postfix. Например, примитив «vstring» делает код Postfix устойчивым к атакам переполнения буфера [7] , а примитив «safe open» делает код Postfix устойчивым к атакам состояния гонки в системах, реализующих API файловой системы POSIX . Этот уровень абстракции не влияет на устойчивость к атакам кода, отличного от Postfix, например кода в системных или сторонних библиотеках.
Концептуально Postfix управляет конвейерами процессов, которые передают ответственность за доставку сообщений и уведомление об ошибках от одного процесса к другому. Вся информация о «состоянии» сообщений и уведомлений сохраняется в файловой системе. Процессы в конвейере в основном работают без централизованного управления; эта относительная автономия упрощает восстановление после ошибок. Когда процесс терпит неудачу до завершения своей части транзакции файла или протокола, его предшественник в конвейере отступает и повторяет запрос позже, а его преемник в конвейере отбрасывает незавершенную работу. Многие демоны Postfix могут просто «умереть», столкнувшись с проблемой; они автоматически перезапускаются при поступлении следующего запроса на обслуживание. Такой подход делает Postfix очень устойчивым, пока операционная система или оборудование не выходят из строя катастрофически.
Один единственный экземпляр Postfix работал со скоростью ~300 доставок сообщений в секунду [8] через Интернет и работал на стандартном оборудовании (система Dell 1850 2003 года выпуска с контроллером MegaRAID с батарейным питанием и двумя SCSI- дисками). Такая скорость доставки на порядок ниже «внутреннего» предела в 2500 доставок сообщений в секунду [8] , который был достигнут при использовании почтовой очереди на RAM-диске при доставке на «отбрасывающий» транспорт (с помощью двухъядерной системы Opteron ). в 2007).
Почтовые системы, такие как Postfix и Qmail, достигают высокой производительности за счет доставки почты в параллельных сеансах. При использовании почтовых систем, таких как Sendmail и Exim , которые осуществляют по одной доставке за раз, высокой производительности можно достичь за счет параллельной отправки ограниченных пакетов почты, так что каждый пакет доставляется отдельным процессом. Postfix и Qmail требуют параллельной отправки в разные экземпляры MTA, как только они достигают внутреннего предела производительности или пределов производительности оборудования или операционной системы.
Приведенные выше темпы доставки являются в основном теоретическими. При массовой доставке почты истинная скорость доставки в первую очередь определяется политикой получения почты получателя и репутацией отправителя.
В файле main.cf хранятся параметры конфигурации Postfix, специфичные для сайта, а файл master.cf определяет процессы демона. [9] В руководстве по базовой настройке Postfix описаны основные настройки, которые необходимо учитывать на каждом сайте, а в документе «Примеры стандартной конфигурации Postfix» обсуждаются параметры конфигурации для нескольких распространенных сред. Документ Postfix Address Rewriting описывает перезапись адресов и маршрутизацию почты. Полная коллекция документации находится в документации Postfix.
Более сложные реализации Postfix могут включать: интеграцию с другими приложениями, такими как SpamAssassin ; поддержка нескольких виртуальных доменных имен и использование баз данных, таких как MySQL , для управления сложными конфигурациями.
В исследовании, опубликованном 1 июня 2022 года компанией E-Soft, Inc., [10] примерно 34% из 800 тысяч доступных почтовых серверов использовали Postfix, что делает его вторым по популярности почтовым сервером после Exim .
Однако этот опрос представляет собой гораздо меньшую выборку, чем 4 миллиона доменов, принявших участие в опросе, объявленном Lightmeter, Inc. в декабре 2021 года. [11] Там сканирование адресного пространства IPv4 (исключая определенные военные диапазоны) показало, что из 4 миллионов ответивших доменов 55% использовали Postfix, 17% — Exim .
В более позднем опросе Shodan , включавшем 5 миллионов сервисов на порту 25, [12] Postfix был обнаружен 1,4 миллиона раз, Exim — 0,4 миллиона раз (при этом Exim был обнаружен 1,1 миллиона раз на портах 465 и 587).
Примечание: эти опросы, по-видимому, охватывают разные группы населения, и сканирование Shodan часто блокируется.