Назад | Перейти на главную страницу

Есть ли способ фильтровать почту в удаленной учетной записи IMAP?

Ситуация: почтовый сервер с доступом только по протоколу IMAP. Проблема: я хочу иметь возможность фильтровать письма (помещать некоторые письма в разные папки, отмечать их как прочитанные и т. Д.).

У большинства новых почтовых клиентов есть такая возможность, но мне нужна отдельная программа фильтрации, так как мне нужно использовать различные почтовые клиенты для подключения к этому серверу.

В общем - что-то вроде procmail, но работающее по IMAP.

Программное обеспечение будет работать под управлением Linux или Solaris.

Быстрый гугл подбрасывает IMAPFilter похоже, что он делает то, что вы хотите:

  • Поиск сообщений с использованием множества доступных критериев в протоколе IMAP, таких как:
    • Статус (недавнее, непрочитанное и т. Д.) Сообщения.
    • Размер сообщения.
    • Возраст сообщения.
    • Сопоставление строки или шаблона регулярного выражения в заголовках или теле сообщения.
  • Возможность использовать логические операторы (и / или / нет) при поиске сообщений.
  • Для обработки сообщений доступны различные возможности, в том числе:
    • Удаление сообщений.
    • Перемещение сообщений в почтовый ящик на том же или разных серверах
    • Копирование сообщений в почтовый ящик на том же или на разных серверах.
    • Пометка сообщений или изменение флагов сообщений.
  • Список доступных и / или подписанных почтовых ящиков, а также поддержка расширения IMAP CHILDREN.
  • Создание, удаление, переименование, подписка или отмена подписки почтовых ящиков
  • Поддержка интернационализации (I18N).
  • Поддержка пространства имен сервера с использованием расширения IMAP NAMESPACE.
  • Подключения imap с шифрованием Secure Socket Layer (SSL) или Transport Layer Security (TLS) (порт 993).
  • Зашифрованные соединения с использованием расширения IMAP STARTTLS.
  • Аутентификация пользователя с помощью механизма аутентификации запрос-ответ (CRAM), в частности CRAM-MD5.
  • Поддержка Perl-совместимых регулярных выражений (PCRE).

Еще один способ - использовать imap-фильтр ruby ​​gem.

https://github.com/flajann2/imap-filter/blob/master/README.org

И пример DSL,

https://github.com/flajann2/imap-filter/blob/master/examples/default.imap

DSL основан на Ruby, но вам не нужно много знать Ruby, чтобы его использовать. Автор обещает предоставить больше примеров в ближайшем будущем и открыт для запросов функций и запросов на вытягивание.

Для абсолютной легкости вы можете дать Просеять попытка.

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

В противном случае, возможно, самый простой способ - это всегда открывать почтовый клиент, который выполняет сортировку и т. Д. Раньше возникали проблемы с блокировкой, когда несколько клиентов обращались к одному и тому же почтовому ящику IMAP, но я не видел их много лет.

В зависимости от вашего IMAP-сервера вы можете просто использовать некоторую реализацию сито. Я думаю, что лучшая опора для сита - это cyrus.

В операционных системах Linux и Unix вы можете использовать fetchmail для опроса вашей учетной записи электронной почты IMAP и передачи любых новых сообщений на procmail. Вы можете настроить procmail для запуска сценариев на основе совпадений шаблонов регулярных выражений в полученных сообщениях.

Для этого вам необходимо установить пакеты fetchmail и procmail. Следующая конфигурация позволила мне запускать сценарий для каждого нового сообщения электронной почты, полученного в мою учетную запись электронной почты. Я использовал Ubuntu 12.04 LTS.

В ~/.fetchmailrc:

# .fetchmailrc checks my e-mail account for new messages, sends them to procmail

set logfile /home/myusername/fetchmail.log

poll mail.domain.com protocol IMAP
    user "emailaccountname"
    password 'emailpassword'
    folder 'INBOX'
    keep
    ssl
    mda "/usr/bin/procmail -f %F"

Обратите внимание keep указанная выше директива, которая гарантирует, что сообщения не будут удалены с сервера IMAP после их получения.

В ~/.procmailrc:

# .procmailrc received e-mails from fetchmail and runs a script
PATH=/usr/bin:/usr/local/bin
LOGFILE=/home/username/procmail.log
SHELL=/bin/sh

# This rule triggers for every e-mail message:
:0
| `/home/username/myscript.sh`

В Интернете есть множество руководств по fetchmail и procmail, а также руководств по их интеграции (вот как я пришел к вышеупомянутому).

Теперь, если я убегу fetchmail или fetchmail -v сценарий /home/username/myscript.sh запускается один раз для каждого нового сообщения. Я могу запустить fetchmail в cron или настроить fetchmail для работы в качестве демона с set daemon 600 директива в .fetchmailrc (где 600 - количество секунд между опросами).