В Benno MailArchiv электронные письма хранятся в логически плоской структуре. Вся система содержит только тот подуровневый контейнер , к которому привязано электронное письмо.
Данное назначение определяется в конфигурационном файле /etc/benno/benno.xml с использованием параметров конфигурации соответствующего контейнера.
С логической точки зрения, внутри контейнера не происходит никакой дальнейшей структуризации. Поиск и отображение результатов осуществляется REST-демоном и происходит непосредственно на уровне контейнера.
Таким образом, REST-демон имеет доступ ко всем электронным письмам в контейнере. Права доступа регулируются на этом уровне.
Поисковый запрос к REST-демону возвращает список совпадений, содержащий внутренние идентификаторы найденных электронных писем. Затем REST-интерфейс отображает соответствующее электронное письмо.
Права доступа проверяются непосредственно во время поиска. Параметры поискового запроса используются внутри системы для фильтрации действительных для данного запроса адресов электронной почты и отправки их в Lucene.
Этот фильтр устанавливается при входе пользователя в систему и не может быть изменен.
Адреса электронной почты, действительные для пользователя, а также назначенный контейнер определяются при создании пользователя. Например, адреса hansen"
определенный.
После входа в систему эти адреса извлекаются из базы данных пользователей и устанавливаются в качестве фильтра. Пользователь может найти только те электронные письма, в которых один из присвоенных ему адресов указан либо в качестве отправителя, либо в качестве получателя.
Если адрес электронной почты должен быть предоставлен другому пользователю, он будет добавлен к его учетной записи. Эти параметры конфигурации позволяют, например, назначить адрес электронной почты отдела его сотрудникам.
Фильтры реализованы внутри с использованием синтаксиса запросов . Это позволяет использовать подстановочные знаки ( * ), например, для предоставления пользователю доступа ко всему поддомену.