Я нахожусь в папке cur в магазине maildir. Я хочу передать сообщение ... передать его команде ... и выплюнуть тело сообщения. Просто.
Пример: если это mime-сообщение ... и есть версия с открытым текстом ... покажите мне открытый текст ... Если это HTML-сообщение без открытого текста ... тогда визуализируйте HTML и дайте мне некоторую подобие текста сообщения ... Если это просто изображение ... ничего не отображать .. или может быть заполнитель [изображение] ..
Зачем мне это нужно? Я пытаюсь обучить spamassassin ... и я хочу выплюнуть ключевые заголовки и выдержку из тела письма, чтобы я мог быстро просмотреть все сообщения и решить, какие из них являются законными, какие ветчинными, а какие спамовыми .. . Я уже извлекаю список сообщений из maildir, которые соответствуют заданному баллу X-Spam ... и показываю нужные заголовки ... Мне просто нужно добавить тело сообщения ... но возникла проблема
Некоторые другие вопросы здесь предполагают использование mutt. Я установил это и посмотрел на него - но из того, что я мог видеть - мне пришлось бы указать его на конкретный maildir ... что усложнит процесс ... в идеале я бы хотел что-то, что просто "интерпретирует" электронное письмо сообщение из файла и отображает его
Ваша помощь очень ценится. Спасибо
Мне удалось придумать следующий сценарий ... но его все еще не хватает. Все еще дорабатывала, когда я заметил, что Эндрю предложил munpack
из mpack
пакет
Я нашел инструмент reformime
для извлечения простой / текстовой части сообщения mime. Я использовал GNU recode
тоже, но обнаружил, что это удаляет материал, который не цитируется для печати (QP). поэтому я решил использовать sed
, вероятно, довольно неэффективно, чтобы удалить код QP .. и заменить общие символы, которые были экранированы QP.
Вот сценарий, который я придумал ... Теперь я могу зайти в папку maildir - запустить сценарий ... и получить сводку сообщений. Предоставление аргумента будет соответствовать определенным оценкам с использованием регулярного выражения.
#!/bin/bash
DEFSC="3[0-9]"
SPAMSCORE=${1-$DEFSC}
echo "Scanning for messages with a Spam Score filter of ${SPAMSCORE}"
# Get a list of messages with desired spam score
grep "^X-Spam-Score: ${SPAMSCORE}\$" * | sed 's/:X-Spam-Score: [0-9-]*//g' > ~/tmpspam
while read MSG; do
# Extract Message ID for easy reading
MSGID=$(echo "${MSG}" | grep -oe '^[0-9]*')
echo "================= ${MSGID} ================="
# Find the headers that we are looking for
grep -e "^X-Spam-Status" -e "^Subject:" -e "^From:" ${MSG} | sed -r 's/=\?[^?]*\?[^?]*\?([^?]*)\?=/\1/g;s/=20/ /g;s/=2C/,/g;s/=3A/:/g'
# Use reformime to find which mime section is text/plain
MIMESEC=$(cat ${MSG} | ~/reformime -i | grep -B 1 '^content-type: text/plain' | head -n 1 | grep -oe "[0-9\.]*$")
# Display that Mime Section
echo '- - - - - - - - - - - - - - - - - - - - - - '
cat ${MSG} | ~/reformime -e -s ${MIMESEC} | awk '/./{a=a+1;if(a<=10){print $0;}}' | sed -r 's/https?:\/\/[A-Za-z0-9.?%+_@&;=\/-]*/<<url>>/g'
echo '============================================'
done < ~/tmpspam
# Delete Temp File
rm -f ~/tmpspam
Например:
skim_msgs.sh '4[0-9]'
ВЫВОД: (находит одно сообщение)
Scanning for messages with a Spam Score filter of 4[0-9]
================= 1518851309 =================
From: John Doe <jdoe@gmail.com>
Subject: Watch "If Cops Talked Like Pilots" on YouTube
X-Spam-Status: No, score=4.1
- - - - - - - - - - - - - - - - - - - - - -
<<url>>
============================================