|
|
|
| OS Centos 5 32-bit
=========================
sendmail-doc-8.13.8-2.el5
sendmail-8.13.8-2.el5
sendmail-cf-8.13.8-2.el5
PS. Если в итоге проще с Postfix - нет проблем поставлю !
Итак задача - перехват входящей почты анализирование её на PHP и соответственно запись вердикта в MySQL.
Первая идея была бегать по файлам с письмами - отпала минуты через 2-3 так как мало того что с провами нужно поиграть так ещё и сканить постоянно и при этом с надобностью и без неё.
Далее начал упорно пожирать буквы на форумах в следствии чего пришол к примерной концепции но реализовать её непредстовляю как.
Как работает Sendmail !? http://www.samag.ru/art/05.2006/05.2006_01.html
Кто кому родитель
Итак, при обработке сообщения для локального клиента, выполняется следующая последовательность действий (см. рис. 1):
1. Удалённый сервер, желая передать нам сообщение, отправляет запрос на соединение на 25-й порт нашего сервера.
2. Процесс sendmail, обслуживающий соединения (тот, который в примере выше имеет PID 596), порождает дочерний процесс (назовём его sm1).
3. Дочерний процесс sm1 проверяет возможность принять данное сообщение (анализируя конверт, прежде всего «rcpt to:») и в случае положительного ответа помещает сообщение в очередь, в файлы qf (заголовки) и df (тело сообщения). Причём qf обычно создаётся в памяти и записывается на диск только в случае невозможности переслать письмо сразу. То есть очередь – это каталог, куда временно сохраняются почтовые сообщения, проходящие через сервер электронной почты (по умолчанию используется /var/spool/mqueue).
4. Если запись пройдёт успешно, Sendmail подтверждает факт приёма сообщения (принимая тем самым на себя всю ответственность за его дальнейшую судьбу) и завершает соединение с удалённым сервером.
5. Далее sm1 анализирует заголовок сообщения и принимает решение о том, что нужно с ним делать. Если оно предназначено для локального пользователя, то вызывается локальный агент доставки, LDA (Local Delivery Agent), которому даётся поручение положить письмо в почтовый ящик пользователя.
6. Когда LDA успешно выполняет доставку, он рапортует об этом процессу sm1, который удаляет сообщение из очереди и завершает свою работу.
http://i049.radikal.ru/0911/f8/8527be5c5448.gif
рис. 1
Тобиш все что нам нужно это LDA заставить отдать письмо PHP скрипту ну или сохранить копию файла в нужную мне директорию (/var/www/user/data/www/domin.ru/mail/file_tmp_1258755556) и вызвала
>shell php analizing_mail.php
Содержание скрипта бональная
Сканируем директорию (обять таки понятия не имею как передать параметр времени с которым файл созронили поэтому и сканирую директорию но сканить не есть гуд так как могут баги проснуться... 2 мисьма придет с интервалом микросикунды и выйдет что скрипт не найдет файл или ещё лутьше 2 раза проанализируется 1 письмо), анализируем все файлы забиваем итог в мускул удаляем файлы.
Вот собственно и вся идея.
Сейчас вот сижу и думаю.... Он же порождает дочерний процес... а посфикс нет так как у него разные приложения и что если мы модменим просто его LDA на собственный демон :nezn:
Нуб я в этих системах :D 4 день знакомлюсь впритык купил VPS отказался от лампы и пошол..... поставить апач + мускул + пхп несоставило труда и заняло с час... (поиск инфы отнял много времени)
Потом начал ставить proftpd с горем пополам реализовал на sedmail сил не хватило :(
Зашол на IPSmanager взял Demo и IPS сам все поднял я потом только прова сменил и от кого апач запускать. Ну и встал :D
Не надеюсь на лес рук но надеюсь на помощ ))
PS. Сильно инфой не давите если что.... За эти 3 дня и так голова кругом. | |
|
|