mutt - фильтровать подобные сообщения

В вашем вопросе не указывается, какие именно письма вы хотите скопировать, но я предполагаю, что вы имеете в виду доставленные письма в почтовых ящиках пользователей.

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

  • bacula или его форк, bareos (запись на ленты, реальные или виртуальные)
  • amanda (то же самое)
  • rsync-snapshot, (создает снимки на удаленных серверах)
  • backuppc (то же самое)

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

5
19.05.2017, 00:31
2 ответа

К сожалению, невозможно заполнить переменную из функции. Даже если Вы можете вызвать функцию <display-address>:push @, :exec display-addressили использовать lua в neomutt — это отображается в нижней панели, но переменная остается пустой.

После обсуждения этой проблемы сегодня на #neomutt IRC лучшим вариантом сейчас является использование временного файла.

  • Этот макрос направляет сообщение в formail, который возвращает from header, передает его в awk для получения только адреса электронной почты -и перенаправляет вывод в /tmp/sender
  • установить переменную $my _sender с содержимым /tmp/sender
  • предельный индекс с отправителем $my _
macro index,pager * \
"<pipe-message>formail -X from:|awk -F'[<>]' '{print $2}'>/tmp/sender<enter>\
:set my_sender=\"`cat /tmp/sender`\"\n\
l~f \"$my_sender\"\n" \
"Filter Messages Like"

Требования :формал

или вы можете использовать любую другую команду для анализа почтового адреса -из сообщения.


РЕДАКТИРОВАТЬ :работает только один раз за сеанс neomutt. Вероятно, есть проблема с расширением переменной внутри макроса, так как она заключена в двойные кавычки, и так и должно быть. Так что это все еще, вероятно, невозможно, по крайней мере, легко.

1
27.01.2020, 20:43

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

Это обходной путь к его макросу, который может решить проблему однократного расширения:

macro index,pager k "<pipe-message>formail -X from:|awk -F'[<>]' '{print \"set my_tmp_pipe_decode=\\\"\"$2\"\\\"\" }'>/tmp/sender<enter>:source /tmp/sender<enter>l~f $my_tmp_pipe_decode<enter>" "Filter Messages Like"

Основное отличие состоит в том, что вместо catчтения файла я попытался sourceего. Таким образом, у вас не будет проблемы с расширением переменных, и он будет работать столько раз, сколько вы хотите за один сеанс. По-видимому, sourceне является одноразовым расширением по сравнению с cat, поскольку это внутренняя команда mutt, однако cat— это внешняя команда bash, которую следует расширить.

И снова заслуга Якуба Джиндры.

1
11.05.2020, 21:57

Теги

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