В вашем вопросе не указывается, какие именно письма вы хотите скопировать, но я предполагаю, что вы имеете в виду доставленные письма в почтовых ящиках пользователей.
Это просто файлы в файловой системе, поэтому все, что вам нужно сделать, это использовать обычную программу резервного копирования, которая создает резервные копии файлов. Некоторые варианты:
... И многое другое. Я предлагаю вам изучить один или несколько из этих вариантов, а затем задать более подробный вопрос.
К сожалению, невозможно заполнить переменную из функции. Даже если Вы можете вызвать функцию <display-address>
:push @
, :exec display-address
или использовать lua в neomutt — это отображается в нижней панели, но переменная остается пустой.
После обсуждения этой проблемы сегодня на #neomutt IRC лучшим вариантом сейчас является использование временного файла.
from header
, передает его в awk для получения только адреса электронной почты -и перенаправляет вывод в /tmp/sender 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. Вероятно, есть проблема с расширением переменной внутри макроса, так как она заключена в двойные кавычки, и так и должно быть. Так что это все еще, вероятно, невозможно, по крайней мере, легко.
Этот ответ основан на ответеЯкуба Джиндры . К сожалению, у меня не было достаточно репутации, чтобы опубликовать его в качестве комментария к его правильному ответу, но я подумал, что это может помочь другим, столкнувшимся с той же проблемой.
Это обходной путь к его макросу, который может решить проблему однократного расширения:
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, которую следует расширить.
И снова заслуга Якуба Джиндры.