LINUX.ORG.RU
ФорумAdmin

Хочу выбрать подходящий IMAP-сервер (dovecot?)


0

0

Здравствуйте, господа.

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

Итак, первая и основная "хотелка": хочу чтобы IMAP-сервер хранил письма в файловой системе и делал как можно меньше предположений относительно того, как они туда попадают, модифицируются и удаляются оттуда. Т.е., грубо говоря, чтобы положить письмо в почтовый ящик пользователя мне нужно было бы просто скопировать файл с этим письмом в соответствующую папку, и удалить его - аналогично (ну и конечно, чтобы сам сервер это всё умел делать по IMAP-командам от клиентов). При этом, чтобы файл мог являться хард- или даже симлинком на другой файл, и IMAP-сервер этот факт бы нисколько не смущал. Фактически хотелось бы, чтобы IMAP-сервер представлял собой своего рода шлюз из файловой системы в IMAP, по возможности с минимумом оверхеда. Прочитав по теме, нашёл, что примерно такую схему хранения информации предполагает формат Maildir и его модификации. Но вот с точки зрения его реализаций у меня закрались сомнения такого рода: все серверы, поддерживающие этот формат (а я смотрел описания двух - курьер и dovecot, даже не знаю есть ли другие), не ограничиваются только файлами с письмами, а хранят ещё где-либо дополнительную служебную информацию. И если поместить файл или линк на него в нужный каталог - проблема не большая, то синхронизировать ещё и какие-то индексные файлы в соответствии с добавленным или удаленным письмом я вряд-ли сумею. А вот, к примеру, Dovecot LDA "takes mail from an MTA and delivers it to a user's mailbox, while keeping Dovecot index files up to date". Даже если Dovecot сам в состоянии обнаружить сторонние изменения файловой системы и перестроить свои индексы, не будет ли это слишком затратной операцией для того, чтобы строить на этом основной поток почты? Ответа на этот вопрос мне найти не удалось. Если кто имел плотный опыт общения с этими зверями, скажите, можно ли так делать, или это не наш метод?

На случай если кто-то не может взять в толк, зачем такое может понадобиться, опишу задачу целиком: имеется множество пользователей со своими индивидуальными учетными записями (логинами, виртуальными или нет - не так важно). Почтовых адресов у этих пользователей (в данной задаче) нет. Имеется также множество ролевых почтовых адресов, типа info@..., support@... и т.д. Почта, приходящая на эти адреса, попадает в систему и раскладывается всем пользователям в соотвтетсвии с установленными для них правилами. Отправленная пользователями - тоже. То есть раскладываются не просто в inbox, а по папкам этих пользователей. Естественно, может оказаться, что какое-то письмо конкретному пользователю вообще не попадает (нет соответствующего правила), но чаще получается так, что одно входящее письмо попадает не просто всем нескольким десяткам пользователей, но и ещё в пять-десять тематических папок у каждого из них. Поэтому мне очень хочется, чтобы почтовый сервер понимал линки, иначе легко получается сотня-две копий одного и того же письма. Shared mailboxes, которые умеет Dovecot, не решают проблему, потому что в случае их использования письмо, удаленное одним пользователем, удаляется у всех, а это недопустимо.

Сейчас такая система работает под оффтопиком, т.е. под Microsoft Exchange, но с увеличением количества сообщений эта система становится всё более неуправляемой. Кроме того, в его новых версиях уже не работают "линки", исключающие многократное дублирование одного и того же письма. В старых оно хоть и делалось через ж.пу, но реально работало. В принципе, гейт FS<->IMAP меня бы устроил и под виндой, даже больше, чем под юниксом (софт проще переделывать), но единственное подобие стандарта на это - Maildir - принципиально под виндой не жилец, а с "нестандартом" второй раз связываться не хочется.

Спасибо, что дочитали :-)

вроде как в maildir есть cur и new каталоги, если в new положишь, то потом письмо будет обрабатано и индексы созданы

dimon555 ★★★★★
()

>иначе легко получается сотня-две копий одного и того же письма.

quota на ящик и пусть пользователь решает, что ему хранить, а что удалить

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

> в maildir есть cur и new каталоги, если в new положишь, то потом письмо будет обрабатано

