Как запустить procmail в командной строке и указать файл .eml в качестве входных данных?

Предполагая, что ваши имена никогда не содержат пробелов и что ваш names.txtфайл имеет заголовок в первой строке, как показано, вы можете сделать:

tail -n +2 names.txt | while read old new; do
    mv -i "$old" "$new"
done 

tail -n +2напечатает все строки файла, начиная со второй, поэтому заголовок будет пропущен. Затем опция -iдля GNU mvговорит ему запрашивать вас перед перезаписью существующего файла (на случай конфликта имен ).

1
28.03.2020, 14:11
1 ответ

Вы можете протестировать скрипт с помощью

procmail -m VERBOSE=yes recipe.rc <message.eml

Конечно, пути к файлу рецепта и/или образцу сообщения могут быть абсолютными или относительными. С помощью VERBOSE=yesвы получаете подробное ведение журнала (при стандартной ошибке, если вы не указали другое место назначения с помощью LOGFILEв файле задания ); с -mвы избегаете доставки в DEFAULT, если не срабатывает рецепт.

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

Как бы там ни было, .emlплохо стандартизирован, хотя вы, вероятно, имеете в виду формат RFC5322 (, урожденный 822 ), а это именно то, что ожидает Procmail. Однако существует ряд программ, которые используют расширение .emlдля совершенно разных форматов.

Дополнительные советы по отладке см. также вhttp://www.iki.fi/era/mail/procmail-debug.html

1
19.03.2021, 02:31

Теги

Похожие вопросы