Чи є спосіб фільтрації пошти у віддаленому обліковому записі IMAP?


9

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

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

Взагалі - щось на кшталт procmail, але працює над IMAP.

Програмне забезпечення буде запускатися на Linux або Solaris.


Відповіді:


8

Швидкий google піднімає IMAPFilter, який виглядає так, що робить те, що вам потрібно:

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

1

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


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

1

Як ви вже згадували, procmail - це правильний спосіб зробити це, тому ви можете попросити свого постачальника електронної пошти, чи підтримує він його на всякий випадок - не зашкодить.

В іншому випадку, можливо, найпростішим способом є завжди відкритий клієнт електронної пошти, який виконує сортування тощо. Раніше виникали проблеми із блокуванням декількох клієнтів, які отримували доступ до однієї поштової скриньки IMAP, але я таких років не бачив.


Це не відповідь. Фільтрація повинна відбуватися на сервері IMAP, над яким у вас немає контролю.
reinierpost

1

Для явного lightweightness, ви могли б дати просіяти спробувати.


Я б хотів, щоб я спробував це перед Imapfilter.
Джошуа К

Це, здається, покинуте і без збереження, на відміну від Imapfilter. Виправте мене, якщо я помиляюся.
selurvedu

1

Ще один спосіб - використовувати rubin gem imap-filter.

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 в кроні або налаштувати fetchmail для запуску як демон з set daemon 600директивою в .fetchmailrc(де 600 - кількість секунд між опитуваннями).


Це не відповідь. Фільтрація повинна відбуватися на сервері IMAP.
reinierpost
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.