Повторная отправка электронного письма из командной строки
Я хочу воспроизвести проблему, связанную с почтой, касающуюся почты, отправленной из системы, которую я не контролирую. Для этого я хочу подражать этой проблемной электронной почте.
У меня есть точное письмо, которое было получено в виде текстового файла (заголовки + тело в кодировке 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
Этот последний трюк я подхватил здесь.