IMAP & Backup

classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

IMAP & Backup

Vadim Kuznecov-2
Добрый день всем!

Задача: сделать IMAP/SMTP сервер с постоянным бэкапом базы на network
storage или другой комп. Машина скорее всего будет еще роутить сетку.

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


Всего наилучшего
Вадим Кузнецов
NETZ.LV Ltd.


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Mike Belopuhov
Vadim Kuznecov wrote:
> Добрый день всем!
>
> Задача: сделать IMAP/SMTP сервер с постоянным бэкапом базы на network
> storage или другой комп. Машина скорее всего будет еще роутить сетку.
> Подкиньте информации к размышлению - чем сейчас стоит пользоваться в
> качестве IMAP? И кто чем бэкапил бы почтовую базу? Естественно,
> интереснее отзывы от хозяев реальных систем и потенциальных граблей.
>

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

http://www.openbsd.ru/docs/howto-sendmail.html#procmail

>
> Всего наилучшего
> Вадим Кузнецов
> NETZ.LV Ltd.
>
>

--
you're never too old to rock'n'roll if you're too young to die.


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Pavel Labushev
In reply to this post by Vadim Kuznecov-2
Vadim Kuznecov пишет:
> Добрый день всем!
>
> Задача: сделать IMAP/SMTP сервер с постоянным бэкапом базы на network
> storage или другой комп. Машина скорее всего будет еще роутить сетку.
> Подкиньте информации к размышлению - чем сейчас стоит пользоваться в
> качестве IMAP? И кто чем бэкапил бы почтовую базу?

Dovecot для IMAP, OpenLDAP для почтовой базы, с бэкапом dbm-файла базы
или репликацией через slurpd. Sendmail + Cyrus SASL (saslauthd -a
rimap|ldap, но лучше через auxprop-плагин) + Dovecot LDA. С квотами.

Все отлично работает. Но негибко весьма, я уже смотрю в сторону MySQL
для хранения аккаунтов. Благо, Dovecot это умеет, в т.ч. его LDA.

Выборки аккаунтов из MySQL - ГОРАЗДО более гибкие (из-за WHERE условий,
полноценный аналог которых в фильтрах LDAP отсутствует.

Весь вышеупомянутый софт делает поиск в LDAP ОДНИМ НЕГИБКИМ запросом с
фильтром только по конечным атрибутом записи, rdn'ам составляющих dn, с
одной базой (частью dn) для поиска. Т.е. атрибуты доменов, если они
существуют в дереве в форме записей (rdn ou=domain.com, например),
фильтром учесть НЕЛЬЗЯ (только rdn, т.е. сам ou=domain.com). К тому же,
все операции в MySQL, по идее, должны быть быстрее, даже чтение.

В LDAP домены и административные доменные группы с
замораживанием/включением - этой реальная боль в заднице + неэлегантные
извращения. Если нужно разграничить права для доступа к директории - это
усилит боль, ибо access control в OpenLDAP - НАИКРИВЕЙШИЙ из всех, мною
виденных, в плане юзабилити. Что в конфиге, что в базе (*тем более*, в
базе). Правила в сендмыле - и те юзабельнее, невзирая на явно меньшую
читаемость.

Т.е. вышеупомянутая связка работает на ура, проста, *более-менее*
управляема и даже, пожалуй, идеологически правильна. :) Но гибкость на
практике оказалась никакая, если речь не идет о простых конфигах (без
доменных групп, замораживания групп/доменов, переименования доменов,
множестве админов для каждой группы, домена и т.д. и т.п.). Я бы, на
вашем месте, для хранения аккаунтов сразу выбрал MySQL, но будьте готовы
к тому, что сендмаил не умеет хранить алиасы и прочие свои базы в MySQL,
а также не может быть нормально, без самопальных program, нафичёван
сверх обычного (но это мало, кому пригодится). Однако, LDAP можно
прикрутить и вкупе с MySQL.

> Естественно,
> интереснее отзывы от хозяев реальных систем и потенциальных граблей.

