Рекомендации по дедупликации для хранения электронной почты

Предлагаемая модель хранения заключается в том, чтобы хранить вложения в отдельных файлах (или больших двоичных объектах) и сохранять само сообщение электронной почты в виде составного сообщения MIME со ссылками на вложенный файл и его кодировку. Это позволяет пользователю показывать оригинал, но не требует от меня фактического сохранения менее эффективного base64 с сообщением. Большую часть времени я смогу хранить только длину строки base64, которая была использована.

Таким образом, мы можем выполнить дедупликацию на уровне вложений.

Но как дедупликация может пойти дальше? Вот мои мысли:

  • Все вложения и электронные письма могут быть сжаты (дедуплицированы на уровне байтов), конечно, индивидуально.
  • Я мог бы сжать наборы из 12 вложений в один файл. Сжатие нескольких файлов одного типа (например, PDF-файлов), даже файлов одного отправителя, может быть более эффективным.
  • Сообщения MIME также могут быть сжаты в наборах.
  • Я не обеспокоен эффективностью поиска, потому что будет использоваться полнотекстовая индексация.
  • При поиске электронных писем, конечно, использовался бы тип полнотекстовой индексации, который не был бы сжат.
  • Распакованный кеш будет создан при первом поступлении электронного письма и будет удален только после того, как электронное письмо не будет просмотрено какое-то время.

Есть ли у вас какие-либо советы в этой области? Что является нормальным для системы хранения электронной почты?

1 ответ

  1. декодировать все части mime base64, а не только вложения
  2. вычислить безопасный хэш его содержимого
  3. замените часть ссылкой в ​​теле письма или создайте собственный заголовок со списком извлеченных частей пантомимы
  4. хранить в хранилище BLOB-объектов под безопасным хэшем (хранилище с адресуемым содержимым)
  5. используйте счетчик ссылок для удаления и сборки мусора или более умный двойной счетчик (https://docs.wildduck.email/#/in-depth/attachment-dedupplication , https://medium.com/@andrewsumin/efficient-storage-how -мы-спустились-с-50-pb-до-32-pb-99f9c61bf6b4)
  6. или сохранить каждое ссылочное отношение hash-emailid в БД
  7. тщательно проверяйте и контролируйте сгибы base64, некоторые электронные письма имеют более короткую строку посередине, некоторые имеют дополнительные символы (точка, пробел) в конце
  8. хранить параметры кодирования (складки, хвост) в ссылке в теле письма для точной реконструкции
  9. сжимайте сжимаемые вложения, будьте осторожны с адресуемым хранилищем содержимого, поскольку сжатие изменяет его хэш содержимого
  10. JPEG-изображения могут быть значительно сжаты без потерь с использованием JPEG XL или https://github.com/dropbox/lepton.
  11. wav-файлы можно сжимать с помощью flac и т. д.
  12. тип содержимого указан отправителем, одно и то же вложение может иметь разные типы содержимого
  13. цитируемые печатные закодированные части трудно точно декодировать и реконструировать. Есть много параметров кодировщика, потому что каждый кодировщик экранирует разные символы и линии сгиба по-разному.
  14. Будьте осторожны с форматом ссылки, чтобы злоумышленник не мог создать электронное письмо со ссылкой и получить вложение, которое ему не принадлежит. Или обнаружить и избежать ссылки в полученных электронных письмах
  15. небольшие части пантомимы, возможно, не стоит извлекать, пока в системе не появится определенное количество дубликатов.
Другие вопросы по тегам