Повторная отправка электронного письма из командной строки

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

У меня есть точное письмо, которое было получено в виде текстового файла (заголовки + тело в кодировке base64). Как я могу отправить очень похожее письмо из одной из наших систем?

Я старался

mail -s "Test" me@nowhere.net < mail.txt

Но он помещает весь текстовый файл в тело.

заранее спасибо Йенс

2 ответа

Если машина имеет sendmail Программа совместимости установлена ​​(обычно она должна быть, это было проверено с установленным постфиксом), затем вы можете использовать команду, подобную этой:

sendmail -i -f from@example.org to@example.org <test.mail

С test.mail выглядит так, например:

From: from@example.org
To: to@example.org
Subject: Test
X-Spam-Flag: NO

some content

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

В соответствии с RFC 5322 Internet Message Format тело сообщения начинается после пустой строки.

Ты можешь использовать awk напечатать все в mail.txt после первой пустой строки, вот так:

awk '/^$/,0' mail.txt

Так что вы могли бы сделать что-то вроде

awk '/^$/,0' mail.txt | mail -s "Test" me@nowhere.net

Это, однако, начнет вывод с пустой строки. Если вы хотите избежать этого, используйте немного более сложный awk спектр:

awk 'p; !/./{p=0}/^$/{p=1}' mail.txt | mail -s "Test" me@nowhere.net

Этот последний трюк я подхватил здесь.

Другие вопросы по тегам