Для простых конфигов граблей не замечено, наоборот - одно удовольствие
работать. Грабли начинаются для сложных конфигов с иерархией доменных
групп и доменов, переименованием/перегруппированием доменов и
замораживанием групп/доменов (с аккаунтами проблем нет), исключительно
по причине использования почтовыми сервисами и внешними механизмами
(SASL) однопроходного поиска и негибкости самого языка фильтров, скрипты
для управления можно написать очень гибкие, но от извращений и/или
разного рода избыточных (повторяющихся) данных в LD в таких случаях не
уйти. Транзакции, кстати, тоже отсутствуют напрочь. Многие операции по
управлению всем этим зоопарком неатомичны и при некоторых условиях могут
не выполняться до конца, оставляя в дереве мусор, который не должен
мешать почтовым сервисам + должен быть убран (нужен
"чистильщик-мусоросборщик", но он нужен в любом случае, для
автоматического выявления и удаления ненужных аккаунтов с диска, так что
проблем сверх имеющихся не прибавит).


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Maxim.Sedelnikov
Вот я как раз все это заводил на sendmail+cyrus+openldap, правда на linux.

Проблемы со всеми нижеописанными правами и кривым спамерофильским поведением
sendmail+openldap решал хаком nss_ldap, заставляя его делать фильтр по
некоторому полю ldap-записи.
Кому интересно, вот здесь http://ptn.parallels.com/en/ptn/dir/?va_id=135 есть
готовый, изготовленный мною пример почтого сервера со всеми хаками :)

IMHO, MySQL нужен если очень много пользователей, openldap работает достаточно
хорошо... но реальными тестами обосновать пока не могу

В сообщении от Friday 16 November 2007 18:49:18 Pavel Labushev написал(а):

> Vadim Kuznecov пишет:
> > Добрый день всем!
> >
> > Задача: сделать IMAP/SMTP сервер с постоянным бэкапом базы на network
> > storage или другой комп. Машина скорее всего будет еще роутить сетку.
> > Подкиньте информации к размышлению - чем сейчас стоит пользоваться в
> > качестве IMAP? И кто чем бэкапил бы почтовую базу?
>
> Dovecot для IMAP, OpenLDAP для почтовой базы, с бэкапом dbm-файла базы
> или репликацией через slurpd. Sendmail + Cyrus SASL (saslauthd -a
> rimap|ldap, но лучше через auxprop-плагин) + Dovecot LDA. С квотами.
>
> Все отлично работает. Но негибко весьма, я уже смотрю в сторону MySQL
> для хранения аккаунтов. Благо, Dovecot это умеет, в т.ч. его LDA.
>
> Выборки аккаунтов из MySQL - ГОРАЗДО более гибкие (из-за WHERE условий,
> полноценный аналог которых в фильтрах LDAP отсутствует.
>
> Весь вышеупомянутый софт делает поиск в LDAP ОДНИМ НЕГИБКИМ запросом с
> фильтром только по конечным атрибутом записи, rdn'ам составляющих dn, с
> одной базой (частью dn) для поиска. Т.е. атрибуты доменов, если они
> существуют в дереве в форме записей (rdn ou=domain.com, например),
> фильтром учесть НЕЛЬЗЯ (только rdn, т.е. сам ou=domain.com). К тому же,
> все операции в MySQL, по идее, должны быть быстрее, даже чтение.
>
> В LDAP домены и административные доменные группы с
> замораживанием/включением - этой реальная боль в заднице + неэлегантные
> извращения. Если нужно разграничить права для доступа к директории - это
> усилит боль, ибо access control в OpenLDAP - НАИКРИВЕЙШИЙ из всех, мною
> виденных, в плане юзабилити. Что в конфиге, что в базе (*тем более*, в
> базе). Правила в сендмыле - и те юзабельнее, невзирая на явно меньшую
> читаемость.
>
> Т.е. вышеупомянутая связка работает на ура, проста, *более-менее*
> управляема и даже, пожалуй, идеологически правильна. :) Но гибкость на
> практике оказалась никакая, если речь не идет о простых конфигах (без
> доменных групп, замораживания групп/доменов, переименования доменов,
> множестве админов для каждой группы, домена и т.д. и т.п.). Я бы, на
> вашем месте, для хранения аккаунтов сразу выбрал MySQL, но будьте готовы
> к тому, что сендмаил не умеет хранить алиасы и прочие свои базы в MySQL,
> а также не может быть нормально, без самопальных program, нафичёван
> сверх обычного (но это мало, кому пригодится). Однако, LDAP можно
> прикрутить и вкупе с MySQL.
>
> > Естественно,
> > интереснее отзывы от хозяев реальных систем и потенциальных граблей.
>
> Для простых конфигов граблей не замечено, наоборот - одно удовольствие
> работать. Грабли начинаются для сложных конфигов с иерархией доменных
> групп и доменов, переименованием/перегруппированием доменов и
> замораживанием групп/доменов (с аккаунтами проблем нет), исключительно
> по причине использования почтовыми сервисами и внешними механизмами
> (SASL) однопроходного поиска и негибкости самого языка фильтров, скрипты
> для управления можно написать очень гибкие, но от извращений и/или
> разного рода избыточных (повторяющихся) данных в LD в таких случаях не
> уйти. Транзакции, кстати, тоже отсутствуют напрочь. Многие операции по
> управлению всем этим зоопарком неатомичны и при некоторых условиях могут
> не выполняться до конца, оставляя в дереве мусор, который не должен
> мешать почтовым сервисам + должен быть убран (нужен
> "чистильщик-мусоросборщик", но он нужен в любом случае, для
> автоматического выявления и удаления ненужных аккаунтов с диска, так что
> проблем сверх имеющихся не прибавит).
Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Pavel Labushev
Maxim Sedelnikov пишет:
> Вот я как раз все это заводил на sendmail+cyrus+openldap, правда на linux.
>
> Проблемы со всеми нижеописанными правами и кривым спамерофильским поведением
> sendmail+openldap решал хаком nss_ldap, заставляя его делать фильтр по
> некоторому полю ldap-записи.

