exim - кодировка в mainlog

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

exim - кодировка в mainlog

Непрочитанное сообщение robi » 2006-08-17 21:55:44

exim если включить log_selector = +all
пишет в лог заголовки сообщений но в какой то хитрой кодировке, к примеру вместо слова тест в логе \362\345\361\362
как побороть?
если нельзя побороть как эту сроку перекодировать на лету для дальнейшего помещения в mysql ?

ЗЫ: кто какие анализаторы логов под exim использует?
я нашел не плохой exibomb, но может есть получше?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-17 22:14:21

ну так мона на перле например скрипт наваять...
а как заставить - не заню...
пусть на инглише всё пишет :)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-17 22:15:25

а писать логи сразу из exim`a в БД не пробовал?
тогда какая кодировка?
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Непрочитанное сообщение Гость » 2006-08-17 23:33:27

lissyara писал(а):а писать логи сразу из exim`a в БД не пробовал?
тогда какая кодировка?
пробовал - кусок исходной строки из mainlog T="\362\345\361\362"
в БД получаеться 362345361362
:(
Сейчас исхал инфу по этому поводу, вот что советуют

use MIME::Base64;
...
$subj="сабжевый текст...бла-бла";
$subj="=?Windows-1251?B?".encode_base64($subj);
chomp $subj;
$subj.="?=";

но думаю не прокатит тк если даже заработает то будет менять ВСЮ строку не в зависимомти от наличия английских символов

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-18 0:06:54

нет. ты не понял. писать прям из самого exim`a в БД.
просто добавить запрос типа

Код: Выделить всё

  set acl_m6 =  ${lookup mysql{INSERT INTO `stat` SET \
               XFrom='${sender_address}', \
               XTo=REPLACE('${recipients}',', ','\n'), Size=${message_size}, \
               Subj='$h_subject:'}}
в конфиг... в конце acl_check_data....
====
И кстати - exim тоже умеет преобразовывать строку - http://exim.org/exim-html-4.62/doc/html ... /ch40.html - тока надо разбираться как достать то что надо...
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Непрочитанное сообщение Гость » 2006-08-18 16:03:58

lissyara писал(а):нет. ты не понял. писать прям из самого exim`a в БД.
просто добавить запрос типа

Код: Выделить всё

  set acl_m6 =  ${lookup mysql{INSERT INTO `stat` SET \
               XFrom='${sender_address}', \
               XTo=REPLACE('${recipients}',', ','\n'), Size=${message_size}, \
               Subj='$h_subject:'}}
в конфиг... в конце acl_check_data....
====
И кстати - exim тоже умеет преобразовывать строку - http://exim.org/exim-html-4.62/doc/html ... /ch40.html - тока надо разбираться как достать то что надо...
самое простое - очевидное :)
так отрабатывает на ура
для удобства добавил еще дату время
Большой респект за совет :)
ЗЫ - вот еще нарыл неплохую инфу по эксиму
http://bog.pp.ru/work/exim.html

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-18 17:13:44

ну так как получилось-то?
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Непрочитанное сообщение Гость » 2006-08-18 19:22:17

lissyara писал(а):ну так как получилось-то?
угу - все работает
сейчас долблюсь с ip отправителя не могу въехать в какой переменной он содержиться
и переписываю\обрезаю ненужное в exibomb для работы с такой базой, вроде удобоваримо получаеться.
и во еще вопрос, по товему имхо - exim на такой конфигурации VPS - 256 памяти, 1000 проц - не захлебнеться если за сутки 10 000 писем ? кроме почты, ни чего по большому счету там нету.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-18 20:27:49