... и положено в cur, т.е. в inbox пользователя. А мне надо по папкам раскладывать, причем по-хитрому.

shamus24
() автор топика
Ответ на: комментарий от shamus24

>А мне надо по папкам раскладывать, причем по-хитрому.

managesieve может пусть раскладывает

dimon555 ★★★★★
()
Ответ на: комментарий от shamus24

ещё .forward file бывает, а ещё можно хитрые правила доставки для MTA написать

dimon555 ★★★★★
()

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

доки чтоли почитайте, в последнем SP архивация работает из коробки.

>Shared mailboxes, которые умеет Dovecot, не решают проблему, потому что в случае их использования письмо, удаленное одним пользователем, удаляется у всех, а это недопустимо

ну так не давайте прав на удаление.

borisych ★★★★★
()

хардлинки делай.

Довекот вполне подойдёт, только я не уверен на счёт quota-плагина. В кокументации не особо раскрыта тема в какие моменты происходит переиндексация содержимого ящиков.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Хотя, наверно, и симлинки переварит, попробуй.

true_admin ★★★★★
()

Спасибо всем отписавшимся, я здесь кратко отвечу всем.

> quota на ящик и пусть пользователь решает, что ему хранить, а что удалить

Если бы это было решением, уже давно было бы сделано и забыто.

> managesieve может пусть раскладывает

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

> доки чтоли почитайте, в последнем SP архивация работает из коробки

Последний SP для Exchange, надо полагать? Во-первых, когда я интересовался этим вопросом, архивация была только в Exchange 2010 beta, который ещё не в production, но даже если эту фичу уже прикрутили и к выпускающемуся Exchange 2007, это всё равно и близко не то, что Single Instance Store, и вообще непонятно для чего оно придумано, ибо проблем не решает вообще никаких, и об этом во всех блогах не писал только ленивый.

> ну так не давайте прав на удаление

Гениально. А если пользователю нужно удалить сообщение, но чтобы сообщение удалилось только у него, а не у всех?

> В кокументации не особо раскрыта тема в какие моменты происходит переиндексация содержимого ящиков

Та отож. Я больше всего боюсь, что даже если оно с виду и будет работать как надо, когда я буду пробовать и тестировать, то в реальной работе выяснится, что перестроение всяческих индексов по причине добавления файла в mailbox -- очень затратная операция и сведет на нет все преимущества.

> dovecot умеет все

Аминь. Пошел пробовать :-)

shamus24
() автор топика

Неспособность кратко описать задачу хоть о чем-то, но говорит. Написать пояснение "зачем такое может понадобиться" и нифига им не пояснить - это сильно.

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

Непонятно, кто будет "линки" создавать, вы - вручную? нафига это надо? заняться нечем? Для каждого из стотысячмильенов писем?

делайте список рассылки и пусть каждый получает свою копию письма в своей папке, и удаляет - если захочет.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Человек решил сэкономить место на диске при использовании групповых рассылок. Если есть 50 сорудников и им надо отправить одно общее письмо то при доставке оно будет размножено 50 раз. А он захотел положить письмо в одно место и всем кидать симлинки в maildir.

true_admin ★★★★★
()

Потихоньку-полегоньку и настроил я это чудо. Не в боевом варианте, правда, только проверить технологию - заработает ли оно так, как я хочу. И что удивительно - заработало :-) Письма разливаются всем пользователям из одного физического файла хардлинками, и внутри папок каждого пользователя тоже раскладываются Sieve-ом, и тоже хардлинками. Красота прямо.

Теперь вопрос следующий: а к Sieve или ManageSieve существует нормальная морда? Под нормальной я имею ввиду, чтобы не самому непонятные скрипты руками ваять, а лениво расставлять галочки, типа от этого пользователя - в эту папку, если есть такие-то слова - в эту папку и так далее. Желательно под Windows. Как в нелюбимом мной Microsoft Outlook, короче говоря. А то посмотрел пару почтовых клиентов и плагин к мозилле - так они только и умеют, что написанный ручками скрипт залить на сервер, ну и прочитать оттуда для последующего редактирования ручками. Если уж на то пошло, то на сервере я и сам руками эти скрипты написать могу и без managesieve и без клиентов к нему. А пользователю это всё равно не отдашь- кто ж из пользователей напишет sieve-скрипт?

shamus24
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.