К сожалению, этим хаком *всех* нижеописанных проблем решить не
получится, только часть, да еще и новых прибавится. Более того, судя по
по его track record, - это не OpenBSD way. Но вопрос этот, скорее,
идеологический и зависит от частностей - на вкус и цвет... Лично я хак в
продакшен поставить не рискну. Легковесный LDAP-прокси (по модели FSM),
который бы занимался тем же, был бы более интересен. Гораздо более
патчей на библиотеки, самописных auxprop-плагинов, pam-подулей и т.п. Но
и он бы *всех* проблем не решил.

> Кому интересно, вот здесь http://ptn.parallels.com/en/ptn/dir/?va_id=135 есть
> готовый, изготовленный мною пример почтого сервера со всеми хаками :)

На голые конфиги и патчи было бы интересно взглянуть. Можете выложить?

> IMHO, MySQL нужен если очень много пользователей, openldap работает достаточно
> хорошо... но реальными тестами обосновать пока не могу

MySQL, как СУБД, более надежен и гибок. Беда в том, что ни MySQL, ни
LDAP от изобретения велосипедов полностью не освобождают.


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Anton Maksimenkov-2
"Бобёр! Выдыхай уже! Выдыхай!!!" (с)

Вот натурально поражаюсь энергии с которой вы распутываете эти глюки.
Даже представить не мог, что там так все непросто.
Postfix + Dovecot + My|Pg SQL, и... всё. Ну, spamd и остальное по вкусу.
При том что все компоненты "гибкИ" до безобразия. Не хотелось бы
разводить холиварс "Sendmail VS Postfix", но дело выглядит так, что
сендмыл в дефолтной системе "занимает место постфикса" тока из-за
"неидеальной" лицензии постфикса.

LDAP... со времени моего первого и не очень долгого общения с этим... no way.
*SQL не только "когда очень много пользователей" - я его юзаю и для
10-ка юзеров, просто соадминам проще sql'ом изменить поле пароля и
т.д., чем учиться какой-то местячковой поделке. Да и просто исходя из
реалий: настраивается с полнажатия, в пару строк (далее - по вкусу);
функционал для манипуляций с данными - прям не знаю как выразить;
отлажены, стабильно и производительно работают - опять же по
определению. Какие там хаки - "из коробки" работает и конфигурится в
пределах широкого круга (ессно, кому надо - тот себе найдет что
приделать).
Какой LDAP? Пожалейте себя, лучше просто йаду.

Берегите нервные клетки, переходите на... ну вобщем-то решать вам.

> > Проблемы со всеми нижеописанными правами и кривым спамерофильским поведением
> > sendmail+openldap решал хаком nss_ldap, заставляя его делать фильтр по
> > некоторому полю ldap-записи.
> К сожалению, этим хаком *всех* нижеописанных проблем решить не
> получится, только часть, да еще и новых прибавится. Более того, судя по
...
> > IMHO, MySQL нужен если очень много пользователей, openldap работает
...
> MySQL, как СУБД, более надежен и гибок. Беда в том, что ни MySQL, ни
> LDAP от изобретения велосипедов полностью не освобождают.

