Dovecot

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 10:19, 26 мая 2017.
Dovecot
Dovecot.png
Создатели: Timo Sirainen
Разработчики: Timo Sirainen and contributors
Выпущена: July 2002; 17 years ago (2002-07)
Постоянный выпуск: 2.2.29.1 / 12 April 2017 года; 2 years ago (2017-04-12)[1]
Написана на: C
Операционная система: UNIX-подобная
Тип ПО: POP3 и IMAP сервер
Лицензия: Mostly MIT and GNU LGPL v2[2]
Веб-сайт dovecot.org

Dovecot - свободный POP3 и IMAP сервер, разрабатываемый с упором на безопасность, гибкость настройки и быстродействие. Он поддерживает основные форматы почтовых ящиков: mbox и Maildir.

Особенности сервера

  • Поддержка форматов почтовых ящиков mbox и Maildir, а также собственные форматы dbox и Cydir
  • Высокое быстродействие благодаря индексации содержимого ящиков
  • Большое количество поддерживаемых механизмов хранения аутентификационной информации (включая LDAP) и самой аутентификации (поддерживается SSL).
  • Собственная реализация SASL. Postfix 2.3+ и Exim 4.64+ могут аутентифицироваться напрямую через Dovecot.
  • Полная поддержка IMAP ACL для гибкой настройки прав пользователей
  • Поддержка общих ящиков и папок (shared mailboxes and folders)
  • Расширяемость при помощи плагинов
  • Собственный MDA с поддержкой Sieve
  • Строгое следование стандартам — Dovecot один из немногих кто проходит тест на соответствие всем стандартам IMAP [Источник 1]
  • Возможность модификации индексов с нескольких компьютеров — что позволяет ему работать с NFS и кластерными файловыми системами
  • Поддерживает различные виды квот
  • Поддержка различных ОС: Linux, Solaris, FreeBSD, OpenBSD, NetBSD и Mac OS X
  • Простота настройки.

Возможности

  • Полная поддержка IMAP4rev1 и POP3. Поддерживаются протоколы IPv6, SSL и TLS.
  • Поддерживает несколько широко используемых IMAP-расширений, включая SORT, THREAD и IDLE.
  • Общие почтовые ящики полностью поддерживаются в v1.2 +. Более старые версии также поддерживают настраиваемые администратором ACL-файлы.
  • Квота Maildir ++ поддерживается, но жесткая квота файловой системы может быть проблематичной.
  • Dovecot обычно используется с Linux, Solaris, FreeBSD, OpenBSD, NetBSD и Mac OS X

Процессы Dovecot

Основные процессы Dovecot

Dovecot разбит на несколько процессов, где каждый процесс делает только одну вещь. Частично это объясняется тем, что он делает код более чистым, но также и потому, что он позволяет настраивать различные привилегии для каждого процесса. Наиболее важными процессами являются:

  1. Master process (dovecot)
  2. Login processes (imap-login, pop3-login)
  3. Authentication process (dovecot-auth)
  4. Mail processes (imap, pop3)

Master process

Этот процесс поддерживает работу всех остальных процессов. Если дочерний процесс умирает, другой автоматически перезапускается. Он всегда работает от имени root, если только вы не запускаете все под одним обычным UID. Основной процесс считывает файл конфигурации и экспортирует настройки в другие процессы через переменные среды Все протоколирование также проходит через master process. Это позволяет избежать проблем с поворотными файлами журналов, поскольку существует только один процесс для отправки сигнала о повторном открытии файла журнала. Кроме того, запись в тот же файл журнала (если не используется syslog) не обязательно безопасна для одновременного выполнения нескольких процессов. Выполнение процесса ведения журнала через master process также дает несколько преимуществ с точки зрения безопасности и надежности: во всех строках журнала может быть указано имя процесса и имя пользователя, который вошел в систему, без возможности подделывания. По умолчанию Dovecot позволяет непривилегированным процессам писать 10 строк в секунду, прежде чем он начнет задерживать чтение своего ввода, что в конечном итоге приводит к тому, что плохо работающий процесс начинает блокироваться при записи в stderr вместо того, чтобы "есть" весь процессор и дисковое пространство.

