Несколько лет назад единственным бесплатным программным обеспечением почтового сервера, доступным в среде Linux, был Sendmail. Однако из-за недостатков Sendmail некоторые разработчики разработали несколько других программных продуктов почтового сервера. В настоящее время существует несколько вариантов бесплатных почтовых серверов или MTA (агента передачи почты), работающих в среде Linux. Наиболее распространенные из них включают Sendmail, Qmail, Postfix, exim, Zmailer и т. д. В этой статье мы надеемся подробно остановиться на характеристиках нескольких основных MTA в среде Linux, которые оказывают относительно большое влияние, а также проанализировать и сравнить их преимущества и недостатки одно за другим, чтобы у пользователей был выбор при выборе бесплатного MTA в Linux. окружающая среда в соответствии с.
Постфикс
Postfix — это продукт проекта бесплатного программного обеспечения, финансируемого IBM и разработанного Wietse Venema. Его цель — предоставить пользователям возможность выбора почтового сервера, отличного от sendmail. Postfix стремится быть быстрым, простым в управлении, обеспечивать максимальную безопасность и в то же время стараться поддерживать совместимость с почтовым сервером sendmail, чтобы соответствовать привычкам использования пользователей. Первоначально Postfix был выпущен под названием VMailer, но позже был переименован в Postfix из-за товарного знака.
Основные цели дизайна
Целью проекта Postfix является реализация почтового сервера, предоставляющего пользователям альтернативу sendmail. Цели его проектирования включают в себя:
По производительности Postfix более чем в три раза быстрее аналогичных серверных продуктов. Настольный компьютер с установленным Postfix может отправлять и получать миллионы писем в день. При проектировании Postfix используются методы проектирования веб-серверов для снижения затрат на создание процессов, а также другие методы оптимизации доступа к файлам для повышения эффективности и обеспечения надежности программного обеспечения.
совместимость. Postfix был разработан с учетом совместимости с Sendmail, чтобы упростить портирование. Postfix поддерживает файлы /var[/spool]/mail, /etc/aliases, NIS и ~/.forward. Однако в целях обеспечения простоты управления Postfix не поддерживает файл конфигурации sendmail.cf.
Безопасность и надежность. Postfix призван обеспечить надежность программы даже при чрезмерной нагрузке. Когда в локальной файловой системе нет свободного места или доступной памяти, Postfix автоматически сдастся, вместо того чтобы пытаться усугубить ситуацию.
гибкость. Структурно Postfix состоит из более чем десяти небольших субмодулей. Каждый субмодуль выполняет определенную задачу, например, получение сообщения по протоколу SMTP, отправку сообщения, доставку сообщения локально, перезапись адреса и т. д. При возникновении особых потребностей новые версии модулей могут использоваться для замены старых модулей без обновления всей программы. И функцию также легко отключить.
Безопасность. Postfix использует несколько уровней защиты для защиты локальных систем от злоумышленников. Почти каждый демон Postfix может работать под фиксированным chroot с низким уровнем привилегий. Прямого пути между сетью и чувствительными к безопасности локальными программами доставки нет — атака. Злоумышленник должен сначала взломать. через несколько других программ, прежде чем он или она сможет получить доступ к локальной системе. Postfix не доверяет даже содержимому своих собственных файлов очередей или сообщений IPC во избежание подделки. Postfix фильтрует сообщения перед выводом сообщения, предоставленного отправителем. А у программы Postfix нет set-uid.
Некоторые возможности Postfix
Поддержка нескольких доменов передачи: sendmai поддерживает пересылку сообщений между Интернетом, DECnet, X.400 и UUCP. Postfix спроектирован так, чтобы быть гибким и не требует виртуального домена (визуального домена) или псевдонима для достижения такого типа пересылки. Однако в ранних выпусках поддерживались только STMP и ограниченная поддержка UUCP, а для китайских пользователей поддержка нескольких доменов передачи бессмысленна.
Виртуальные домены. В большинстве распространенных случаев добавление поддержки виртуального домена просто требует изменения таблицы поиска Postfix. Другие почтовые серверы часто требуют нескольких уровней псевдонимов или перенаправления для достижения этого эффекта.
Контроль UCE (UCE, нежелательная коммерческая электронная почта): Postfix может ограничить, каким хостам разрешено пересылать электронные письма через себя, и поддерживает ограничение доступа к каким электронным письмам. Postfix реализует обычные функции контроля: черные списки, поиск по RBL, проверку DNS HELO/отправителя. Контентная фильтрация в настоящее время не реализована.
Табличное представление: Postfix не реализует язык перезаписи адресов, но использует расширенное табличное представление для реализации функции перезаписи адресов. Таблицы могут быть в локальных форматах файлов dbm или db. [Вырезанная страница]
Архитектура Postfix и сравнение с Sendmail
Postfix — это архитектура, основанная на полурезидентных, взаимодействующих процессах. Каждый процесс выполняет определенную задачу без каких-либо конкретных производных отношений процесса (отношения родитель-потомок). Более того, независимые процессы выполнения различных функций имеют лучшую изоляцию, чем «монолитные» программы. Кроме того, этот метод реализации имеет то преимущество, что каждая служба, такая как перезапись адреса, может использоваться любым компонентом Postfix без накладных расходов на создание процесса, а требуется только перезаписать адрес. Конечно, Postfix не единственный, который. принимает этот метод.
Postfix реализуется таким образом: резидентный главный сервер запускает демон Postfix в соответствии с командами, а демон выполняет такие функции, как отправка или получение сетевых почтовых сообщений, локальная доставка почты и так далее. Количество процессов демона определяется параметрами конфигурации, а количество запусков процесса демона (количество повторного использования) определяется в соответствии с конфигурацией. Когда время простоя достигает предела, указанного в параметрах конфигурации, он автоматически прекращает работу. . Этот метод значительно снижает затраты на создание процессов, но при этом обеспечивает хорошую изоляцию между отдельными процессами.
Цель разработки Postfix — стать заменой Sendmail. По этой причине многие части системы Postfix, такие как программа локальной доставки, могут быть легко заменены путем редактирования и изменения файлов конфигурации, таких как inetd.
Ядро Postfix реализовано более чем десятью полурезидентными программами. По соображениям конфиденциальности эти процессы Postfix взаимодействуют друг с другом через сокеты Unix или FIFO в защищенных каталогах. Несмотря на то, что при использовании этого метода конфиденциальность гарантируется, процесс Postfix не доверяет слепо данным, которые он получает таким образом.
Существует ограничение на объем данных, передаваемых между процессами Postfix. Во многих случаях единственной информацией, которой обмениваются процессы Postfix, является имя файла очереди и список получателей или некоторая информация о состоянии. После того как почтовое сообщение будет сохранено в файл, оно останется там до тех пор, пока не будет прочитано программой доставки почты.
Postfix использует некоторые общие меры, чтобы избежать потери информации: сохранение всех данных на диске с помощью вызоваlush и fsync() перед получением подтверждения. Проверьте возвращаемые результаты всех системных вызовов, чтобы избежать ошибок.
Большинство людей, создающих почтовые серверы, выберут sendmail. Справедливости ради стоит сказать, что sendmail является хорошим MTA (агентом передачи почты). Когда Эрик Оллман впервые разработал его, в первую очередь он думал об успехе доставки почты. К сожалению, Sendmai был разработан без особого внимания к проблемам безопасности, которые могут возникнуть в среде Интернета. В большинстве систем Sendmail может работать только от имени пользователя root, а это означает, что любая уязвимость может иметь очень серьезные последствия. Помимо этих проблем, Sendmail плохо работает при высокой нагрузке.
Безопасность
Postfix не обязательно запускать от имени пользователя root, достаточно, чтобы основная программа запускалась от имени пользователя root, которая генерирует процессы для управления доступом, исходящей и локальной доставкой почты. Благодаря использованию ряда модульных компонентов каждая задача выполняется отдельной программой (что упрощает аудит). Например, исходящее электронное письмо выгружается в каталог очереди, где программа «pcikup» извлекает электронное письмо и передает его программе «очистки», которая затем передает электронное письмо в «тривиальную перезапись», которая отвечает за обработку заголовок электронной почты. Наконец, если цель письма состоит в том, чтобы другие системы доставили письмо в программу «smtp». По сравнению с Sendmail, Postfix также проще настроить среду с chroot. Это достигается простым редактированием файла master.cf (обычно расположенного в /etc/postfix), и Postfix будет помещен в каталог очереди, который он определяет (обычно находится в /var/spool/postfix). Вы также можете установить ограничения процесса. для одного модуля Postfix в master.cf. Пользователи могут ограничить, от имени какого пользователя Postfix запускается. Вообще говоря, он запускается как пользователь «postfix» (концептуально этот пользователь аналогичен никому в Apache. Этот пользователь может получить доступ к определенным каталогам очередей). Еще одним важным преимуществом Postfix является ясность и простота понимания файлов конфигурации.
Сравнение с Sendmail Почтовые системы, такие как sendmail, спроектированы и реализованы по одноблочной структуре. Эта «одноблочная» программа реализует все функции. Конечно, эта структура облегчает обмен данными между различными частями системы. Но эта структура склонна к некоторым фатальным ошибкам. Почтовые системы, такие как qmail, используют иерархическую структуру для запуска процессов подмодуля с различными функциями в фиксированном порядке и выпускают их после выполнения. Этот метод обладает хорошими «изоляционными» свойствами, но увеличивает накладные расходы на создание процессов и накладные расходы на межпроцессное взаимодействие. Однако накладные расходы можно поддерживать в приемлемом диапазоне, разумно планируя порядок выполнения процессов подмодуля.
Использовать другой MTA для замены Sendmail очень затруднительно, и пользователям часто приходится тратить много времени, чтобы ознакомиться с настройкой и использованием нового MTA. С помощью Postfix вы можете воспользоваться многими существующими файлами конфигурации. Такие как (доступ, псевдонимы, virtusertable и т. д.), вам нужно просто определить их в master.cf. Кроме того, поведение Postfix очень похоже на Sendmail. Пользователи могут использовать команду sendmail для запуска Postfix.
Конечно, использование одного программного обеспечения для замены другого требует решения конкретных проблем. Частично из-за функций безопасности Postfix вы можете столкнуться с некоторыми проблемами при настройке Postfix. Наиболее типичная проблема — отправка почты пользователю root. Postfix обычно не увеличивает свои собственные привилегии (необходимые для отправки почты пользователю root) для доставки почты. Пользователям необходимо определить псевдоним для root в файле псевдонимов, например: root: someuser. Это также затрагивает некоторые модули списков рассылки, особенно SmartList. Вообще говоря, для реализации списков рассылки лучше всего использовать Majordomo, который легко настроить.
Очень заметная проблема Sendmail — проблемы с масштабируемостью и производительностью. Например, если пользователь захочет перезапускать Sendmail каждый день для автоматического обновления файла конфигурации (например, для перенаправления почты на виртуальный хост), возникнут проблемы. Sendmail генерирует новые процессы для обработки отправки и получения электронных писем. Эти процессы будут существовать до тех пор, пока передача не будет завершена, а затем Sendmail сможет завершить работу. Таким образом, ваш сценарий не сможет правильно перезапустить Sendmail. Для Postfix пользователям нужно только ввести команду postfix reload, и Postfix перезагрузит свой файл конфигурации.
Кроме того, для почтовых серверов с десятками тысяч пользователей используйте файлы для хранения совпадающих адресов электронной почты, отправленных пользователями (например, отправитель письма, отправленного Бобом, меняется на [email protected]). Для большого количества пользователей файл станет очень большим, что повлияет на эффективность работы системы. Postfix можно интегрировать с базой данных (в настоящее время поддерживает только MySQL) для хранения информации о конфигурации. Метод базы данных гораздо более масштабируем, чем файловый метод.
Соблюдая лицензию IBM на авторские права на открытый исходный код, пользователи могут свободно распространять программное обеспечение и проводить вторичную разработку. Единственное ограничение состоит в том, что изменения, внесенные в Postfix, должны быть возвращены в IBM. Потому что IBM финансировала разработку Wietse.
Сравнение с Qmail
Недостатком Qmail является то, что метод настройки несовместим с Sendmail и его нелегко поддерживать. Более того, авторская лицензия Qmail очень расплывчата и даже не распространяется вместе с программным обеспечением. Примечание автора приложения: Если вы хотите распространять собственную модифицированную версию Qmail, вам необходимо получить мое разрешение.
Qmail qmail — это бесплатно загружаемый MTA, разработанный Дэном Бернштейном. Его первая бета-версия 0.70.7 была выпущена 24 января 1996 года. Версия 1.0 была выпущена в феврале 1997 года. Текущая версия — 1.03. [Вырезанная страница]
Возможности Qmail
Безопасность Чтобы проверить безопасность Qmail, сторонники Qmail даже предложили вознаграждение в размере 1000 долларов за обнаружение уязвимостей безопасности в Qmail. Год спустя вознаграждение не было востребовано и было передано в Фонд свободного программного обеспечения. В настоящее время автор Qmail также вложил 500 долларов в поиск уязвимостей безопасности в Qmail.
Скорость: Qmail может доставлять около миллиона электронных писем в системе среднего размера. Он может обрабатывать более 100 000 электронных писем в день по сети 486 и поддерживает параллельную доставку. Qmail поддерживает параллельную доставку электронных писем и может доставлять примерно 20 электронных писем одновременно. В настоящее время узким местом доставки электронной почты является протокол SMTP. Доставка электронной почты на другой хост в Интернете через STMP занимает более 10 секунд. Автор Qmail предложил QMTP (Протокол быстрой передачи почты) для ускорения доставки почты, и он поддерживается в Qmail. Цель разработки Qmail — обеспечить возможность доставлять примерно один миллион электронных писем в день на машине 16M.
Надежность: для обеспечения надежности Qmail вернет успешный результат обработки только в том случае, если электронное письмо правильно записано на диск. Таким образом, даже если во время записи на диск произойдет сбой системы или отключение питания, электронное письмо может быть гарантировано не будет. вместо этого доставьте заново.
Особенно простое управление виртуальными доменами: существует даже стороннее дополнение под названием vpopmail для поддержки виртуальных POP-доменов. Чтобы использовать этот пакет, пользователям POP3 не обязательно иметь официальную учетную запись в системе.
Используйте ezmlm для поддержки функций списка рассылки, управляемых пользователем.
Почтовые пользователи и системные учетные записи изолированы. Предоставление пользователям почтовых учетных записей не требует настройки для них системных учетных записей, что повышает безопасность.
Sendmail против Qmail
Прежде всего: sendmail — это MTA с долгой историей развития, текущая версия — 8.10.2. Конечно, Sendmail имеет определенные гарантии с точки зрения переносимости, стабильности и отсутствия ошибок. Но в Интернете много сообщений об атаках на Sendmail, что является кошмаром для администраторов. В процессе разработки Sendmail была создана группа опытных администраторов Sendmail, и Sendmail имеет большое количество полной документации. Помимо коллекции Sendmail: книги О'Рейли по sendmail, написанной Брайаном Косталесом и Эриком Оллманом, существует большой объем документации. количество обучающих программ в Интернете, FAQ и других ресурсах. Эти большие объемы документов очень важны для эффективного использования различных функций Sendmail. Но Sendmai в настоящее время является зрелым MTA.
Конечно, у Sendmail есть некоторые недостатки. Он имеет слишком много функций, которые приводят к усложнению файла конфигурации. Конечно, создание файлов конфигурации становится намного проще при использовании макроса m4. Однако освоить все параметры конфигурации непросто. В предыдущих версиях Sendmail было много уязвимостей безопасности, поэтому администраторам приходилось быстро обновлять версию. А популярность Sendmail также делает его мишенью для атак, что имеет как преимущества, так и недостатки: это означает, что дыры в безопасности могут быть обнаружены быстро, но это также делает Sendmail более стабильным и безопасным. Другая проблема заключается в том, что конфигурация Sendmail по умолчанию обычно имеет минимальные функции безопасности, что делает Sendmail часто уязвимым для атак. Если вы используете Sendmail, вам следует убедиться, что вы понимаете значение и влияние каждой открываемой вами опции. Как только вы поймете, как работает Sendmail, установка и обслуживание Sendmail станет очень простым. С помощью файла конфигурации Sendmail пользователи могут удовлетворить все мыслимые потребности.
Qmail — это опция, разработанная и реализованная с учетом вопросов безопасности. Если вам нужно быстрое решение, например безопасный шлюз электронной почты, Qmail — хороший выбор. Файлы конфигурации Qmail и Sendmail совершенно разные. Что касается Qmail, то у него есть свой файл конфигурации. Каталог конфигурации содержит 5-30 различных файлов, и каждый файл реализует настройку разных частей (например, виртуальных доменов или виртуальных хостов и т. д.). Эти инструкции по настройке хорошо документированы в man, но структура кода Qmail не очень хороша.
Qmail намного меньше, чем Sendmail, и в нем отсутствуют некоторые функции современных почтовых серверов. В отличие от Sendmail, qmail не проверяет имя домена отправителя конверта электронной почты, чтобы гарантировать правильность имени домена. Он не обеспечивает поддержку самого RBL, но требует надстройки для его реализации. и Sendmail поддерживает RBL. Аналогично, Qmail не может отказаться от получения сообщений электронной почты, предполагаемый получатель которых не существует. Вместо этого он сначала будет получать электронные письма, а затем возвращать электронные письма, которые не принадлежат этому пользователю. Самая большая проблема Qmail заключается в обработке отправки электронных писем нескольким получателям. Если вы отправляете большое электронное письмо нескольким пользователям в одном домене, Sendmail отправит только копию электронного письма на почтовый сервер назначения. Qmail будет подключаться несколько раз параллельно, каждый раз отправляя копию пользователю. Если пользователям необходимо ежедневно отправлять большие электронные письма нескольким пользователям, использование Qmail будет тратить много трафика. Вы можете думать об этом так: оптимизация Sendmail экономит ресурсы полосы пропускания, а оптимизация Qmail экономит время. Если пользовательская система имеет хорошую пропускную способность, Qmail будет работать лучше. Если пользовательская система имеет ограниченные ресурсы полосы пропускания и ей необходимо отправлять большой объем информации из списка рассылки, Sendmail будет более эффективным. Qmail не поддерживает .forward (.forward во многих случаях очень полезен для пользователей); он не использует /var/spool/mail, а сохраняет почту в домашнем каталоге пользователя. Ниже приведены некоторые задачи, которые нелегко выполнить с помощью Qmail. Для выполнения этих задач с помощью Qmail пользователям может потребоваться реализовать их самостоятельно или использовать ненадежные модули, предоставленные сторонними производителями.
Исходный код Qmail легче понять, чем Sendmail, что является преимуществом для тех, кто хочет разобраться в механизме MTA изнутри. Qmail также должен быть более стабильным с точки зрения безопасности. Qmail имеет хорошую техническую поддержку, но он не так широко используется и имеет большую базу пользователей-администраторов, как Sendmail. Установка Qmail не так автоматизирована, как Sendmail, и требует действий вручную. Более того, документация Qmail не такая полная и богатая, как у Sendmail.
Qmail имеет меньше надстроек, чем Sendmail. Вообще говоря, администраторам с чуть меньшим опытом лучше выбрать Qmail. Qmail проще, а его специальные функции могут удовлетворить потребности обычных пользователей. Sendmail похож на офисный пакет, и 80% его функций часто не используются. Это делает Qmail более популярным в некоторых ситуациях. Он имеет некоторые более популярные и практичные функции, которых нет в Sendmail. Например, Qmail имеет встроенную поддержку pop3. Qmail также поддерживает маскировку хоста или пользователя, виртуальные домены и т. д. Простота Qmail также делает настройку относительно простой.
Qmail считается более безопасным и эффективным, чем Sendmail. Компьютер Pentium с Qmail может обрабатывать около 200 000 сообщений в день.
qmail намного проще, чем другие MTA, что в основном отражается в:
(1) Другие MTA используют независимые механизмы пересылки почты, псевдонимов почты и списков рассылки, тогда как qmail использует простой механизм пересылки, позволяющий пользователям обрабатывать свои собственные списки рассылки.
(2) Другие MTA предоставляют механизмы доставки почты быстрым и небезопасным способом и методом медленной очереди, в то время как доставка qmail инициируется появлением новой почты, поэтому ее доставка имеет только один режим: метод быстрой очереди;
(3) Другие MTA фактически включают специальную версию inetd для мониторинга средней нагрузки MTA, в то время как qmail разработал внутренний механизм для ограничения нагрузки на систему, поэтому qmail-smtpd может безопасно запускаться из inet системы.
sendmail имеет широкую коммерческую поддержку, а благодаря большой базе пользователей в Интернете имеется много потенциальной технической поддержки. Qmail имеет очень ограниченную техническую поддержку. Существует компания inter7.com, которая обеспечивает поддержку Qmail. Компания также предоставляет бесплатные дополнения, включая веб-инструмент управления QmailAdmin и поддержку виртуальных доменов через vpopmail, и даже веб-интерфейс Borrow. SqWebMail.
У Qmail есть и другие недостатки. Например, он не полностью соответствует стандартам и не поддерживает DSN. Автор считает, что DSN — умирающая технология, и VERP Qmail может выполнять ту же работу, не полагаясь на поддержку других хостов, таких как DSN. Другая проблема с Qmail заключается в том, что он не соответствует стандарту 7-битной системы и каждый раз отправляет 8-битные сообщения. Если получатель электронного письма не сможет справиться с этой ситуацией, электронное письмо будет искажено.
С точки зрения безопасности, Sendmail хуже, чем Qmail. В процессе разработки Sendmail столкнулся со многими известными уязвимостями, хотя Qmail относительно краток и лаконичен, но все же предоставляет базовые функции STMP; Комментариев к коду Qmail меньше. Приятной особенностью Qmail является поддержка дополнительного формата хранения почты на основе каталогов вместо использования одного большого файла для хранения всей почты пользователя. Если почтовый сервер пользователя выполняет множество служб POP3, этот формат хранения почты может повысить эффективность. К сожалению, сам Pine не поддерживает этот формат хранения. При необходимости для достижения этой цели можно использовать некоторые патчи.
Преимущество Qmail в том, что каждый пользователь может создать список рассылки, не имея прав root. Например, пользователь foo может создать список рассылки с именем foo-slashdot, foo-linux, foo-chickens. Чтобы обеспечить лучшие функции, существует. это инструмент под названием ezmlm (EZ Mailing List Maker), который может поддерживать различные функции Majordomo, такие как автоматическая регистрация и выход из системы, индексирование и т. д., но все это управляется CLI и требует редактирования лишь нескольких файлов. Qmail очень подходит для работы в небольших системах, которые обычно поддерживают лишь небольшое количество пользователей или используются для управления списками рассылки. Qmail быстр и прост: Qmail — лучший выбор, если вам нужна безопасность и простота настройки; Qmail можно настроить за 2 часа, тогда как Sendmail невозможно настроить за два дня.
интерник ракетной почты и т. д. созданы с использованием qmail.
ZMailer
ZMailer — это высокопроизводительная многопроцессная почтовая программа для систем Unix. [он же MTA на языке X.400], который можно бесплатно загрузить с сервера ftp://ftp.funet.fi/pub/unix/mail/zmailer/. Он также выполнен в моноблочном режиме. Почтовые системы, такие как Hotmail, созданы с использованием Zmailer.
Exim Exim — это MTA, соответствующий лицензии GPL, разработанный Кембриджским университетом. Его стиль похож на Smail 3, но он более совершенен, чем Smail 3. Последняя версия 3.15. Его основной сайт — http://www.exim.org/. Его самая большая особенность — простота настройки, но его безопасность не так хороша, как у Qmail и Postfix.
Ниже приводится сравнение характеристик нескольких MTA. Вообще говоря, Qmail и Postfix являются очень хорошими MTA. Критерии выбора часто зависят от личных предпочтений. Postfix имеет более позднюю историю развития, чем Qmail.
Зрелость MTA Функции безопасности производительность Совместимость с Sendmail модульная конструкция qmail средний высокий высокий высокий Дополнения да Sendmail высокий низкий высокий низкий x нет Postfix низкий высокий высокий да да exim средний низкий высокий средний да нет
Конечно, помимо нескольких представленных здесь MTA, доступны и другие коммерческие или бесплатные MTA.