--
engineer
Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Pavel Labushev
Anton пишет:
> "Бобёр! Выдыхай уже! Выдыхай!!!" (с)
>
> Вот натурально поражаюсь энергии с которой вы распутываете эти глюки.
> Даже представить не мог, что там так все непросто.
> Postfix + Dovecot + My|Pg SQL, и... всё. Ну, spamd и остальное по вкусу.
> При том что все компоненты "гибкИ" до безобразия.

У меня отношения с сендмылом сложились уже довольно давно. Реально на
постфикс для сложных вещей я даже не смотрел. :) Т.е. обоснованного
выбора между сим и сим не делал. В простых конфигах работает и сендмыло.
Замечательно работает, претензий не имею. Но необходимость в чем-то,
более гибком, для сложных конфигов уже прямо-таки наболела. :)

Кстати, MySQL для авторизации к сендмылу легко прикручивается через
SASL, доставкой занимается LDA Dovecot'а. А вот с алиасами и другими
мапами, похоже, проблема. Беда в том, что сендмыло не умеет их хранить в
sql. :\ Я пока не решил для себя: довести до ума "более идеологически
правильный" LDAP, или написать правила для сендмыла с внешней
program-"базой", чтобы заменить функциональность мапов.

> Не хотелось бы
> разводить холиварс "Sendmail VS Postfix", но дело выглядит так, что
> сендмыл в дефолтной системе "занимает место постфикса" тока из-за
> "неидеальной" лицензии постфикса.

Думаю, многие к сендмылу просто привыкли. Как и я.

> 10-ка юзеров, просто соадминам проще sql'ом изменить поле пароля и
> т.д., чем учиться какой-то местячковой поделке. Да и просто исходя из

LDAP в этом плане тоже прост. Удобно управляется из опенсорцных
браузеров: LDAPExplorerTool, JXplorer, phpldapadmin. Шелл-тулзы для
управления и смены паролей (ldappasswd) идут в дистрибутиве OpenLDAP.

> Какой LDAP? Пожалейте себя, лучше просто йаду.

Да жалеем уже...

PS
Как вы решаете задачу удаления ненужных аккаунтов (директорий с
письмами) с диска? Может быть, постфикс это умеет? :) Было бы здорово.


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Igor Grabin
On Sat, Nov 17, 2007 at 02:39:40PM +0700, Pavel Labushev wrote:
> У меня отношения с сендмылом сложились уже довольно давно. Реально на
> постфикс для сложных вещей я даже не смотрел. :) Т.е. обоснованного
> выбора между сим и сим не делал. В простых конфигах работает и сендмыло.
> Замечательно работает, претензий не имею. Но необходимость в чем-то,
> более гибком, для сложных конфигов уже прямо-таки наболела. :)
exim.
возможность врукопашную с нужной логикой врезаться в любой момент
smtp-дискуссии.
база юзеров в mysql, доставка своими силами в maildir, на раздаче
dovecot. куда проще - я не знаю.

на коленке средствами его конфига собрал auto-blacklist для особо
невменяемых спам-хостов.

средствами его же конфига сделан greylist.

> Кстати, MySQL для авторизации к сендмылу легко прикручивается через
> SASL, доставкой занимается LDA Dovecot'а.
а в гамаке? а стоя?
в последний раз, когда тема интересовала, sasl был генетической частью
cyrus'а.
этот самый cyrus - то ещё поделище.
http://osdir.com/ml/os.openbsd.misc.ru/2004-10/msg00033.html

--
Igor "CacoDem0n" Grabin, http://violent.death.kiev.ua/


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Anton Maksimenkov-2
> > Кстати, MySQL для авторизации к сендмылу легко прикручивается через
> > SASL, доставкой занимается LDA Dovecot'а.
> а в гамаке? а стоя?
+1 :-))))))

> в последний раз, когда тема интересовала, sasl был генетической частью
> cyrus'а. этот самый cyrus - то ещё поделище.
+1

--
engineer
Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Pavel Labushev
In reply to this post by Igor Grabin
Igor Grabin пишет:

> exim.
> возможность врукопашную с нужной логикой врезаться в любой момент
> smtp-дискуссии.

