Вопрос или проблема
Я узнал, что добавив “,a” к имени файла в maildir, программа Evolution считает письмо важным сообщением. Поэтому я хотел бы пометить некоторые сообщения с помощью Procmail, но что бы я ни делал, я хожу по кругу, потому что не знаю имя файла, прежде чем оно доставлено Procmail, и когда оно уже доставлено, оно сразу переименовывается различными внешними механизмами при перемещении из new
в cur
. Есть ли решение только с Procmail? Я знаю другие решения, но они меня здесь не интересуют.
Ответ или решение
Для того чтобы добавить суффикс ",a" к имени файла, который обрабатывается Procmail и помещается в папку Maildir, вам потребуется выполнить несколько шагов, так как изменение имени файла происходит в момент его доставки. Проблема заключается в том, что вам нужно изменить имя файла перед его перемещением из папки new
в папку cur
, и это действительно может вызвать сложности.
Решение проблемы с Procmail
Для реализации вашей задачи вы можете использовать переменную :0
для фильтрации и управлять доставкой сообщений с помощью Procmail. Ваша цель состоит в том, чтобы передать имя файла для дальнейшей обработки.
Шаг 1: Настройка Procmail
В файл конфигурации Procmail (обычно находится по пути ~/.procmailrc
) добавьте следующие строки:
# Установим директорию Maildir
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR/new/
LOGFILE=$MAILDIR/procmail.log
# Фильтрация входящих сообщений
:0
* ^Subject:.*ваша_тема_или_шаблон
{
# Помечаем сообщение как важное, добавляя ",a" к имени файла
:0 c: FOLDER
| formail -A "X-Important: yes" # Вы можете использовать этот заголовок для идентификации важности
:0 e
| formail -Z -x "X-Important: yes" # Удаляем заголовок после обработки
:0
# Здесь перемещаем сообщение
* !^FOLDER
{
# Перемещаем в папку cur с добавлением суффикса ",a"
:0
* ? test -f $MAILDIR/new/*
| cat - > $MAILDIR/cur/$(basename $MAILDIR/new/*),a # Убедитесь, что файл был правильно перенесен и переименован
}
}
Шаг 2: Логирование и отладка
Не забудьте активировать логирование, чтобы проверить работу правил обработки:
LOGFILE=$HOME/mail.log
Следите за содержимым лог-файла для диагностики проблем, которые могут возникнуть при настройке.
Уточнение работы
- При получении сообщения, соответствующего заданным условиям в
:0
, оно будет помещено в специально отобранный "пул" (FOLDER
). - Затем с помощью команды
formail
мы добавляем или перенаправляем заголовки. Это также позволяет сохранить информацию о важности сообщения. - Важно перемещать файл перед его окончательной доставкой в
cur
, добавляя нужный суффикс к имени файла.
Заключение
Предложенное решение требует точного понимания работы Procmail, а также корректной настройки фильтров и логирования. Это способно обеспечить борьбу с проблемой, где имя файла заранее неизвестно. Настройте скрипт в соответствии с вашими требованиями, и вы сможете эффективно помечать важные сообщения в вашем Maildir.