Как добавить флаг “,a” к имени файла, доставляемому в maildir с помощью procmail?

Вопрос или проблема

Я узнал, что добавив “,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

Следите за содержимым лог-файла для диагностики проблем, которые могут возникнуть при настройке.

Уточнение работы

  1. При получении сообщения, соответствующего заданным условиям в :0, оно будет помещено в специально отобранный "пул" (FOLDER).
  2. Затем с помощью команды formail мы добавляем или перенаправляем заголовки. Это также позволяет сохранить информацию о важности сообщения.
  3. Важно перемещать файл перед его окончательной доставкой в cur, добавляя нужный суффикс к имени файла.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...