Интересно.

>> Кстати, MySQL для авторизации к сендмылу легко прикручивается через
>> SASL, доставкой занимается LDA Dovecot'а.
> а в гамаке? а стоя?

:)))

> в последний раз, когда тема интересовала, sasl был генетической частью
> cyrus'а.
> этот самый cyrus - то ещё поделище.
> http://osdir.com/ml/os.openbsd.misc.ru/2004-10/msg00033.html

На счет Cyrus'а - не знаю. Отдельная библиотека SASL в связке с
сендмылом в разных позах у меня работает давно, стабильно и без проблем
(в т.ч. с апгрейдами). Иначе бы давно нашел альтернативу.

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


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Vadim Kuznecov-2
Спасибо всем ответившим, над чем подумать как обычно есть:-). Даже не
думал, что такую дискуссию спровоцирую :-).

Всего наилучшего уважаемому сообществу
Вадим Кузнецов

P.S. Примите уверения в совершеннейшем к вам почтении


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Vitaliy Kulchevych
In reply to this post by Vadim Kuznecov-2
2007/11/17, Igor Grabin <[hidden email]>:

> exim.
> возможность врукопашную с нужной логикой врезаться в любой момент
> smtp-дискуссии.
> база юзеров в mysql, доставка своими силами в maildir, на раздаче
> dovecot. куда проще - я не знаю.
>
> на коленке средствами его конфига собрал auto-blacklist для особо
> невменяемых спам-хостов.
>
> средствами его же конфига сделан greylist.
>


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

одним словом, в руках полностью рабочий инструмент, крути его как хочешь.

--
__________________________________________________

Yours faithfully,

[hidden email]
 #icq 251618733


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Pavel Labushev
In reply to this post by Vadim Kuznecov-2
Vadim Kuznecov пишет:
> Спасибо всем ответившим, над чем подумать как обычно есть:-). Даже не
> думал, что такую дискуссию спровоцирую :-).

В догонку на тему Sendmail + OpenLDAP. Оказывается, в OpenLDAP'е уже 4
года, как есть hdb бэкенд, в котором реализовано subtree rename и,
видимо, еще несколько вкусностей. В ближайшее время покручу его и отпишу
о результатах.

За выходом новых фич нужно почаще следить, однако... ;)


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Maxim.Sedelnikov
1) По поводу "хаков в продакшн" (лирика, можно не читать)
Хаки - это зло.... но оно необходимо для гибкости инфраструктуры и отсутствия
зоопарков. Иногда из них получаются патчи для основной версии :).
В моей практике это второй случай, когда я не смог жить на готовом. Первый был
с откручиванием от cyrus авторизации по tcp-сокету при размещении ящиков в
разных физических хранилищах. Делалось это еще в альфа(!) версии цируса,
поскольку на тот момент ни одно решение более не поставляло функции
распределенного хранилища. Прожило(!) около 2х лет, потом было заменено на
новую стабильную версию.... с таким же хаком. Делалось, правда не мной,
наблюдалось просто :).

2) По поводу хака nss_ldap
По умолчанию связка sendmail+openldap принимает почту для всех юзеров, даже
для тех, которых нет, поскольку наличие ящика в cyrus проверяется уже после
принятия письма sendmail. Цивилизованно отучить sendmail от этого  мне
удалось... к сожалению уже не помню сейчас каким путем, но исправил я это
прикручиванием ldap-авторизации в pam (ldap вообще выполняет все функции
службы каталога: хранение пользователей, паролей, списка служб, к которым
пользователю разрешен доступ и тп).
Список доступных пользователю служб в ldap определяется полем description в
описании пользователя:
description=smtp
description=imaps
description=wiki
ну и тп
Фильтруется через saslauthd.

Проблема, которая возникла - любой пользователь из ldap имел логин на почтовом
сервере, через pam это отфильтровать не удалось.
Вот тут мне понадобился хак libnss_ldap.so, добавляющий условие на системную
функцию getpwnam(). Был поправлен файл ./ldap-schema.c:

snprintf (_nss_ldap_filt_getpwnam, LDAP_FILT_MAXSIZ, "(&(objectclass=%s)
(%s=%s))", OC (posixAccount), ATM (LM_PASSWD, uid), "%s");

на

