Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Способ |
Преимущества |
Недостатки |
Использование традиционных MDA |
Простота, привычность |
Теряются все преимущества DBMail в производительности. Кроме того, все пользователи в DBMail – виртуальные, а не системные, т.е. появляются проблемы с разделением доступа к фильтрам |
Использование фильтров MTA + RFC3589 |
Приемлемая производительность |
Необходимо отслеживать побочные эффекты при написании фильтров MTA, писать фильтры труднее, чем правила для procmail и maildrop. Аналогичные проблемы с разделением доступа к фильтрам |
Использование триггеров |
Высокая производительность, возможность хранить фильтры в таблице БД и легко разделить доступ к ним с помощью представлений |
Во всех СУБД поддержка триггеров существенно отличается – придется либо ограничиться поддержкой одной СУБД, либо поддерживать несколько реализаций одной и той же функциональности для каждой СУБД. В текущей стабильной версии DBMail на каждый заголовок письма не выделяется отдельной записи, т.е. заголовки не очень удобно анализировать – хотя в случае использования PostgreSQL эту проблему мы уже решили |
Написание собственного патча |
Переносимость между различными СУБД, высокая производительность, возможность хранить фильтры в таблице БД и разделить доступ к ним, простота анализа заголовков (это стало ясно только после изучения исходного кода) |
Необходимо изучение исходного кода DBMail, возможно внесение ошибок в код |
При максимальном уровне отладки (trace_level=5 в секции LMTP) во время доставки сообщения в логах можно увидеть очень много сообщений, но наиболее интересным является следующий фрагмент:
dbmail/lmtpd[5327]: pipe.c, insert_messages: temporary msgidnr is [11]
dbmail/lmtpd[5327]: pipe.c, insert_messages: calling sort_and_deliver for useridnr [7]
dbmail/lmtpd[5327]: dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM dbmail_mailboxes WHERE name='INBOX' AND owner_idnr='7']