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


9

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

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

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

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


Ответы:


8

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

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

1

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


Что ж, решение, которое я ищу, никак не может зависеть от сервера. Я должен предположить, что сервер - просто тупой IMAP, без поддержки ничего умного.

1

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

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


Это не ответ. Фильтрация должна происходить на сервере IMAP, над которым у вас нет контроля.
reinierpost

1

Для легкости вы можете попробовать Sift .


Я хотел бы попробовать это до imapfilter.
Джошуа К

Это кажется заброшенным и необслуживаемым, в отличие от imapfilter. Поправьте меня если я ошибаюсь.
selurvedu

1

Еще один способ - использовать фильтр изображений 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, чтобы использовать его. Автор обещает предоставить больше примеров в ближайшем будущем и открыт для запросов функций и запросов извлечения.


0

В операционных системах 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директивой in .fetchmailrc(где 600 - это количество секунд между опросами).


Это не ответ. Фильтрация должна происходить на сервере IMAP.
reinierpost
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.