Введение
Агент передачи почты для Unix
qmail — это агент передачи почты (MTA), работающий в операционных системах Unix. Он был разработан Дэниелом Дж. Бернштейном, начиная с декабря 1995 года, как более безопасная альтернатива популярной программе Sendmail. Изначально распространявшийся как свободное программное обеспечение, исходный код qmail впоследствии был передан автором в общественное достояние.
Безопасность
Когда qmail был впервые опубликован, он стал первым агентом передачи почты, разработанным с учетом требований безопасности; с тех пор появились и другие MTA, ориентированные на безопасность. Самый популярный предшественник qmail, Sendmail, изначально не проектировался с упором на безопасность и, как следствие, постоянно подвергался атакам. В отличие от Sendmail, qmail имеет модульную архитектуру, состоящую из взаимонедоверительных компонентов; например, компонент SMTP-слушателя qmail работает с другими учетными данными, чем менеджер очереди или SMTP-отправитель. Кроме того, qmail был реализован с использованием безопасной замены стандартной библиотеки C, благодаря чему он не подвержен переполнению стека и кучи, атакам с использованием строк форматирования или гонкам данных во временных файлах.
Выступление
Когда qmail был выпущен, он значительно превосходил Sendmail по скорости, особенно при работе с большими объемами почты, например, на серверах рассылок. Изначально qmail разрабатывался как средство для управления крупными списками рассылки.
Простота
На момент появления qmail, настройка Sendmail была печально известна своей сложностью, в то время как qmail было легко настраивать и внедрять.
Модульность
qmail – это почти полностью модульная система, в которой каждая основная функция отделена от остальных. Легко заменить любую часть системы qmail другим модулем, при условии, что новый модуль сохраняет тот же интерфейс, что и исходный.
Награды за безопасность и уязвимость Георгия Гунинского
В 1997 году Бернштейн предложил вознаграждение в 500 долларов США первому человеку, который опубликует подтвержденную уязвимость в безопасности в последней версии программного обеспечения. В 2005 году исследователь безопасности Георгий Гунинский обнаружил переполнение целого числа в qmail. На 64-битных платформах, в конфигурациях по умолчанию при наличии достаточного объема виртуальной памяти, передача огромного количества данных определенным компонентам qmail может привести к удаленному выполнению кода. Бернштейн утверждает, что это непрактичная атака, поскольку ни одна реальная установка qmail не будет уязвима. Настройка ограничений ресурсов для компонентов qmail снижает серьезность уязвимости. 1 ноября 2007 года Бернштейн увеличил вознаграждение до 1000 долларов США. 19 мая 2020 года компания Qualys опубликовала рабочий эксплойт для уязвимости, обнаруженной Гунинским, однако авторы эксплойта заявили об отказе в выплате вознаграждения из-за дополнительных условий, необходимых для его эксплуатации.
Частота обновлений
Основной пакет qmail не обновлялся уже много лет. Новые функции изначально добавлялись сторонними патчами, из которых наиболее важные на тот момент были собраны в единый мета-патч, названный netqmail.
Соответствие стандартам
qmail не разрабатывался как прямая замена Sendmail и не ведет себя идентично Sendmail во всех ситуациях. В некоторых случаях эти различия в поведении стали причиной критики. Например, подход qmail к сообщениям о недоставке (формат QSBMF) отличается от стандартного формата уведомлений о статусе доставки, определенного IETF в RFC 1894, который впоследствии был преобразован в проект стандарта RFC 3464 и рекомендован в спецификации SMTP. Некоторые функции qmail критиковались за усложнение пересылки почты; например, механизм доставки с использованием подстановочных знаков в qmail и его конструкция безопасности не позволяют отклонять сообщения от подделанных или несуществующих отправителей во время SMTP-транзакций. В прошлом эти различия могли приводить к иному поведению qmail при использовании в качестве спам-ретранслятора, хотя современные методы доставки спама в меньшей степени зависят от обработки сообщений о недоставке.
Статус авторских прав
qmail был передан в общественное достояние в ноябре 2007 года. До ноября 2007 года qmail распространялся без лицензионных отчислений, но с разрешением на распространение в исходном коде или в предварительно скомпилированном виде ("пакет var qmail") только при соблюдении определенных ограничений (в основном касающихся совместимости). Этот необычный способ лицензирования делал qmail не полностью свободным согласно некоторым критериям (например, DFSG) и вызывал споры. qmail – единственный широко используемый агент передачи сообщений (MTA), находящийся в общественном достоянии.