1 письмо в 9 секунд? нет конечно..
но если прикрутить спамассасин и clamav - не знаю :(
может в пиковую нагрузку начать плющщить...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-18 20:29:38

вообще на нагруженных серверах принято такие сервисы выносить на отдельные машины (кламав и спамассасин).

P.S. Памяти бы поболей... И с почтой он что делать будет, кстати? сам по майлдирам раскладывать или отдавать кому?
Убей их всех! Бог потом рассортирует...

robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

Непрочитанное сообщение robi » 2006-08-18 20:38:08

lissyara писал(а):вообще на нагруженных серверах принято такие сервисы выносить на отдельные машины (кламав и спамассасин).
P.S. Памяти бы поболей... И с почтой он что делать будет, кстати? сам по майлдирам раскладывать или отдавать кому?
Раскладывать в основном.
спамассасин пока не планируеться - слава богу спама нет практически.
а то что есть по прикидкам exim внутренними средствами резать будет.
а вот сламав - ессено надо.
но поживем - увидим как работать будет, я когда говорил за 10 000 в сутки - это планируеться через год, пока 15-20 тысяч. даже сендмайл спавляеться (сламав прикручен).

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-18 20:56:25

ты непонял :)
exim может сам класть в maildir - как например с courier-imap.
а может отдавать программе, осуществляющей раскладывание, как с dbmail, dovecot, cyrus. C dovecot - можно раскладывать средствами exim (что вызывает проблемы на боле-мене нагруженном сервере - даже на паре тыщ писем с день), а можно при помощи deliver - что кстати, правильней.
Если раскладывает отдельная программа - это дополнительная нагрузка, ибо она в большинстве (может и во всех случаях) случаев запускается на каждое письмо :(
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-18 21:05:13

Anonymous писал(а):
lissyara писал(а):ну так как получилось-то?
сейчас долблюсь с ip отправителя не могу въехать в какой переменной он содержиться

Код: Выделить всё

$sender_host_address
$host_address
$sender_host_name
..............
P.S. и ещё много интересного, отсюда http://www.lissyara.su/?id=1211
Убей их всех! Бог потом рассортирует...

robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

Непрочитанное сообщение robi » 2006-08-18 21:18:36

lissyara писал(а):ты непонял :)
:(
это я прогнал с недосыпу :)
сейчас пока не тестовом серваке раскладывает exim.
надо будет передать. хотя скриптом с друго сервера засандалил 2 000 гдето за час.
(а VPS ОЧЕНЬ слабенький 500проц +96 памяти) - особой нагрузки небыло, хотя кламав еще не прикручен. надо буде повторить уже с ним и глянуть как реагировать будет.

robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

Непрочитанное сообщение robi » 2006-08-18 21:25:30

$sender_host_address - содержит ип smtp отправителя
$host_address - пустая почемуто!?
$sender_host_name - содержит имя смтп отправителя

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-18 22:29:46

robi писал(а):$host_address - пустая почемуто!?
а вот хрен его знает... у тя версия какая? это из доков по 4.62. Может чё-то поменялось...
А кламав прилично жрёт, особенно если письма большие будут. У тя размер писем какой средний?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Za...
мл. сержант
Сообщения: 105
Зарегистрирован: 2006-08-18 14:18:15
Откуда: Север России
Контактная информация:

Re: exim - кодировка в mainlog

Непрочитанное сообщение Za... » 2006-08-19 10:00:18

robi писал(а):exim если включить log_selector = +all
пишет в лог заголовки сообщений но в какой то хитрой кодировке, к примеру вместо слова тест в логе \362\345\361\362
как побороть?
если нельзя побороть как эту сроку перекодировать на лету для дальнейшего помещения в mysql ?

ЗЫ: кто какие анализаторы логов под exim использует?
я нашел не плохой exibomb, но может есть получше?
Exilog, работает с мускулом, написан на перле, сидит в процессах и парсит лог файл ексима и кидает все в базу, также есть гуик тоже перловский, все красиво показывает
Стою в очереди За... булкой и кефиром

robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

Непрочитанное сообщение robi » 2006-08-19 12:41:42

