Удаление устаревшей электронной почты в mailbox-файлах

    Общий рейтинг статьи: 0 (проголосовало 0 )
    Опубликовано:  [просмотров 76]


    Мы уже неоднократно рассматривали разного рода решения для отправки и получения электронной почты. В большинстве из них используются почтовые ящики в формате maildir представляющие собой каталог с файлами, где каждое письмо представлено в виде отдельного файла, но иногда в простых системах используются почтовые ящики формата mailbox и в этом случае мы имеем один файл в который последовательно записаны все сообщения электронной почты.

    Я настоятельно рекомендую использовать почтовые ящики пользователей в формате maildir. Это прежде всего удобно и позволяет обойти ряд подводных камней присущих mailbox-ам,  но в ряде проектов используются почтовые ящики формата mailbox и это связано с историческим наследием проекта.

    Для очистки таких почтовых ящиков используется утилита archivemail. Эта утилита есть практически во всех дистрибутивах Linux и в Ubuntu она устанавливается командой:

    # aptitude install archivemail

    Данная утилита может как удалять старую почту из файлов формата mailbox, так и перемещать ее в файл-архива. В результате запуска утилиты все письма старше параметра --days будут или перемещены в архив (другой файл) или удалены.

    Одной из особенностей ее использования является необходимость запуска утилиты архивирования от имени пользователя которому принадлежит mailbox-файл.

    Для запуска утилиты archivemail при помощи cron рекомендую использовать следующий скрипт (mailbox-clean.sh):

    #!/bin/sh

    clean_box=$1
    clean_older=31

    if [ -z "$1" ];
       then
       echo "Укажите имя локального пользователя чей ящик будем чистить"
       exit 0
       fi

    cd /var/spool/mail/
    su $clean_box -c "/bin/archivemail --quiet --delete --days $clean_older /var/spool/mail/$clean_box"

    Запуск данного скрипта можно просто добавить в /etc/crontab на ежедневное удаление старой почты из аккаунтов локальных пользователей. Скрипт принимает единственным параметром имя пользователя почтовый ящик которого будем чистить, а период удаления задан внутри скрипта.

    Обратите внимание, на еще одну особенность использования утилиты. А именно, то что для ее работы требуется ровно столько же свободного пространства сколько занимает mailbox файл, в противном случае ее работа завершиться с ошибкой. 


    Связанные записи в блоге

    Обсуждение статьи

    Ваш комментарий: