понедельник, 28 декабря 2015 г.

Dovecot: немного теории и первоначальные настройки

Почтовые серверы используют протокол SMTP для взаимодействия между собой и доставки почты. Почтовые клиенты (например Outlook или Thunderbird), как правило, используют SMTP для отправки почты. Тем не менее, SMTP не предназначен для получения почты, только для отправки. Таким образом, MTA (mail transfer agents), которые занимаются транспортировкой писем, полученных от клиентов, не имеют ничего общего с получением почты.

Для получения почты используются  POP3 и IMAP. При этом IMAP является гораздо более сложным протоколом. POP3 ждет, пока пользователь успешно залогинится, и затем
загружает непрочитанные входящие сообщения. В зависимости от запроса клиента, переданные пользователю сообщения удаляются, или отмечаются как прочитанные.
В свою очередь IMAP сервер хранит все письма, следовательно рекомендуется устанавливать квоту, чтобы пользователи периодически очищали ящик. Когда пользоватесь создает



папки для сортировки почты, сервер IMAP сохраняет их структуру, а также дает возможность производить поиск по отправителю или заданному отрывку текста, помечать письма как прочитанные, непрочитанные, неотвеченные и создавать собственные пометки, создавать общие папки, к которым могут получить доступ другие пользователи.

Сервер IMAP позволяет пользователю использовать свой почтовый ящик с некскольких компьютеров без необходимости синхронизироват данные между ними (читай: видит одни и те же письма и структуру папок).

Работа с IMAP создает ряд сложностей: 1. Производительность. С увеличением количества пользователей существенно возрастает нагрузка на сервер, за счет производимых на нем операций поиска или копирования писем. 2. Доступность. С ростом размера инфраструктуры растет потребность в организации высокой доступности почтовых сервисов в той или иной форме. 3. Хранилище. Хранилище почты можнет значительно разрастаться, что требует соотвестсвующей системы хранения данных. 4. Квоты. Требуется расчет квот, для того, чтобы сервер мог стабильно функционировать. 5. Правовые вопросы. В некоторых случаях, компрометация почты на севере может быть предметом уголовного преследования, что следует иметь ввиду.

Не рекомендуется собирать Dovecot из исходников самостоятельно. В первую очередь следует установить следующие пакеты: dovecot-core (основной сервер и утилиты командной строки), dovecot-common (файлы необходимые для IMAP, POP3, LDA компонентов dovecot), dovecot-imapd, dovecot-pop3d, dovecot-lmtpd, dovecot-managesieved (сервер, позволяющий пользователям фильтровать входящие сообщеия с помощью скриптов), dovecot-sieve (поддержка фильтров). Для интеграции с LDAP и SQL нужны пакеты dovecot-ldap, dovecot-mysql, dovecot-pgsql

Порты 110 (POP3) и 143 (IMAP) должны быть открыты на сервере.

Для того, чтобы проверить, опознает ли dovecot корректно учетную запись пользователя, можно воспользоваться командами doveadm auth test <username> и doveadm user <username>

Для проверки работы POP3 и IMAP можно воспользоваться следующими наборами команд:
telnet localhost 110
USER <username>
PASS <password>
quit

telnet localhost 143
a login <username> <password>
a logout

POP3 - простой и надежный. IMAP - мощный и гибкий. Dovecot работает с обоими протоколами параллельно.

Принцип работы POP3: вход на сервер, просмотр списка сообщений, передача сообщений пользователю, удаление сообщений, выход с сервера. Используется только порт 110.

Требует сравнительно мало северных ресурсов и прост в настройке. Единственный выбор, который остается у пользователя: удалаять или не удалять сообщения с сервера.

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

Сессию POP можно легко воспроизвести вручную:
telnet <mail_server> 110 - подключаемся к серверу
USER - вводим имя пользователя
PASS - вводим пароль
LIST - получить список сообщений
RETR <номер> - загрузить  собщение с соответствующим номером
DELE <номер> - пометить на удаление сообщение с выбранным номером. Окончательно сообщение будет удалено после выхода (logout)
RSET - отменить пометку на удаление
TOP <номер> <количество_строк> - получить первые n строк сообщения
NOOP - позволяет поддерживать соединение открытым
QUIT - выход

В отличие от  POP3, IMAP намного более сложен. Он поддерживает создание поддиректорий на сервере (включая директории доступные другим пользователям), сложные поисковые запросы и загрузку сообщений на сервер. Согласно исходой концепции, сообщения передаются клиенту только на то время, когда к ним осуществляется доступ и хранятся только временно (аналогично веб-страницам), т.е. вся почта остается на сервере, что позволяет нескольким клиентам получать доступ к почте параллельно. Изначально IMAP разработан для работы онлайн в реальном времени. Соответственно, при медленном соединении, получение почты может быть медленным. Отдальные почтовые программы могут хранить сообщения с IMAP сервера локально.

