Как я могу настроить dovecot на сжатие / архивирование старых писем (скажем, шести месяцев назад), чтобы пользователи могли их читать, чтобы сэкономить драгоценное место на сервере?
Настройка сжатия электронных писем состоит из двух этапов:
Создайте файл конфигурации для dovecot, чтобы включить плагин zlib
Файлы конфигурации Dovecot обычно находятся в /etc/dovecot/conf.d/
Вы можете создать файл с именем 35-zlib.conf
в этом каталоге с этим контентом
# Enable Zlib for imap
protocol imap {
mail_plugins = $mail_plugins zlib
}
# Enable Zlib for pop3
protocol pop3 {
mail_plugins = $mail_plugins zlib
}
# Increase memory allowed for imap as it costs more to read compressed files
service imap {
vsz_limit = 1024MB
}
Убедитесь, что ваша конфигурация правильная с doveconf -n
, затем перезапустите dovecot, используя service dovecot restart
Затем нам нужно каждый день запускать скрипт для сжатия писем старше 6 месяцев.
Надеюсь, это можно сделать с помощью [подробный] найти команду
В /etc/cron.daily/
создать файл, назовем его archive-email
Напишите в нем этот скрипт
#!/bin/sh
find /var/qmail/mailnames -mtime +182 -type f -regex ".*\.$HOSTNAME,.*S=.*,[a-yA-Y]*" ! -name "*\.gz*" -exec cp -a "{}" /tmp/ \; -exec sh -c "basename \"{}\" | xargs -L1 -I[] gzip \"/tmp/[]\"" \; -exec sh -c "[ -f \"{}\" ] && (basename \"{}\" | xargs -L1 -I[] mv \"/tmp/[].gz\" \"{}Z\" && rm \"{}\") && echo \"{}\" >> /var/log/archived-emails.log || (basename \"{}\" | xargs -L1 -I[] rm \"/tmp/[]\")" \;
Не забывай бежать chmod +x
в созданном файле, чтобы сделать его исполняемым
/var/qmail/mailnames
Обычно это корневая папка, в которой хранятся электронные письма, это может зависеть от вашей конфигурацииВ
-mtime +182
модификатор позволяет нам находить только файлы, созданные более 182 дней назад (в основном 6 месяцев), изменять их соответствующим образомС
-type f -regex ".*\.$HOSTNAME,.*S=.*,[a-yA-Y]*"
модификатор, мы хотим найти только файлы электронной почты, в которых нет флага Z, которые обычно называются в этом формате1505740244.M351559P24632.my.domain.com,S=38204,W=40910:2,S
Подробнее о формате maildir ВотНаконец, мы копируем электронные письма для сжатия в
\tmp
dir, чтобы избежать конфликта при сжатии, мы запускаем команду gzip для файла и перемещаем их снова, если файл все еще существует в исходном местоположении, добавляя флаг Z в их имени, чтобы указать, что они сжаты, чтобы мы не сжимали их снова и, наконец, удалить исходный файлЭтот процесс был реализован в соответствии с рекомендациями голубятня вики но
maildirlock
утилита есть ошибка начиная с версии 2, которая никогда не исправлялась, поэтому я не использую ее, однако вряд ли это вызовет проблемыТакже мы регистрируем все успешно заархивированные файлы в
\var\log\archived-emails.log
Вы можете сначала запустить команду в своем терминале без exec, чтобы убедиться, что вы сопоставляете правильные файлы
find /var/qmail/mailnames -mtime +182 -type f -regex ".*\.$HOSTNAME,.*S=.*,[a-yA-Y]*"