snprintf (_nss_ldap_filt_getpwnam, LDAP_FILT_MAXSIZ, "(&(objectclass=%s)
(%s=%s)(description=mail))", OC (posixAccount), ATM (LM_PASSWD, uid), "%s");

"(description=mail)" определяет тех юзеров в ldap, для которых sendmail
принимает письма (есть пользователи для которых почта не принимается, а вот
отправлять они ее могут через smtp-авторизацию).

ИТОГ:
Плюс у такой схемы, что все юзеры живут в одном месте вместе с правами
доступа, а ldap можно прикрутить к очень многим службам.
Минус, все, что написано выше :), если кто знает, как решить описанные
проблемы ПРОЩЕ - просветите ;).
Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Oleg Safiullin
> Минус, все, что написано выше :), если кто знает, как решить описанные
> проблемы ПРОЩЕ - просветите ;).

Использую в конторе связку sendmail + ms exchange + active directory.
Последний выступает в качестве ldap.
sendmail принимает почту снаружи. при этом проверяет наличие пользователя в active directory и ругается сразу если нет.
От идеи использовать LDAP напрямую отказался из соображений надежности: предпочитаю, чтобы sendmail принял на себя почту даже если
вся виндовсная братия (LDAP сервер) лежит мертво. Итог такой: все работает, никаких перекомпиляций sendmail не требуется, openldap
и прочий внешний софт не нужен...

..почти не нужен :)
Используется скрипт синхронизации с LDAP, который раз в минуту обновляет файл почтовых адресов из active directory (и на всякий
случай шлет мне на почту diff изменений если они были), указывает sendmail'у на факт обновления если нужно.
Далее все работает как обычно без всяких извратов.

Кому интересно - пишите лично, поделюсь используемыми скриптами и настройками.


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Maxim.Sedelnikov
То есть sendmail при приеме почты адреса и пр берет из файла, a не ходит
вместо этого в ldap?

> Использую в конторе связку sendmail + ms exchange + active directory.
> Последний выступает в качестве ldap.
> sendmail принимает почту снаружи. при этом проверяет наличие пользователя в
> active directory и ругается сразу если нет. От идеи использовать LDAP
> напрямую отказался из соображений надежности: предпочитаю, чтобы sendmail
> принял на себя почту даже если вся виндовсная братия (LDAP сервер) лежит
> мертво. Итог такой: все работает, никаких перекомпиляций sendmail не
> требуется, openldap и прочий внешний софт не нужен...
>
> ..почти не нужен :)
> Используется скрипт синхронизации с LDAP, который раз в минуту обновляет
> файл почтовых адресов из active directory (и на всякий случай шлет мне на
> почту diff изменений если они были), указывает sendmail'у на факт
> обновления если нужно. Далее все работает как обычно без всяких извратов.
>
> Кому интересно - пишите лично, поделюсь используемыми скриптами и
> настройками.
Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Oleg Safiullin
[hidden email] wrote:
> То есть sendmail при приеме почты адреса и пр берет из файла, a не ходит
> вместо этого в ldap?

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


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Andrey N. Oktyabrski
Oleg Safiullin wrote:
> [hidden email] wrote:
>> То есть sendmail при приеме почты адреса и пр берет из файла, a не
>> ходит вместо этого в ldap?
>
> Да.
> Напрямую делать не стал из вышеуказанных соображений, а также из-за
> того, что в этом случае sendmail пересобирать не нужно.
Это идеологически очень правильно. У меня exim тоже никуда не лазит
проверять ящики и пароли, несколько скриптов собирают это из sasl, cgp,
.. и складывают в bdb, откуда exim и берёт что ему надо.


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Pavel Labushev
In reply to this post by Maxim.Sedelnikov
[hidden email] пишет:
> распределенного хранилища. Прожило(!) около 2х лет, потом было заменено на
> новую стабильную версию.... с таким же хаком. Делалось, правда не мной,
> наблюдалось просто :).

Я сейчас выскажу IMHO, не полемики ради, а просто поделиться.

