archiveopteryx VS dbmail
Мне нужна система баз данных для хранения моих сообщений электронной почты (сейчас их более 4 миллионов), которая позволила бы мне легко осуществлять программный поиск по электронной почте, пока я нашел только эти два, и альтернативой является создание моей собственной схемы и синхронизация IMAP/ Папки Pop3 в качестве электронных писем поступают. Однако, читая это: DBMAIL для поиска кажется из-за того, как dbmail хранит электронные письма, поиск по электронным письмам не очень возможен.
Моя главная цель - уметь читать электронные письма и искать их, скажем, с помощью Python.
2 ответа
Некоторые другие альтернативные варианты:
http://sqmail.sourceforge.net/ написан на Python, но долгое время не поддерживается.
http://www.manitou-mail.org/ который написан на Perl (мной!) с необязательным графическим интерфейсом в Qt/C++.
Немного поздно, но вы можете легко выполнить поиск, создав представления в своей базе данных, а затем выполнить поиск.
/* to, from and subject*/
create view as EmailHeaders
select
`m`.`physmessage_id` AS `physmessage_id`,
`ph`.`internal_date` AS `internal_date`,
max(if(`n`.`headername` = 'from',`v`.`headervalue`,NULL)) AS `From`,
max(if(`n`.`headername` = 'to',`v`.`headervalue`,NULL)) AS `To`,
max(if(`n`.`headername` = 'subject',`v`.`headervalue`,NULL)) AS `Subject`
from
(
(
(`dbmail_messages` `m`
join `dbmail_header` `h` on (`m`.`physmessage_id` = `h`.`physmessage_id`)
)
join `dbmail_physmessage` `ph` on(`m`.`physmessage_id` = `ph`.`id`)
)
join `dbmail_headername` `n` on(`h`.`headername_id` = `n`.`id`)
)
join `dbmail_headervalue` `v` on(`h`.`headervalue_id` = `v`.`id`))
where
`n`.`headername` = 'to'
or `n`.`headername` = 'from'
or `n`.`headername` = 'subject'
group by `m`.`physmessage_id`
Вы также можете создавать представления для отображения сообщений, но это неэффективно (занимает много памяти), но вы можете использовать что-то вроде этого
select
physmessage_id,
sum(prts.size) emailSize
from dbmail_partlists list, dbmail_mimeparts prts, EmailHeaders eh
where list.part_id=prts.id
and list.is_header=0
and eh.physmessage_id=list.physmessage_id
and prts like '%your_word_here%'
group by list.physmessage_id
Для небольших серверов этих запросов достаточно, но для больших вам может потребоваться использовать другие методы, но по сути это так.
Я ищу что-то почти то же самое, хранение и поиск по огромному корпусу электронных писем и вложений без явных победителей. Хотел бы сравнить заметки. Похоже, что archiveopteryx - это dbmail, два первых участника со зрелыми схемами БД после быстрого поиска в Google. Похоже, что оба пакета оптимизированы для служб доставки MTA / Pop / Imap, хотя я все еще исследую оба.
Я также нашел это http://www.flaterco.com/aemail/aedocs.html но, похоже, не поддерживается с 2003 года.
Я не могу понять, как отправить PM или связаться с людьми на этом сервисе.