LINUX.ORG.RU
решено ФорумAdmin

Dovecot dbox единое хранилище вложений

 ,


1

1

Привет.

Подскажите как настраивается единое хранилище для вложений в письма:

dbox storage is extensible. Single instance attachment storage was already implemented as such extension.

https://wiki2.dovecot.org/MailboxFormat/dbox#Alternate_storage

Или оно работает из коробки для ящиков в формате mdbox / sdbox?

Второе, есть ящики в формате Maildir, часть писем в них сжата.

При вызове dsync mirror для конвертирования в формат mdbox появляются сообщения о том, что реальный размер файла не соответствует размеру письма.

Это так и есть, файл сжат.

Теперь все распаковывать?

Спасибо.

UPD

Подскажите, как чистить mail_attachment_dir в случае, если письма со всех почтовых ящиков, к которым относятся вложения в хранилище будут удалены, то что будет с файлами вложений в общем хранилище?

Посмотрел в директории с вложением есть директория hashes, в которой лежит файл под именем равным хэше, а в директории выше находятся hardlink ссылки на этот файл с некоторым суффкиксом.

Получается, что как только письмо с вложением будет удалено, то будет удалён и hardlink для этого письма и как только не останется hardlink`ов, то и сам файл будет удалён?

Это так?

★★

Последнее исправление: infomeh (всего исправлений: 2)

Нашёл в конфигурационном файле:

# Directory root where to store mail attachments. Disabled, if empty.
#mail_attachment_dir =

# Attachments smaller than this aren't saved externally. It's also possible to
# write a plugin to disable saving specific attachments externally.
#mail_attachment_min_size = 128k

# Filesystem backend to use for saving attachments:
#  posix : No SiS done by Dovecot (but this might help FS's own deduplication)
#  sis posix : SiS with immediate byte-by-byte comparison during saving
#  sis-queue posix : SiS with delayed comparison and deduplication
#mail_attachment_fs = sis posix

# Hash format to use in attachment filenames. You can add any text and
# variables: %{md4}, %{md5}, %{sha1}, %{sha256}, %{sha512}, %{size}.
# Variables can be truncated, e.g. %{sha256:80} returns only first 80 bits
#mail_attachment_hash = %{sha1}

# Settings to control adding $HasAttachment or $HasNoAttachment keywords.
# By default, all MIME parts with Content-Disposition=attachment, or inlines
# with filename parameter are consired attachments.
#   add-flags-on-save - Add the keywords when saving new mails.
#   content-type=type or !type - Include/exclude content type. Excluding will
#     never consider the matched MIME part as attachment. Including will only
#     negate an exclusion (e.g. content-type=!foo/* content-type=foo/bar).
#   exclude-inlined - Exclude any Content-Disposition=inline MIME part.
#mail_attachment_detection_options =

Получается остаётся только вопрос как правильно сконвертировать сжатые письма в формате Maildir.

Распаковывать очень не хочется, если честно.

infomeh ★★
() автор топика
Ответ на: комментарий от Anoxemian

Можно и так сделать потом.

Но смысл в том, что сейчас есть ящики в формате Maildir, где часть писем сжата gzip и сохранены под тем же именем файла.

И далее в настройке протоколов IMAP / POP3 подключен плагин zlib для того, что бы отдавались сжатые письма корректно:

protocol imap {
    mail_plugins = $mail_plugins imap_quota imap_acl zlib imap_zlib

И вот при конвертировании ящика в формате Maildir в формат mdbox:

dsync -u username mirror maildir:~/Maildir

Выводятся ошибки, что реальный размер файла не соответствует тому, что указан в имени файла.

Т.к. файл с письмом сжат gzip.

Может для команды

dsync -u username mirror maildir:~/Maildir

есть ключ, который ей укажет. что в начале нужно распаковать файл, а потом делать уже проверки.

Ну если нет. то придётся распаковывать файлы.

После включения mail_attachment_dir и конвертирования ящиков в формат mdbox, с учётом того, что процент дублирования вложений велик, размер занятого пространства должен снизиться.

Но распаковывать файлы не хотелось бы, но видимо придётся.

infomeh ★★
() автор топика
Последнее исправление: infomeh (всего исправлений: 1)
Ответ на: комментарий от Anoxemian

man dsync я открывал и читал, про предварительную распаковку я там не нашёл.

Поэтому и спросил здесь, надеясь что кто-то решал задачу без распаковки сжатых писем.

Распаковать письма и сделать конвертацию я могу и так. Но их очень много.

А по поводу дедупликции в случае использования общего хранилища вложений она и так будет работать.

Считается хэш сумма вложения и далее под именем хэша файл сохраняется в общее хранилище.

В итоге копия вложения в хранилище будет одна для всех писем.

Если не знаешь, то всё равно спасибо за желание помочь.

infomeh ★★
() автор топика
Последнее исправление: infomeh (всего исправлений: 1)
Ответ на: комментарий от infomeh

а вообще, как бы сделал я: делаешь новый сервер, по своим нуждам, десятикратный imapsync, перевод mx на новое место. ты решаешь странную задачу

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Проблема существует для меня. Места относительно не слишком много, а пользователей несколько тысяч.

Останавливать нельзя.

Резервного сервера тоже пока нет. Всё в процессе.

Поэтому буду распаковывать и менять формат ящиков, уже проверил проходит штатно, даже с учётом одного большого ящика есть высвобождение пространства.

infomeh ★★
() автор топика

Подскажите, как чистить mail_attachment_dir в случае, если письма со всех почтовых ящиков, к которым относятся вложения в хранилище будут удалены, то что будет с файлами вложений в общем хранилище?

infomeh ★★
() автор топика
Ответ на: комментарий от infomeh

Если удаляешь через dovecot то вложения удаляются соответственно до последнего и затем до конца (там хардлинки). Если удалил почтовый ящик с логами то вложения останутся навсегда. Поэтому перед удалением ящика удаляй из него всё через doveadm.

doveadm -v expunge -d -u USERNAME mailbox '*' all
doveadm -v purge -u USERNAME
rm -rf /var/mail/USERNAME

По сжатию, тебе всё равно придётся переходить на формат хранилища mdbox (в нём также есть сжатие, проверь). И если ты хочешь вложения из старых писем переместить то придётся всё перегонять, иначе туда будут попадать только новые.

Возможно ты сможешь переконвертировать по частям, по одному пользователю. Сделай макет и попробуй на нём.

sin_a ★★★★★
()
Последнее исправление: sin_a (всего исправлений: 1)
Ответ на: комментарий от sin_a

Спасибо за разъяснение.

Я уже посмотрел, что там хардлинки на хэш файл.

Добавил пояснение в шапку темы.

Если удалил почтовый ящик с логами то вложения останутся навсегда. Поэтому перед удалением ящика удаляй из него всё через doveadm.

За уточнение большое спасибо, учту.

Скажите пожалуйста, проблем со сжатием не будет при последующем переносе и конвертации в другой формат ящика?

А то сейчас приходится распаковывать старые письма в Maildir и только потом делать конвертацию.

infomeh ★★
() автор топика
Последнее исправление: infomeh (всего исправлений: 1)
Ответ на: комментарий от infomeh

Мне не приходилось конвертировать из maildir со сжатием. Из maildir когда то давно конвертировал, вроде прошло нормально. Вообще, если не ошибаюсь, dovecot позволял сжатие только на mdbox.

В любом случае имеет смысл сделать макет. Можно скопировать на него используемый ящик который вызывает сомнения и попробовать конвертацию. Заодно можно будет посмотреть поведение при удалении: создать две учётные записи и между ними посылать файлы. А также проверить поведение при конвертации и как будет работать почта во время и после, откуда будет dovecot отдавать пользователю почту и чем это определяется.

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Можете подсказать что лучше использовать для mail_attachment_fs, sis posix или просто posix?

Сейчас я выставил sis posix.

infomeh ★★
() автор топика
Последнее исправление: infomeh (всего исправлений: 1)
Ответ на: комментарий от infomeh

Честно говоря я взял все значения кроме mail_attachment_dir из образца. То есть, также sis posix.

В моём случае FS’s own deduplication не используется: posix : No SiS done by Dovecot (but this might help FS’s own deduplication)

sin_a ★★★★★
()
Последнее исправление: sin_a (всего исправлений: 1)
Ответ на: комментарий от sin_a

Это я читал, интересует практический опыт сравнения.

Спасибо.

infomeh ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.