Есть Ubuntu 2.6.24 с exim4(4.69-2) на борту. Из MySQL достается список адресов на которые принимаем почту. Все эти адреса объединены в один виртуальный mailbox т.е. все письма пришедшие на эти адреса скидываются в этот общий ящик.
А теперь мне нужно как-то обрабатывать каждое приходящее письмо. То есть нужно навесить что-то вроде обработчика события на каком-то скриптовом языке (оптимально Ruby или Python) который будет что-то вытворять с содержимым письма.
Мне говорили что-то про procmail который сидит в основе exim но никакой нормальной документации нагуглить не удалось.
Подскажите пожалуйста как проще всего такое реализовать?
Решено: exim4 (обработка виртуального ящика)
Модераторы: SLEDopit, Модераторы разделов
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Решено: exim4
нормальная документация к procamail - это
Код: Выделить всё
diesel@:~$ apropos procmail
procmail (1) - autonomous mail processor
procmailex (5) - procmail rcfile examples
procmailrc (5) - procmail rcfile
procmailsc (5) - procmail weighted scoring technique
i Уведомление от модератора к программированию тема имеет мало отношения, переношу в администрирование для начинающих
-
butch
- Сообщения: 331
- ОС: :OC
Re: Решено: exim4
внутри экзима можно делать оооочень многое =)
конкретнее содержимое задачи пожалуйста.
-
shine
- Сообщения: 35
- ОС: Debian
Re: Решено: exim4
Давайте так. На то чтобы объяснять алгоритм обработки текста письма уйдет много времени. Точнее даже очень много времени. Чтобы вы имели общее представление это будет несколько независимых классов валидирующих, парсящих и привязывающих данные письма к другим данным в системе.
Поэтому я и задал вопрос не о реализации своего алгоритма - с этим я сам справлюсь - а о доступе к данным письма. Мне нужно получить доступ к телу письма, его теме, его заголовку и т.д. Формат в котором это будет доступно особого значения не имеет. Это может быть аргумент в функции, значения в ARGV, атрибуты какого-то объекта или что-то еще типа глобальных переменных.
Я где-то краем уха слышал что возможно организовать вызов определенного скрипта когда приходит новое письмо. Ничего более конкретного вспомнить не могу.
Мысли? Идеи? Предложения?
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Решено: exim4
что именно вы хотите сделать с письмом?
в exim есть фильтры, а также можно вставлять вызов перловых функций из внешних скриптов.
не совсем понятно - почему вы хотите делать это именно экзимом. ну получил экзим ваше письмо, сложид его в maildir.
вот оно лежит(например) в /var/spool/maildir/ в совершенно открытом виде.
разделывайте его дальше чем хотите - bash/awk/grep/perl/php/....
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
shine
- Сообщения: 35
- ОС: Debian
Re: Решено: exim4
В конечном счете я буду валидировать его контент, парсить все значения в его содержании и добавлять БД то что получилось в результате. Вот только до всего этого нужно дотянуться до содержимого письма: тема, от кого, кому, текст письма, атрибуты письма и т.д. Как все это достать и есть главный вопрос который меня интересует.
Ленивая Бестолочь писал(а): ↑29.07.2009 20:17в exim есть фильтры, а также можно вставлять вызов перловых функций из внешних скриптов.
не совсем понятно - почему вы хотите делать это именно экзимом. ну получил экзим ваше письмо, сложид его в maildir.
вот оно лежит(например) в /var/spool/maildir/ в совершенно открытом виде.
разделывайте его дальше чем хотите - bash/awk/grep/perl/php/....
Проблема со складыванием и чтением в задержке. Все письма нужно обрабатывать так быстро как только можно. Для этого лучше всего обрабатывать их сразу же после прихода не откладывая в долгий почтовый ящик
Про фильтры - это интересно. Сейчас попробую порыть в их сторону.
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Решено: exim4
гуглите в строну FAM + fileschanged.
описание: http://fileschanged.sourceforge.net/
и сделайте скрипт, который срабатывает сразу же (почти).
еще, как вариант - в экзиме можно задавать свои транспорты - сделайте транспорт в какой-нибудь пайп, который будет ловить ваш скрипт.
пришло письмо и сразу в скрипт.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
-
shine
- Сообщения: 35
- ОС: Debian
Re: Решено: exim4
Расскажу что в результате получилось может кому-то еще пригодится.
Сладкая парочка FAM+fileschanged позволяет отслеживать изменения файлов. То есть при создании, изменении и удалении файлов FAM регистрирует это событие. Для моего случая идеально подошли две опции FAM: фильтр по типу события (в моем случае создание файла с письмом) и запуск стороннего скрипта с передачей в этот скрипт имени нового файла. Сторонний скрипт написан на bash и все что он делает это дерганье rake задачи, передавая в нее имя файла как аргумент командной строки. Ну а в rake уже доступны все возможности ruby и можно вытворять все что захочется.
-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Решено: exim4
тоесть я так понимаю, что вопрос решен, о чем можно отметить в заголовке.
поздравляю ;-)
поздравляю ;-)
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.