долго и нудно читал http://www.lissyara.su/?id=1211
и один хрен не въехал :(
сказано:

Код: Выделить всё

${lookup <search type> {<query>} {<string1>} {<string2>}}
Если поиск успешен, “<string1>” раскрывается и замещает весь элемент

пытаюсь сделать

Код: Выделить всё

set acl_m6 =  ${lookup mysql \ 
                      {SELECT `domain` FROM `domain` WHERE  \
                     `domain`=`${qualify_domain}` AND`log`= `1`}
                    {INSERT INTO `stat` SET \ 
                    XFrom='${sender_address}', \ 
                    XTo=REPLACE('${recipients}',', ','\n'), Size=${message_size}, \ 
                    Subj='$h_subject:'}}
Где я протупил?
ЗЫ - смысл сего действа исключить некотрые домены из статистики

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-19 20:27:15

условием в ACL их пусти.
а так ты пытаешься два запроса одновременно всандалить. либо одним вооженным делай либо по другому.
Убей их всех! Бог потом рассортирует...

robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

Непрочитанное сообщение robi » 2006-08-19 20:56:14

lissyara писал(а):условием в ACL их пусти.
если не сложно пример на пальцах :)
тяжело до меня доходит :(
всю жизнь под окнами не шутка :(
а тут на тебе, пришлось на никсы пересесть :(
раньше боролся с глюками веников - теперь с незнакомым сиснтаксисом .....

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-19 21:57:14

сам не пробовал, но мона примерно так:

Код: Выделить всё

warn  logwrite = logging into DB
         domains = {lookup mysql \ 
                         {SELECT `domain` FROM `domain` WHERE  \ 
                         `domain`=`${qualify_domain}` AND`log`= `1`} 
        set acl_m6 =  ${lookup mysql{INSERT INTO `stat` SET \ 
                             XFrom='${sender_address}', \ 
                             XTo=REPLACE('${recipients}',', ','\n'), Size=${message_size}, \ 
                             Subj='$h_subject:'}}
Убей их всех! Бог потом рассортирует...

robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

Непрочитанное сообщение robi » 2006-08-19 22:44:58

lissyara писал(а):сам не пробовал, но мона примерно так:

Код: Выделить всё

warn  logwrite = logging into DB
         domains = {lookup mysql \ 
                         {SELECT `domain` FROM `domain` WHERE  \ 
                         `domain`=`${qualify_domain}` AND`log`= `1`} 
        set acl_m6 =  ${lookup mysql{INSERT INTO `stat` SET \ 
                             XFrom='${sender_address}', \ 
                             XTo=REPLACE('${recipients}',', ','\n'), Size=${message_size}, \ 
                             Subj='$h_subject:'}}
так не завелось, понять почему - еще не хватает опыта
попробовал нарисовать более понятную для себя контрукцию
вот кусок конфига :

Код: Выделить всё

accept

if $domain is "${lookup mysql{SELECT `domain` FROM `domain` WHERE `domain`='$domain' AND `log`='1'}}"
then
set acl_m6 = ${lookup mysql{INSERT INTO `maillog` SET \
                datetime='${tod_log}', \
                mailid='${message_id}', \
                mfrom='${sender_address}', \
                mto=REPLACE('${recipients}',', ','\n'), size=${message_size}, \
                subject='$h_subject:', \
                host='$domain'}}
endif
auth_login:
  driver = plaintext
теперь exim Ругаеться при запуске

Код: Выделить всё

error in ACL: unknown ACL condition/modifier in "if $domain is "${lookup mysql{SELEC и тд

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-20 9:00:31

robi писал(а):
lissyara писал(а):сам не пробовал, но мона примерно так:

Код: Выделить всё

warn  logwrite = logging into DB
         domains = {lookup mysql \ 
                         {SELECT `domain` FROM `domain` WHERE  \ 
                         `domain`=`${qualify_domain}` AND`log`= `1`} 
        set acl_m6 =  ${lookup mysql{INSERT INTO `stat` SET \ 
                             XFrom='${sender_address}', \ 
                             XTo=REPLACE('${recipients}',', ','\n'), Size=${message_size}, \ 
                             Subj='$h_subject:'}}
так не завелось, понять почему - еще не хватает опыта
попробовал нарисовать более понятную для себя контрукцию
вот кусок конфига :

Код: Выделить всё

accept

if $domain is "${lookup mysql{SELECT `domain` FROM `domain` WHERE `domain`='$domain' AND `log`='1'}}"
then
set acl_m6 = ${lookup mysql{INSERT INTO `maillog` SET \
                datetime='${tod_log}', \
                mailid='${message_id}', \
                mfrom='${sender_address}', \
                mto=REPLACE('${recipients}',', ','\n'), size=${message_size}, \
                subject='$h_subject:', \
                host='$domain'}}
endif
auth_login:
  driver = plaintext
теперь exim Ругаеться при запуске

Код: Выделить всё

error in ACL: unknown ACL condition/modifier in "if $domain is "${lookup mysql{SELEC и тд
ты куда всё это пихаешь-то? в какую секцию?
Убей их всех! Бог потом рассортирует...

robi
рядовой
Сообщения: 49
Зарегистрирован: 2006-08-17 21:46:31

Непрочитанное сообщение robi » 2006-08-20 10:23:08

ты куда всё это пихаешь-то? в какую секцию?
в acl_check_data после accept перед begin routers
без if .. then .. endif работатет.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2006-08-20 11:47:27

Код: Выделить всё

auth_login:
  driver = plaintext
а это тогда откуда?
Убей их всех! Бог потом рассортирует...