Login processes

Login processes реализуют требуемый минимум протоколов IMAP и POP3, прежде чем пользователь войдет в систему успешно. Для обработки протоколов IMAP и POP3 существуют отдельные процессы (и двоичные файлы). Эти процессы выполняются с наименьшими возможными привилегиями. К сожалению, модель безопасности по умолчанию UNIX по-прежнему позволяет им делать гораздо больше, чем им было бы нужно: принимать новые подключения в сокете, подключаться к новым сокетам UNIX, читать и записывать в существующие файловые дескрипторы.

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

После получения успешного ответа аутентификации от процесса аутентификации, процесс входа в систему отправляет файловый дескриптор в мастер-процесс, который создает новый почтовый процесс и передает в него fd. Прежде чем сделать это, главный процесс проверяет в процессе аутентификации, что аутентификация действительно была успешной.

Login processes обрабатываются SSL / TLS соединениями полностью. Они проксируют соединение с почтовыми процессами на протяжении всего времени соединения. Таким образом, если в библиотеке SSL обнаружено отверстие безопасности, аутентифицированный пользователь по-прежнему не может исполнить программу вне процесса входа в систему.

Authentication process

Authentication process обрабатывает все, что связано с действительной аутентификацией: механизмы аутентификации SASL, поиск и проверка паролей и поиск пользовательской информации.Он прислушивается к двум разным типам подключений: ненадежные подключения клиентов аутентификации (из процессов входа в систему) и мастер-соединения (из мастер-процесса, но также из Dovecot LDA). Клиентским соединениям разрешено только проверять подлинность. Ведущим соединениям разрешено спрашивать, был ли успешно выполнен запрос на аутентификацию с заданным идентификатором, а также для поиска пользовательской информации на основе имени пользователя. Эта функция поиска пользователя используется Dovecot LDA. Каждое клиентское соединение сообщает свой идентификатор процесса процессу аутентификации во время соединения. Если соединение с тем же самым PID уже существует, регистрируется ошибка, и новому соединению отказывают. Хотя это делает DoS-атаки возможными, это не останется незамеченным долгое время. Для блокировки паролей и пользовательских баз данных (например, MySQL) используются отдельные «рабочие процессы». Изначально только один из них существует, но при необходимости создается больше. PAM может быть настроен на использование рабочих процессов вместо того, чтобы делать разветвление непосредственно, но в настоящее время это не сделано по умолчанию, и могут быть проблемы, связанные с ним.

Mail processes

Этот процесс обрабатывает почту после входа, используя привилегии вошедшего в систему пользователя.

Поддержка Mercurial

Mercurial - кроссплатформенная распределённая система управления версиями, разработанная для эффективной работы с очень большими репозиториями кода. В первую очередь она является консольной программой. Значительное количество проектов по разработке свободного программного обеспечения использует Mercurial в качестве основной системы контроля версий.

Безопасность

В архитектуре Dovecot большое внимание уделяется безопасности.

Автор предлагает €1000 первому, кто обнаружит удалённую уязвимость в Dovecot, которую можно эксплуатировать.[Источник 2]

За 3 года не было найдено ни одной проблемы, которую можно считать удалённой уязвимостью.

Источники

  1. Imap Wiki:сайт. URL: http://imapwiki.org/ImapTest/ServerStatus (дата обращения: 19.05.2017)
  2. Dovecot Security:сайт. URL: https://www.dovecot.org/security.html (дата обращения: 19.05.2017)

Примечания

  1. Sirainen, Timo (12 April 2017). "v2.2.29.1 released". Retrieved 13 April 2017. 
  2. "COPYING.LGPL file in dovecot 7repository". Retrieved 2016-12-03. 

Ссылки/Литература