Так вот, на отдельных примерах, как известно, можно доказать или
опровергнуть все, что угодно. Логика "если у меня без проблем живет один
хак, проживет и другой" мне чужда (шишки на лбу после граблей чуждость
усугубляют :). Особенно, если хак - то же извращение, только на более
низком уровне. Если нужно что-то добавить в конфиг или обойти
ограничения, а прямой возможности нет, я обычно стараюсь не лезть в код
и не крутить ему яйца с разных сторон (тем более, когда нет кучи
админов, которые неспеша и без геммороя будут рулить гибридами без
ущерба для производства), а извратиться на базе рабочих обкатанных
конфигов. Итог: все работает стабильно и внимания к себе не требует.
Разве что, на апгрейд. Да, что-то делается не сразу (требует больше
времени на реализацию) и/или неэлегантно (страдает любовь к искусству),
но в итоге все работает, как заяц из рекламы про батарейку.

> 2) По поводу хака nss_ldap
> По умолчанию связка sendmail+openldap принимает почту для всех юзеров, даже
> для тех, которых нет, поскольку наличие ящика в cyrus проверяется уже после
> принятия письма sendmail. Цивилизованно отучить sendmail от этого  мне
> удалось...

А мне удалось. В Local_check_rcpt добавил поиск адреса в базе (через K
.. ldap). Правда, потом убрал за ненадобностью и по той же причине, что
form@. Прикручивать поиск получателей в файле не стал (хотя можно
банальнейшим шелл-скриптом).

> к сожалению уже не помню сейчас каким путем, но исправил я это
> прикручиванием ldap-авторизации в pam (ldap вообще выполняет все функции

А вот это неправильно.

> службы каталога: хранение пользователей, паролей, списка служб, к которым
> пользователю разрешен доступ и тп).
> Список доступных пользователю служб в ldap определяется полем description в
> описании пользователя:
> description=smtp
> description=imaps
> description=wiki
> ну и тп

Тут есть варианты. Выбор зависит от схемы администрирования дерева. В
своем случае на каждую службу я бы создал по отдельной ветке, куда
помещал бы алиасы на оригинальные записи. Так не нужно отбирать у
пользователя права на работу с атрибутами description, если он сам не
должен себе ничего менять, а управление доступом к вектам каждой из
служб можно разделить между отдельными администраторскими аккаунтами, не
давая каждому такому аккаунту, по сути, право на запись в description
любых значений (включения/выключения любой службы).

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

> Фильтруется через saslauthd.

А зачем saslauthd? Когда давно существует auxprop-плагин для лдапа с
практически теми же возможностями. saslauthd нужен далеко не всегда (не
масштабируется, зараза).

> Проблема, которая возникла - любой пользователь из ldap имел логин на почтовом
> сервере, через pam это отфильтровать не удалось.

Вот потому и неправильно. К тому же, pam (как и nss_ldap) - это не про опен.

> Вот тут мне понадобился хак libnss_ldap.so, добавляющий условие на системную
> функцию getpwnam(). Был поправлен файл ./ldap-schema.c:

О, хоссподи...

> ИТОГ:
> Плюс у такой схемы, что все юзеры живут в одном месте вместе с правами
> доступа, а ldap можно прикрутить к очень многим службам.

Это плюс не схемы, а, скорее, самой работы с лдапом вообще. Чего нельзя
сказать про MySQL. slapd умеет sql-бэкенд, но это уже грязная групповуха. :)

> Минус, все, что написано выше :), если кто знает, как решить описанные
> проблемы ПРОЩЕ - просветите ;).

Кроме того, невозможно гибко разграничить привелегии (это далеко не
везде нужно, конечно). Если строить схему по тому же принципу (с
фильтрацией nss_ldap), но с иерархической структурой, в которой легче и
в принципе возможно привелегии разграничить, возникнут те же проблемы,
что есть и без nss_ldap: геморрой на bdb-бэкенде без переименования
веток обеспечен. Но оказывается, существует (давно!) hdb-бэкенд, в
котором все операции над rdn'ами веток, как над атрибутами, становятся
атомичными и почти бесплатными.

Если в продакшене с hdb все пойдет гладко, необходимость в nss_ldap'ах и
прочих легковесных прокси лично для меня, похоже, отпадет далеко и
надолго. Иерархии очень удобны и понятны (из браузера все предельно
четко и ясно безо всяких поисков, руками администрится на ура). Вот
только subtree rename'а им не хватало.


Reply | Threaded
Open this post in threaded view
|

Re: IMAP & Backup

Oleg Safiullin
> form@. Прикручивать поиск получателей в файле не стал (хотя можно
> банальнейшим шелл-скриптом).

Никаким shell скриптом искать не надо. sendmail сам прекрасно это умеет работать с файлами :)


12