DBMail.

June 17, 2018 MAIL EMAIL DBMAIL SQL

DBMail. Система выглядит просто очаровательно: простая для взаимодействия схема в бд, хранение всех данных там же, простая настройка альясов и форвардов, а также списков рассылки, пароли в plaintext. Есть вариант интеграции с LDAP. Всё как мы любим. Ну просто няшечка. Он умеет LDA через команду dbmail-deliver и через lmtp. Кроме того, он умеет в sieve, сам, безо всяких костыликов сбоку! Впрочем, почти никакие пользовательские почтовые клиенты в sieve не могут, не прижился он, к сожалению. Из клиентских протоколов оно умеет в imap4 и pop3 и из ssl-вариации.

Вобщем, бомба. Казалось бы, надо брать, срочно, буквально бегом. И тут как всегда возникают разные моменты и нюансы.

Первое - SQL-бэкэнд для самих сообщений. Да он несколько тянется вверх, но за счёт транзакционной природы и особенностей реализации схемы в бд, получается не очень быстро. Большая нагрузка на диск по iops, синхронные операции и тд. То есть нужно каким-то образом напрягать ДБА, чтобы он партицировал таблички. Замечу, что поскольку никакой специфики к хранению данных сам DBMail не предъявляет, то в роли DB может выступать практически любая SQL-бд: sqlite, mysql, postgresql, oracle, db2, даже mssql...

Второе - нет уведомления о том, что в почтовый ящик упало сообщение, реализуется это через команду IDLE, согласно rfc2177. Некоторые imap-реализации умеют только в INBOX, другие же (dovecot, например) умеют и во все остальные каталоги, то есть, если сообщение доставляется через lmtp или команду deliver, то клиенту с очередным сообщением IDLE приходит уведомление о том, что собдержимое его почтового ящика дополнилось новым сообщением. DBMail так не умеет, он целиком и полностью полагается на polling со стороны клиента, а по-умолчанию это 10-15 минут, в этом случае некоторые клиенты могут забывать показывать уведомления и проч. Опять же, нужно помнить, что не все клиенты уведомляют/проверяют весь список папок, некоторые проверяют только INBOX.

Подводя итоги, можно сказать, что DBMail, конечно, хорош, но его достаточно жёсткие ограничения по бэкэндам и отсутствие некоторых расширений протокола imap сокращают область его применения, это либо персональный почтовый сервер на какой-нибудь vps-ке, либо почтовик для небольшой организации, не более 50 человек (по паре гигов на почтовый ящик каждому), с бОльшим объёмом уже тягаться будет несколько сложновато, ибо необходимо учитывать вопрос резервным копированием и прочими тонкостями обслуживания БД.

Тем не менее для почтового архива/бэкапа я таки выбрал именно opensmtpd + DBMail + MySQL, ибо оно элементарно в настройке и "просто работает".

Next Post