Легкий? дешевый? не действительно, но определенно возможный. Так как Вы не идете для бюджетного решения (это - шесть чисел только для металла), Вы, вероятно, хотели бы использовать поддержку со стороны заплаченного, предприятия, ОС.
Быстрый Google подбрасывает IMAPFilter, который похож на него, делает то, что Вы хотите:
- Ища сообщений с помощью многих доступных критериев в протоколе протокола IMAP, таких как:
- Состояние (недавний, непрочитанный, и т.д.) сообщения.
- Размер сообщения.
- Возраст сообщения.
- Соответствие строки или образца регулярного выражения в заголовках или теле сообщения.
- Способность использовать логические операторы (and/or/not) при поиске сообщений.
- Различные возможности, доступные для обработки сообщений, включая:
- Удаление сообщений.
- Перемещение сообщений к почтовому ящику в тех же или различных серверах
- Копирование сообщений к почтовому ящику в тех же или различных серверах.
- Отмечание сообщений или изменение флажков сообщений.
- Список доступных и/или подписанных почтовых ящиков, наряду с поддержкой ДОЧЕРНЕГО расширения IMAP.
- Создание, удаляя, переименовывая, подписываясь или отказываясь от подписки почтовые ящики
- Интернационализация (I18N) поддержка.
- Поддержка пространства имен сервера с помощью расширения ПРОСТРАНСТВА ИМЕН IMAP.
- Уровень защищенных сокетов (SSL) или Безопасность транспортного уровня (TLS) зашифровали imaps (порт 993) соединения.
- Зашифрованные соединения с помощью расширения STARTTLS IMAP.
- Аутентификация пользователя с Механизмом аутентификации типа "запрос-ответ" (CRAM), конкретно CRAM-MD5.
- Поддержка Perl совместимых регулярных выражений (PCRE).
В зависимости от Вашего сервера IMAP Вы могли просто использовать некоторую реализацию решета. Я думаю, что лучшая поддержка решета оказывается cyrus.
Как Вы уже упомянули, procmail является правильным способом сделать это, таким образом, Вы могли спросить своего почтового поставщика, если они поддерживают его на всякий случай - не причиняет боль.
Иначе возможно, самый легкий путь состоит в том, чтобы иметь почтовый клиент, всегда открываются, который делает сортировку и т.д. Там раньше блокировал проблемы с несколькими клиентами, получающими доступ к тому же почтовому ящику IMAP, но я не видел тех, которые в течение многих лет.
Для чистой легкости Вы могли дать, Отсеивают попытку.
В операционных системах 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 - количество секунд между опросами).
Еще один способ - использовать imap-фильтр рубинового камня.
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, чтобы использовать его. Автор обещает предоставить больше примеров в ближайшем будущем и открыт для запросов функций и запросов на вытягивание.