qmail

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
qmail
Тип

Почтовый сервер

Разработчик

Дэниел Джулиус Бернштейн

Написана на

C

Операционная система

Unix

Последняя версия

1.03 (15 июня, 1998)

Тестовая версия

netqmail 1.06 (11 ноября, 2007)

Лицензия

Общественное достояние

Сайт

http://cr.yp.to/qmail.html

qmail — MTA (агент доставки почты), который работает под Unix. Он был написан Дэниелом Бернштейном как более безопасная замена для популярного MTA Sendmail.

Особенности[править | править вики-текст]

Безопасность[править | править вики-текст]

На момент выпуска первой версии, qmail был первым MTA, созданным с учётом требований безопасности; с тех пор были созданы другие безопасные MTA. Два наиболее популярных предшественника qmail — Sendmail и Smail — не были созданы с оглядкой на безопасность и в результате являлись постоянным целями для атак. В отличие от этих пакетов qmail имеет модульную архитектуру, состоящую из не доверяющих друг другу компонентов; например компонент qmail, принимающий SMTP-соединения, запускается с UID, отличным от UID’ов для менеджера очереди или модуля, отсылающего почту. Также, в qmail стандартная библиотека Си была заменена на безопасный аналог, и как результат, qmail не подвержен переполнениям стека и кучи, атакам на формат строки или состоянию гонок (англ. race conditions) с временными файлами.

Производительность[править | править вики-текст]

Во время первого выпуска qmail был значительно быстрее sendmail, особенно в случаях обработки больших объёмов почты, таких как сервера списков рассылки.

Простота[править | править вики-текст]

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

Нововведения[править | править вики-текст]

qmail поддерживает некоторые нововведения в сфере электронной почты (автором некоторых является Bernstein, некоторых — нет):

Maildir
Bernstein придумал для qmail формат Maildir, в котором каждое почтовое сообщение хранится в отдельном файле. В отличие формата Mbox — стандарта de facto, который хранит все сообщения в одном файле, Maildir позволяет избежать множества проблем с блокировками и параллелизмом, также, он безопасно может работать поверх NFS. qmail может также доставлять почту и в Mbox-ящики.
Имена ящиков с использованием шаблонов
В qmail была представлена концепция контролируемых пользователем шаблонов (wildcards). Почта, приходящая на адреса вида «пользователь-wildcard» доставляется в отдельные ящики, позволяя пользователю публиковать несколько почтовых адресов, например, один для списка рассылки, другой — для деловой переписки и третий — для публикации в общедоступных местах. Эта функция не требует настройки на стороне сервера, что позволяет пользователю самому управлять своим адресным пространством. Кроме того, эта функция используется некоторыми менеджерами списков рассылки, для управления виртуальными доменами и пр.

Также, в qmail реализованы QMTP- и QMQP-протоколы.

Разногласия[править | править вики-текст]

qmail был разработан в качестве критического ответа Sendmail, крайне популярной и до некоторой степени любимой части программного обеспечения Unix. Бернштейн, автор qmail, не особо сдерживался в описании недостатков в дизайне Sendmail и превосходящих характеристик qmail, и при этом он не старался изо всех сил копировать поведение Sendmail, которое в то время было стандартом de facto в области доставки Интернет-почты. Как результат, qmail подвергался необычно тщательному исследованию.

Награда за нахождение уязвимости Георгием Гунински[править | править вики-текст]

Бернштейн предложил награду в US$500 первому, кто опубликует поддающуюся проверке уязвимость в последней версии программы.[1]

В 2005 году специалист в области безопасности Георгий Гунински обнаружил целочисленное переполнение в qmail. На 64-разрядных платформах в определённых конфигурациях с сомнительной вероятностью существования на реальной системе (включая деактивированные ограничения ресурсов и необычайно большие размеры доступной виртуальной памяти), доставка огромных количеств данных к некоторым компонентам qmail может привести к удалённому выполнению произвольного кода. Бернштейн оспаривает осуществимость этого метода, используя в качестве аргумента отсутствие в реальности инсталляций qmail, восприимчивых к данной атаке. Настройка ограничений ресурсов для компонентов qmail уменьшает степень подверженности этой атаке.[2]

1 ноября 2007 года Бернштейн увеличил размер вознаграждения до US$1000.[3] В слайд-презентации на следующий день Бернштейн сообщил, что после десяти лет существования qmail-1.03 имеется 4 известных ошибки («known bugs»), ни одна из которых не является дырой в безопасности («security hole»). Он охарактеризовал ошибку, найденную Гунински, как потенциальное переполнение непроверенного счётчика («potential overflow of an unchecked counter»). «К счастью, рост счетчика был ограничен памятью и следовательно конфигурацией, но это было чистой удачей.» («Fortunately, counter growth was limited by memory and thus by configuration, but this was pure luck.»)[4]

Частота обновлений[править | править вики-текст]

В отличие от конкурентов, Postfix и Sendmail, основной пакет qmail не обновлялся много лет.[5] Новые возможности обеспечиваются сторонними патчами, такими как netqmail. Это выгодно для некоторых пользователей из-за того, что не нужно постоянно устанавливать обновления, и является проблемой для других пользователей, в частности для тех, кто хочет использовать механизмы аутентификации, которые появились после последнего выпуска qmail.

Соответствие стандартам[править | править вики-текст]

qmail был разработан как замена для Sendmail, но не ведёт себя точно так же как Sendmail во всех ситуациях. В некоторых случаях эти различия в поведении являются основанием для критики. Например, подход qmail к обработке сообщений о недоставке (формат под названием QSBMF) отличается от рекомендованного IETF в RFC 1994. Кроме того, некоторые функции qmail подвергались критике за введение сложностей в доставку почты; например, механизм шаблонов в адресах и безопасный дизайн не позволяют ему отвергать сообщения для несуществующих пользователей во время SMTP-сессии. В прошлом эта особенность могла использоваться для компрометации qmail-узла как источника спама, тем не менее, сегодня такие техники рассылки спама уже не применяются.

Ситуация с лицензией[править | править вики-текст]

Daniel J. Bernstein сделал qmail общественным достоянием (public domain) в ноябре 2007 года.[6][7] До этого момента qmail был программой без лицензии, что гарантировало право на распространение в виде исходного кода или прекомпилированной форме («var-qmail package») при условии соблюдения некоторых условий, главным образом относящихся к совместимости.

qmail является единственным широко распространённым MTA, находящимся в общественном достоянии.

Примечания[править | править вики-текст]

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]