![]() |
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 !? Источник :read: Кто кому родитель Итак, при обработке сообщения для локального клиента, выполняется следующая последовательность действий (см. рис. 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 на собственный демон Нуб я в этих системах 4 день знакомлюсь впритык купил VPS отказался от лампы и пошол..... поставить апач + мускул + пхп несоставило труда и заняло с час... (поиск инфы отнял много времени) Потом начал ставить proftpd с горем пополам реализовал на sedmail сил не хватило Зашол на IPSmanager взял Demo и IPS сам все поднял я потом только прова сменил и от кого апач запускать. Ну и встал Не надеюсь на лес рук но надеюсь на помощ )) PS. Сильно инфой не давите если что.... За эти 3 дня и так голова кругом. |
так... )) вроде докопался... если реализовать то все станет в моем понимании
DBMail. Почтовый сервер c MySQL хранилищем писем. Дальше оброщяйся себе в мускул да работай с письмами мне так даже удобнее будит но вот свизать его незнаю как... На FreBSD нашол статью а вот с Centos проблемы Может его кто ставил !? PS. Истина гдето там |
Извиняюсь, это типа проверки на спам? да дбмайл хорош, но требует очень много ресурсов от сервера, к нему какой то там модуль прикручиваешь дбспам вроде или что то типа того... как вариант борьбы со спамом предложить спамасасин с включеной проверкой хоста отправителя, первое письмо почтарь отклоняет, и спамасасин заносит хост в грейлист, после второго идентичного письма заводит сервер отправителя в валидлист, кто не прошёл в блеклист
немного теории, сервер отправителя отправляет письмо на ваш сервер, ваш сервер отклоняет запрос с статусом "отправь мне его позже", по истечении кокого то времени сервер отправителя посылает опять идентичный запрос на ваш сервер и юзер получает почту и сервер заносится в валидлист минус у данной схемы всего один, письма порой доходят от одного до пяти часов. на счёт спамасасина мог ошибиться, сервер собирал не я, а мой коллега, если интересно могу у него узнать что да как |
нет.. это не защита от спама.
Задача: 1) Получить письмо. 2) Распарсить по шаблону. 3) Вытянутую инфу засунуть в базу. 4) Избавиться от письма. Вот как это посоветуете реализовать ? Просто может я замороченый По поваду ресурсов, в данный момент лампа от ISPmanager Used memory 231 MB of 512 MB (burst 1024 MB) Думаю потом все пересоберу и отделаюсь 100-150 и после думаю 200 ему будит достаточно + с местом нет напрягов 15 Гб. в его распорежении мне 3 хватит + на систему 2 |
[root@user dbmail-2.2.11-rc4]# make
make all-recursive make[1]: Entering directory `/tmp/dbmail-2.2.11-rc4' Making all in modules make[2]: Entering directory `/tmp/dbmail-2.2.11-rc4/modules' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/tmp/dbmail-2.2.11-rc4/modules' Making all in man make[2]: Entering directory `/tmp/dbmail-2.2.11-rc4/man' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/tmp/dbmail-2.2.11-rc4/man' make[2]: Entering directory `/tmp/dbmail-2.2.11-rc4' /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gmime-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -W -Wall -Wpointer-arith -Wstrict-prototypes -export-dynamic -L/lib -lglib-2.0 -Wl,--export-dynamic -L/lib -lgmodule-2.0 -ldl -lglib-2.0 -L/lib -lgmime-2.0 -lz -lnsl -lgobject-2.0 -lglib-2.0 -o dbmail-smtp main.o libdbmail.la gcc -g -O2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gmime-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -W -Wall -Wpointer-arith -Wstrict-prototypes -Wl,--export-dynamic -o .libs/dbmail-smtp main.o -Wl,--export-dynamic -L/lib -lgmodule-2.0 -ldl -lgmime-2.0 -lz -lnsl -lgobject-2.0 -lglib-2.0 ./.libs/libdbmail.so -Wl,--rpath -Wl,/usr/local/lib/dbmail /usr/local/lib/libgthread-2.0.so.0: undefined reference to `g_mem_init' ./.libs/libdbmail.so: undefined reference to `crypt' /usr/local/lib/libgthread-2.0.so.0: undefined reference to `g_mutex_init' /usr/local/lib/libgthread-2.0.so.0: undefined reference to `g_messages_init' collect2: ld returned 1 exit status make[2]: *** [dbmail-smtp] Error 1 make[2]: Leaving directory `/tmp/dbmail-2.2.11-rc4' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/tmp/dbmail-2.2.11-rc4' make: *** [all] Error 2 [root@user dbmail-2.2.11-rc4]# Чтоже этой сучке ещё нужно !? Запарился в конец... Весь день вчера собирал его теперь make не проходит [root@user dbmail-2.2.11-rc4]# rpm -qa > log.txt http://inviseble-demon.ru/log.txt (вставлять 260 строк не стал ) У кого какие идеи ? |
http://linux-admin.net.ru/content/1073
Все )) Собрал поставил настроил! ППЦ Ебогу без бубна никуда ! Теперь новая трабла ( Теперь рестануть sebmail немогу... Starting sendmail: 554 5.0.0 /etc/mail/sendmail.cf: line 1843: mailer dbmail: `=' expected 554 5.0.0 /etc/mail/sendmail.cf: line 1847: invalid ruleset name: "=EnvFromSMTP/HdrFrom" Буду копать )) Может всетаки хоть ктонибуть ставил его ? Я блин даже заплотить готов ! ---------- Post added at 00:47 ---------- Previous post was Вчера at 23:33 ---------- ТРИНДЕЦ !!!! Изначально перед рестартом вот что в sendmail.cf было Mprocmail, P=/usr/bin/procmail, F=DFMSPhnu9, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP, T=DNS/RFC822/X-Unix, A=procmail -Y -m $h $f $u Mdbmail, P=/usr/sbin/dbmail-smtp, F=DFMSPhnu9, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP, T=DNS/RFC822/X-Unix, A=DBMAIL_MAILER_ARGSPOPDIVERT Изменил в соответствии с синтаксисом и аформление )) Mprocmail, P=/usr/bin/procmail, F=DFMSPhnu9, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP, T=DNS/RFC822/X-Unix, A=procmail -Y -m $h $f $u Mdbmail, P=/usr/sbin/dbmail-smtp, F=DFMSPhnu9, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP, T=DNS/RFC822/X-Unix, A=DBMAIL_MAILER_ARGSPOPDIVERT Перезапуск прошол успешно ! Сейчас буду тестить работу Так что.... Жаль что тема вышла в виде дневника |
Так и не могу заставить подключиться к базе ((
Все блин ОК и такая опа... # dbmail-users -a mail@inviseble-demon.ru -w 123 Opening connection to database... Failed. Could not connect to database (check log) Command failed. И хоть лопни... Пользователь создан, пробывал через myphpadmin - все робит Я даже под рутом пробывал В чем может быть трабла !? # $Id: dbmail.conf 1539 2004-12-27 21:41:07Z paul $ # (c) 2000-2002 IC&S, The Netherlands # # Configuration file for DBMAIL # This configuration file needs to be run through dbmail-config to be effective # after that, changes are effective inmediatly /etc/dbmail.conf (может файл не тот ? ) [DBMAIL] # Database settings host=localhost # host for database, set to localhost if database is om # the same host as dbmail and you want to use a local socket # for connecting. sqlport=3306 # if you want to use TCP/IP for connecting to the database, # and have the database running on a non-standard port. sqlsocket=/var/lib/mysql/mysql.sock # when using a local socket connection to the database, fill # in the path to the socket here (e.g. /var/run/mysql.sock) user=dbmail # user to connect as to database pass=dbmail-123 # password for user to database db=dbmail # name of database POSTMASTER=postmaster # postmaster's email address. # trace level for dbmail-util TRACE_LEVEL=2 [SMTP] SENDMAIL=/usr/sbin/sendmail # sendmail executable for forwarding mail AUTO_NOTIFY=no AUTO_REPLY=no TRACE_LEVEL=2 [LMTP] EFFECTIVE_USER=nobody # the user that dbmail-lmtpd will run as (need to be root to bind to a port<1024) EFFECTIVE_GROUP=nogroup # the group that dbmail-lmtpd will run as BINDIP=* # the ipaddress the dbmail-lmtpd server has to bind # to, * for all adresses. Use 127.0.0.1 to only # bind to localhost. PORT=24 # the port number the dbmail-lmtpd server has to bind to. NCHILDREN=20 # default number of LMTP handlers (each is a process) MAXCHILDREN=10 # max. number of LMTP handlers MINSPARECHILDREN=2 MAXSPARECHILDREN=4 MAXCONNECTS=10000 # the maximum number of connections a default childs makes TIMEOUT=300 # the time (s) before the dbmail-lmtpd should shutdown a connection which is being idle. RESOLVE_IP=yes # if yes, the lmtp daemon resolves IP numbers to DNS names in the log TRACE_LEVEL=2 MAX_ERRORS=500 [POP] EFFECTIVE_USER=dbmail # the user that dbmail-pop3d will run as (need to be root to bind to a port<1024) EFFECTIVE_GROUP=mail # the group that dbmail-pop3d will run as BINDIP=* # the ipaddress the dbmail-pop3d server has to bind to, * for all addresses PORT=110 # the port number the dbmail-pop3d server has to bind to. NCHILDREN=10 # default number of POP3 handlers (each is a process) MAXCHILDREN=20 # mac. number of POP3 handlers MINSPARECHILDREN=2 MAXSPARECHILDREN=4 MAXCONNECTS=100 # the maximum number of connections a default childs makes TIMEOUT=300 # the time (s) before the dbmail-pop3d should shutdown a connection which is being idle. RESOLVE_IP=yes # if yes, the pop daemon resolves IP numbers to DNS names in the log POP_BEFORE_SMTP=no TRACE_LEVEL=2 [IMAP] EFFECTIVE_USER=nobody EFFECTIVE_GROUP=nogroup BINDIP=* PORT=143 NCHILDREN=50 MAXCHILDREN=200 # mac. number of IMAPD handlers MINSPARECHILDREN=2 MAXSPARECHILDREN=4 MAXCONNECTS=10000 # the maximum number of connections a default childs makes TIMEOUT=4000 # the time (s) before the dbmail-imapd should shutdown a connection which is being idle. RESOLVE_IP=yes # if yes, the imap daemon resolves IP numbers to DNS names in the log IMAP_BEFORE_SMTP=no TRACE_LEVEL=2 # end of configuration file PS. Это я так для завершения темы как бы )) Далее как все поставлю отпишу в чем трабла была. Авось каму пригодится |
| Время: 00:17 |