LINUX.ORG.RU

Обзорное руководство по DbMail. Архитектура решения. Типовые сценарии применения

 


0

0

DbMail – легкий и быстрый агент хранения почты, который легко настраивать и поддерживать. На текущий момент существует относительно большое количество агентов доставки почтовых сообщений конечному пользователю. Среди наиболее известных imap- и pop3-серверов для unix-подобных систем можно назвать: dovecot, courier-imap и Cyrus. DbMail – это такой же сервер, как и вышеназванные, но имеющий одно важное отличие - то 100%-ная интеграция с реляционными базами данных (MySql, PostgreSQL и т.д.) Под 100% понимается авторизация, хранение заголовков и тела письма, хранение вложений письма в базе данных. Такой подход дает некоторые преимущества над стандартными схемами хранения maildir и mailbox.

>>> Подробности

★★★

Проверено: Shaman007 ()

маразм. оно, конечно, вася&ко может и в pdf всю свою почту засовывать и складывать на гугле, а более-менее нагруженный сервер от такого «улучшения» помирать начнет. какие такие преимущества в складывании почты в реляционную базу данных? транзакции и ссылочная целостность для почты - это по воробьям из пушки палить.

Momyc
()

> Задача была создать imap- и pop3-сервер, хранящий всю информацию о почте, равно как и содержание писем, в реляционной базе данных

дайте угадаю... оно написано на пых-пых.

Momyc
()

не угадал. но после беглого просмотра кода понял, что я был не так уж и далек от истины - написано быдлом. геттеры/сеттеры вместо пропертей, один модуль на каждый класс в питоновском коде - это яркий признак сами-знаете-кого, рожающего «нетленку теперь и на пЭйтоне». в сишный код даже смотреть страшно - мне еще почти неделю работать.

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

dbmail отлично работает на mysql базе в 20Гиг на довольно дохлом сервере. Сишный код - как минимум хорошо читаемый. (я там пару багов исправил как-то)

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

>dbmail отлично работает на mysql базе в 20Гиг на довольно дохлом сервере. Сишный код - как минимум хорошо читаемый. (я там пару багов исправил как-то)

Поподробней про опыт использования? я просто думаю его заюзать

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

Берешь openldap, dbmail, mysql, ставишь, настриваешь по инструкциям в их вики.

Грабли:

- mysql 5.1 не умеет угадывать индексы. См. http://bugs.mysql.com/bug.php?id=38745 и http://repos.archlinux.org/wsvn/community/dbmail/trunk/

- кол-во форков имапа и попа должно быть больше кол-во одновременных сессий.

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

> - кол-во форков имапа и попа должно быть больше кол-во одновременных сессий.

хм,все таки она не тредовая,жаль

pinachet ★★★★★
()

А оно еще шевелится? Оно официально не собирается с gmime-2.4, и прикручивать поддержку выше 2.2 просто не стали. Такое называется «закопали сами же разработчики.»

anonymous
()
Ответ на: комментарий от sergej

И gmime-2.2 спокойно ставится рядом с gmime-2.4

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

>Из плюсов - как минимум легкая репликация. и кластеризация и отказоустойчивость. где-то там в презеташках ndb-cluster упоминается какой-то университет с 20 машинами под кластер и почту.

netwind
()
Ответ на: комментарий от sergej

>А мне кажется наоборот хорошо. Если что-то вдруг упадет, то не все сразу.

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

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

О да, rsync на 20Гб мелких файлов очень шустр, а главное работает в реальном времени, а не ежесуточно/ежечасно по крону.

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

> Из плюсов - как минимум легкая репликация

каким образом? репликация данных гораздо проще реализуется на уровне maildir/mailbox, нежели rdbms. как минимум, если речь идет о mysql и postgresql.

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

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

переписывать кучу протоколов ради сомнительного преимущества в виде хранения почты в rdbms - это нонсенс. тем более, когда речь идет о протоколах imap и pop3. люди годами вычищают код от уязвимостей в их реализации. только вася&ко может позволить себе использовать это. я просто уверен, что код на сях усыпан уязвимостями, утечками памяти и пр. прелестями.

Momyc
()

Предлагаю такое введение для подобных статей:

«Итак, у вас есть почтовый сервер, где всё работает, всё отлажено, и вам скучно. Ну что ж, настало время помаяться фигнёй.»

anonymous
()
Ответ на: комментарий от wolfovich

> Я бы сказал не сам dbmail, а база писем тяжелая особенно когда она начинает весить десятки гигов.


