Вчера вечером я подписался на рассылку, а сегодня утром обнаружил, что мой фильтр procmail не применяется ко многим сообщениям рассылки. Теперь у меня в почтовом ящике куча менее важных сообщений рассылки, перемежающихся с более важными рабочими письмами.
Можно ли снова пропустить все письма в моем почтовом ящике через фильтры procmail?
Примечание: я использую формат maildir.
решение1
Я думаю, это сработает. Вам нужно запустить formail
, чтобы переформатировать почту и отправить ее обратно через procmail
.
Из каталога Maildir:
cat * | formail -s procmail
решение2
Вы можете сделать это на месте, например так:
$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done
После этого вам придется удалить каждое оригинальное письмо, иначе procmail его продублирует.
Он также запишет все как новое. Я не уверен, что это хороший способ сделать.
решение3
Если вы используете Mutt, вы можете передать письмо через procmail, а также удалить оригинал из своего почтового ящика с помощью ключевой команды, например такой:
muttrc:
macro index y '<enter-command>unset wait_key<enter><tag-prefix><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><tag-prefix><delete-message><enter-command>set wait_key<enter>'
macro pager y '<enter-command>unset wait_key<enter><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><delete-message><enter-command>set wait_key<enter>'
решение4
Похоже, что для этой проблемы нет хорошего решения: procmail, похоже, принимает только входящую почту от stdin
, что ограничивает приложения maildir.
Я столкнулся с похожей ситуацией, и лучшим решением, которое соответствовало моим потребностям, было просто продублировать то, что я хотел procmail
сделать, но чего он определенно не может сделать, с помощью моего собственного небольшого скрипта, которого должно быть достаточно, если у вас есть только одно или два простых правила, о которых вам нужно позаботиться:
cd ~/Maildir/
sh -c 'for i in `egrep -l "^Delivered-To: [email protected]" cur/*`; \
do mv $i .FreeBSD.perforce/$i; done'
Это тоже не оптимально, но, по крайней мере, не должно возникнуть проблем с ненужным вводом-выводом и потенциальной потерей данных.