Можно использовать fetchmail и procmail, чтобы сделать это. Procmail может быть настроен для выполнения сценария, который тестирует, если электронное письмо имеет закодированные вложения какой-либо пантомимы (это могло бы быть столь же просто как просто захват файла для заголовка MIME), и затем вызывает munpack, если он имеет.
Procmail может выполнить в значительной степени что-либо, что Вы хотите, таким образом, необходимо смочь заставить его выполнять сценарий PHP или обертку оболочки.
Я полагаю, что это будет работать. Необходимо работать formail
переформатировать почту и передать его обратно через procmail
.
Из каталога Maildir:
cat * | formail -s procmail
Вы смогли делать это на месте, как это:
$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done
Необходимо удалить каждую исходную электронную почту впоследствии, или иначе procmail копирует ее.
Это также запишет все как новое. Я не уверен в хорошем способе обработать это.
procmail < $m && rm $m
вместо procmail < $m ; rm $m
таким образом, по крайней мере, сообщение не удалено, если procmail перестал работать.
– rrauenza
31.12.2017, 09:15
Кажется, что нет никакого хорошего решения для этого: procmail только, кажется, принимает почтовый вход от stdin
, который ограничивает maildir приложения.
Я столкнулся с аналогичной ситуацией, и лучшее решение, которые соответствуют моим потребностям, просто копировало то, что я хотел procmail
чтобы сделать, но что это совершенно определенно не может сделать с моим собственным небольшим сценарием, который должен быть достаточным, если у Вас только есть одно или два простых правила, что необходимо заботиться о:
cd ~/Maildir/
sh -c 'for i in `egrep -l "^Delivered-To: perforce@freebsd.org" cur/*`; \
do mv $i .FreeBSD.perforce/$i; done'
Это не оптимально, также, но по крайней мере это не должно страдать от бесполезного IO и потенциальных проблем данных потерь.
Если вы используете MUTT, вы можете сдать электронную почту через ProCmail, а также удалить оригинал с вашего почтового ящика с помощью команды ключей что-то подобное:
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>'