Используйте правильную СУБД, а не недобазу-игрушку в виде MySQL

anonymous
()
Ответ на: комментарий от Momyc

>> каким образом? репликация данных гораздо проще реализуется на уровне maildir/mailbox, нежели rdbms. как минимум, если речь идет о mysql и postgresql.

Легко настраивается, работает лучше чем rsync.

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

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

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

Наверное это тесты на питоне или еще что. для работы питон не нужен.

переписывать кучу протоколов ради сомнительного преимущества в виде хранения почты в rdbms - это нонсенс. тем более, когда речь идет о протоколах imap и pop3. люди годами вычищают код от уязвимостей в их реализации. только вася&ко может позволить себе использовать это. я просто уверен, что код на сях усыпан уязвимостями, утечками памяти и пр. прелестями.

Если не проверял - значит не уверен. У меня оно работает года 2, ни одной проблемы не было. Поискал уязвимости - 3 штуки: 2 в 2003 году, одну в 2008м. При том что решение довольно известное и входит во многие дистрибутивы. Код на сях - как я уже говорил, как минимум легко читаемый. Что еще нужно?

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

>> У меня оно работает года 2, ни одной проблемы не было.

~50 пользователей.

~400тыс писем.

~20Гб данных в базе.

«Сервер» - 1.7ГГц, 1Гб памяти.

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

>О да, rsync на 20Гб мелких файлов очень шустр, а главное работает в реальном времени, а не ежесуточно/ежечасно по крону.

Угу, так и есть man inotifywait.

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

давно не программирую, что за пропертиес такие, которые заменяют старые/добрые get и set

anonymous
()
Ответ на: комментарий от qwe

ага, еще скажи incron.

inotify-tools/incron все равно не заменяют нормальную репликацию.

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

> Легко настраивается, работает лучше чем rsync

о какой репликации в mysql или postgresql идет речь??? насколько я помню, там ее нет. народ извращается как может.

У меня оно работает года 2, ни одной проблемы не было

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

Наверное это тесты на питоне или еще что. для работы питон не нужен.

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

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

>> о какой репликации в mysql или postgresql идет речь??? насколько я помню, там ее нет. народ извращается как может.

http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html

только не надо говорить, что это не репликация, а говно :)

тоже мне аргумент. а сколько живых пользователей dbmail?

Наверное я один. Но мне пофиг, пока оно работает.

и код - говно

Как это по лоровски :)

а даваы адрес твоего сервера, я, на его досуге, пощупаю на предмет «ни одной проблемы».

пиши - координаты в профиле.

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

> только не надо говорить, что это не репликация, а говно :)

для rdbms, репликация лога транзакций - один из наиболее эффективных способов. но... либо это асинхронная репликация и тогда твои наезды на «медленную» репликацию при помощи rsync становятся смешны, либо синхронная, но тогда при любом достаточно продолжительном пропадании соединения между мастером/слэйвом твоя репликация накрывается медным тазом и требует восстановления из полного бэкапа базы плюсь логи, которые накопились с момента его создания.

Наверное я один. Но мне пофиг

так бы сразу и сказал, что рабатоешь на вася&ко. а то развел тут агитацию.

Как это по лоровски :)

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

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

>> тогда при любом достаточно продолжительном пропадании соединения между мастером/слэйвом твоя репликация накрывается медным тазом

Перезагрузку слейва переживает легко. При нашем кол-ве пользователей, я думаю оно и несколько часов (если не дней) протянет без соединения. Там логов гигабайт под 10.

И в отличии от rsync оно запоминает на каком месте остановилось, а не шерстит всю базу.

так бы сразу и сказал, что рабатоешь на вася&ко

А я так сразу и сказал. 50 пользователей у нас. Не всем же работать в Вася Technologies Incorporated :)

хочешь я выложу куски их кода сюда на обозрение публики

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

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

Да, и имей ввиду - то что на питоне, писалось под версию питона 2.2 и с тех пор похоже не трогалось )

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

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

я сишный код за так смотреть не буду.

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

>> тогда зачем вам репликация-то??? на 50 юзверей самого захудалого сервера хватит. или вы так бюджет департамента поддерживаете на уровне :) типа, два сервера для почтовых демонов, два - для хранения и репликации ящиков.

Затем, что imap и письма ценные. Если винт накроется будет очень плохо. А сервера там и так захудалые.

я сишный код за так смотреть не буду.

:) и не надо. денег тут точно никто не предложит. Тем более что я его уже посмотрел.

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