С одной стороны хранение сообщений требует большого объема хранилища, но с другой стороны, резервного копирования сервера достаточно, чтобы обеспечить сохранность почты пользователей (за исключением исходящих сообщений).

Стадии IMAP сессии.
-Not authenticated - стадия между подключением и успешной аутнентификацией.  Разрешено ограниченное число команд, например STARTLS, LOGIN, LOGOUT, NOOP
-Authenticated - пользователь аутентифицировался, но еще не выбрал папку. В этой стадии можно получать информацию о существующих папках, создавать или удалять их, но не нельзя сохранять или читать письма.
-Selected - пользователь выбрал директорию командой SELECT, EXAMINE или STATUS. Теперь он может выполнять команды, применимые к письмам в этой директории.
-Logout - пользовтель отправил команду LOGOUT. Только после этого сервер удаляет все сообщения, помеченные на удаление.

Нормальная сессия IMAP всегда переключается между состояниями "Authenticated" и "Selected", следовательно не все команды доступны на постоянной основе. Сессия IMAP поддерживается постоянно, по аналогии с FTP, в отличие от HTTP, где каждый запрос отправляется индивидуально. Как правило, клиент проверят наличие новых писем каждые несколько минут, но сервер также может уведомлять о получеии письма. Такой режим является предпочтительным, т.к. потребляет меньше серверных ресурсов.

Следует обратить внимание, что каждая открытая IMAP-сессия в dovecot требует от 1.5 до 2 мб оперативной памяти. Для POP3 это число в 10 раз меньше. Т.е. сервер с 4 ГБ оперативной памяти может обслуживать порядка 2500 пользователей одновременно, в то время как для POP3 количество пользователей составляет порядка 25000.

Файлы конфигурации: /etc/dovecot/dovecot.conf и /etc/dovecot/conf.d/*
Закоментированные строки (#) содержат значения по умолчанию (следует раскомментировать только в случае, если нужно устровить значение отличное от значения по умолчанию).

Утилиты для работы с файлами конфигурации:
-doveconf - показывает действующую конфигурацию, состоящую из значении в конфиг. файлах и дефолтных значение
-doveconf -n - показывает все параметры текущей конфигурации которые отличаются от дефолтных
-doveconf -N - показывает все параметры текущей конфигурации, даже если они установлены по умолчанию
-doveconf -d - показывает дефолтные значения всех параметров (игнорируя текущую конфигурацию)

Можно просматривать отдельные параметры или секции, например:
dovecot mail_plugins
dovecot plugin

В файл конфигурации автоматически включаются файлы в /etc/dovecot/conf.d/* а также /etc/dovecot/local.conf, если он существует. Таким образом, все необходимые значения можно указать в /etc/dovecot/local.conf, однако изначально рекомендуется вносить изменения непосредственно в конфигурационные файлы, чтобы избежать ошибок.
Все изменения, сделанные в конфигурации можно легко сохранить командой doveconf n > local.conf.

Насколько подробно будут вестись логи можно настроить в файле 10-logging.conf, параметры: auth_verbose, auth_debug, mail_debug
Чтобы отобразить в логах процессы  POP3 и IMAP в таком виде, чтобы были видны имена пользователей, IP адреса, SSL/TSL статус и выполненые команды IMAP, следует добавить в /etc/dovecot/dovecot.conf строку verbose_proctitle=yes.

На ранних этапах настройки dovecot следует сделать следущие настройки:
-Настроить директории, в которых будет храниться почта можно в файле 10-mail.conf, параметр mail_location.
-Настроить символ, который будет разделять иерархические уровни (hierarchy levels) папок IMAP. По умолчанию это точка (.), однако рекомендуется использовать слэш (/), т.к. точка может использоваться в именах пользователей, что может привести к нежелательным последствиям. Файл 10-mail.conf, параметр separator
-Решить должны ли папки IMAP находиться ниже INBOX в иерархии или они могут быть на одном уровне. Файл 10-mail.conf, параметр prefix. Если все личные папки являются
поддиректориями INBOX, все личные папки можно "схлопнуть" в одну, а также удобнее разделять личные и общие папки. Параметр prefix должен закачиваться разделителем
(т.е. INBOX. или INBOX/ )

Названия папок на сервере (входящие, исходящие и т.п.) определяются в файле 15-mailboxex.conf

Источник: Peer Heinlein - Dovecot: POP3/IMAP servers for enterprises and ISPs (root's reading)

Комментариев нет:

Отправить комментарий