Одной из целей разработки Benno MailArchiv 2 было и остается предоставление клиентам максимальной гибкости при подключении к существующим почтовым системам. Поэтому интерфейс для импорта электронных писем намеренно прост и универсален
Импорт электронных писем осуществляется легко через файловый интерфейс. Импортируемые электронные письма хранятся в виде файлов в формате RFC5322 — Internet Message Format (.eml-файлы, то есть в исходном формате, в котором они передаются через интернет) в каталоге импорта (по умолчанию /srv/benno/inbox ). Benno MailArchiv считывает эти файлы, архивирует их и индексирует содержимое электронного письма и его вложений.
Этот метод позволяет осуществлять универсальное подключение практически любой системы электронной почты/группового программного обеспечения.
При импорте электронных писем в Benno MailArchiv следует учитывать следующие моменты.
Benno MailArchiv постоянно сканирует папку «Входящие» (т.е. каталог импорта) на наличие новых писем (т.е. файлов), подлежащих архивации. Как только файл создан (и соответствует шаблону именования писем для импорта — по умолчанию используется расширение .eml — см. также инструкции по установке ), Benno MailArchiv считывает и обрабатывает это письмо или файл. Однако Benno MailArchiv не определяет, завершен ли процесс записи в файл или письмо все еще сохраняется в файл в момент чтения. Чтобы гарантировать завершение процесса записи в файл (т.е. полное сохранение письма в файл), рекомендуется использовать небольшое обходное решение.
Проще говоря, электронное письмо сначала записывается во временный файл. Benno MailArchiv игнорирует этот временный файл, поскольку обрабатывает только файлы с определенным шаблоном именования (по умолчанию: *.eml). Это позволяет Benno MailArchiv заполнять временный файл электронным письмом именно тогда, когда ищет новые письма в каталоге. После того, как письмо сохранено (т.е. процесс записи завершен), временный файл закрывается. Чтобы Benno MailArchiv мог найти и заархивировать письмо, его нужно просто переименовать в соответствии со схемой именования импортируемых файлов (*.eml). Переименование файлов с помощью команды Linux/Unix "mv" (переместить) не обязательно является атомарным. Поэтому необходимо следовать описанной ниже процедуре, чтобы переименовывать файл атомарно и, таким образом, сделать его видимым для Benno MailArchiv.
Переименование файла на атомарном уровне (то есть без префикса "mv") очень просто: создаётся жёсткая ссылка на файл. Жёсткая ссылка обязательно является атомарной, поскольку — проще говоря — в каталоге создаётся inode. После создания ссылки временный файл удаляется. Этот "трюк" гарантирует, что файл будет переименован таким образом, что он гарантированно останется закрытым. Этот метод был выбран для того, чтобы избежать сложных, подверженных ошибкам и иногда непереносимых реализаций блокировки при создании коннекторов для импорта электронной почты.
ВНИМАНИЕ: Жесткие ссылки не работают через границы файловых систем! Поэтому этот процесс следует использовать только внутри папки «Входящие»!
Следующий пример иллюстрирует процесс, который необходимо выполнить для архивирования каждого электронного письма:
cp importmail.eml / srv / benno / inbox / importmail.tmp ln / srv / benno / inbox / importmail.tmp / srv / benno / inbox / importmail.eml rm / srv / benno / inbox / importmail.tmp
Шаблон именования определяет, какие файлы из папки «Входящие» будут импортированы в архив. По умолчанию архивируются все файлы с расширением «.eml».
Шаблон именования импортируемых файлов определяется в файле /etc/benno/benno.xml в теге