Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Довольно неудобным обстоятельством является то, что все заголовки каждого сообщения целиком хранятся в одной строке таблицы dbmail_messageblks – у таких строк значение поля is_header = 1. В нестабильной версии DBMail заголовки вынесены в отдельную таблицу, и для каждого выделена собственная запись. Однако вместо того чтобы ждать выхода новой ветки DBMail или использовать нестабильную, мы можем реализовать эту функциональность самостоятельно средствами PostgreSQL.

Воспользуемся тем, что PostgreSQL позволяет создавать функции на языке PL/Python и богатыми возможностями Python в области обработки почтовых сообщений (разумеется, этот выбор субъективен: желающие могут реализовать аналогичную функциональность на PL/PgSQL, PL/Perl, PL/Tcl или даже на С). Сначала включим поддержку PL/Python для выбранной БД:

# createlang -U dbmail plpythonu dbmail

Для того чтобы эта команда выполнилась, PostgreSQL необходимо собрать с поддержкой PL/Python. В ALT Linux поддержка PL/Python вынесена в пакет postgresql-python, который необходимо доустановить, если он еще не установлен. Кроме того, в ALT Linux PostgreSQL выполняется в chroot-окружении, поэтому нужно проследить за тем, чтобы все модули Python, которыми мы собираемся воспользоваться, находились там же. Проще всего будет полностью перенести каталог /usr/lib/python2.3/ в /var/lib/pgsql-root/usr/lib, а правильнее будет делать это не регулярно при необходимости установить или удалить некоторые модули Python, а один раз описать необходимую последовательность действий в скрипте /etc/chroot.d/postgresql.lib.

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

# psql -U dbmail dbmail

 

dbmail=# create function mailheader(varchar, varchar) returns varchar as $$

dbmail$# import email.Parser

dbmail$# parser = email.Parser.Parser()

dbmail$# message = parser.parsestr(args[0])

dbmail$# return message.get(args[1])

dbmail$# $$ language plpythonu;

CREATE FUNCTION

dbmail=# select mailheader(messageblk, 'To') from dbmail_messageblks where is_header=1;

                    mailheader                    

---------------------------------------------------

 test@mydomain.ru

(записей: 1)

Для того чтобы оценить возможности этого механизма, у нас слишком маленькая БД. Конечно, можно написать скрипт, генерирующий множество почтовых сообщений, но мы поступим иначе. Допустим, что у нас уже есть архив списка рассылки DBMail-Users в формате Maildir. С помощью MUA создадим IMAP-каталог, а затем с помощью скрипта mailbox2dbmail импортируем в него все сообщения из архива:

# /usr/share/doc/dbmail-2.0.7/contrib/mailbox2dbmail/mailbox2dbmail -u test -t maildir -m maillist/ -b INBOX/DBMail-Users -p /usr/sbin/dbmail-smtp


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100