Maildrop: Фильтр почты по дате: заголовок - PullRequest
1 голос
/ 31 января 2011

Я использую цепочку getmail + maildrop + mutt + msmtp с сообщениями, хранящимися в Maildir.Меня беспокоит очень большой почтовый ящик, поэтому я хотел организовать почту по дате следующим образом:

Maildir
|-2010.11->all messages with "Date: *, * Nov 2010 *"
|-2010.12->same as above...
|-2011.01
`-2011.02

Я много гуглил и читал о языке mailfilter, но мне все еще сложно написать такой фильтр.В архивах списков рассылки Maildrop почти ничего нет (насколько я просканировал).На https://unix.stackexchange.com/questions/3092/organize-email-by-date-using-procmail-or-maildrop, есть полу-решение, но оно мне не нравится, потому что я хочу использовать заголовок «Date:» и сортировать по месяцам, например, «YEAR.MONTH» в цифрах.Любая помощь, мысли, ссылки, материалы будут оценены.

1 Ответ

1 голос
/ 20 декабря 2011

Используя в основном man страниц, я предложил следующее решение для использования в Ubuntu 10.04.Создайте файл mailfilter с именем, например, mailfilter-archive, со следующим содержимым:

DEFAULT="$HOME/mail-archive"
MAILDIR="$DEFAULT"

# Uncomment the following to get logging output
#logfile $HOME/tmp/maildrop-archive.log

# Create maildir folder if it does not exist
`[ -d $DEFAULT ] || maildirmake $DEFAULT`

if (/^date:\s+(.+)$/)
{
    datefile=`date -d "$MATCH1" +%Y-%m`
    to $DEFAULT/$datefile
}

# In case the message is missing a date header, send it to a default mail file
to $DEFAULT/inbox

При этом используется команда date, принимающая содержимое заголовка date в качестве ввода (при условии, что оно формат RFC-2822 ) и создание отформатированной даты для использования в качестве имени почтового файла.

Затем выполните следующие действия для существующих почтовых файлов для архивирования ваших сообщений:

cat mail1 mail2 mail3 mail4 | reformail -s maildrop mailfilter-archive

Если содержимое mail-archive выглядит хорошо, вы можете удалить почтовые файлы mail1, mail2, mail3, mail4 и т. Д.

...