Milter (spamassassin): Connection refused

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

service
Junior member
Сообщения: 5
Зарегистрирован: 29 ноя 2004, 13:02
Откуда: Bishkek

Сообщение service » 14 дек 2004, 13:45

Здравствуйте Stranger03.
Прошу прощения,замена владельца на spamas:spamas не помогает,
повторюсь:spamd запускается нормально,т.е. запуск с -D от
пользователя spamas без ошибок и базы подключаются,ps -xawu|grep spam - владелец,расположение как надо,запуск spamc -u spamas -e /usr/sbin/sendmail -t < xxx.eml работает,письма проверяются и проходят.
Обрщение на порт 783 проходит,spamd отвечает,
фильтр spamass-milter запускается,обращение к нему идет,в firewale: allow ip from any to any via lo0,и для порта 783 тоже.
Результат - connection refused.
Вопрос:Как проверить подключение к milterу?

-----------------------------------------------------------
Ну,думаю,ладно ... Меняю spamass-milter на milter-spamc.
Из портов,настройки минимальны (пусть только запустится),
Результат - тоже самое.Что от пользователя spamas что от root.

Dec 14 14:40:57 sendmail[58047]: iBE9evCs058047: Milter (milter-spamc): error connecting to filter: Connection refused by /var/spool/milter-spamc/socket    
Dec 14 14:40:57 sendmail[58047]: iBE9evCs058047: Milter (milter-spamc): to error state                                                                      

Я, наверное, не знаю какой-то простой вещи,установку которой,
благополучно обхожу.Думаю может не отрабатывает sendmail,
(хотя работает с drwebом без проблем),может sendmail надо пересобрать,а я меняю только sendmail.cf .
Владелец sendmaila root,spamd все равно,miltera - root,
Прежде чем пробовать procmail хотелось бы разобраться с milterами.
...

Опять грабли ...

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 14 дек 2004, 15:38

service писал(а):(хотя работает с drwebом без проблем),может sendmail надо пересобрать,а я меняю только sendmail.cf .
Владелец sendmaila root,spamd все равно,miltera - root,
Прежде чем пробовать procmail хотелось бы разобраться с milterами.
Ну я вообще-то всегда пересобирал конфиг через M4. Если вы ручками в конфиг добавляете строки, то могли где-то ошибиться.

service
Junior member
Сообщения: 5
Зарегистрирован: 29 ноя 2004, 13:02
Откуда: Bishkek

Сообщение service » 16 дек 2004, 08:45

Здравствуйте Stranger03,
вижу только вы что-то отвечаете.

Каков механизм работы miltera?
1.sendmail соединяется с сокетом milterа ( типа connect и т.д.),
2.sendmail передает сообщение с 25 порта miltery
милтер запускает? milter-spamc (spamass-milter)  
для своих проверок или нет?,
3.милтер по 783 порту обращается к spamd
(как в этом участвует spamc?)
4.spamd результат отдает milterу,тот sendmailу

так?

(spamd запущен под тем же владельцем,
что и milter,сокет  и pid в home владельца.)

На счет sendmail.cf - собираю только через m4,
хотя пробовал и руками дописывать miltera.

...

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 16 дек 2004, 11:57

service писал(а):Каков механизм работы miltera?
1.sendmail соединяется с сокетом milterа ( типа connect и т.д.),
2.sendmail передает сообщение с 25 порта miltery
милтер запускает? milter-spamc (spamass-milter)  
для своих проверок или нет?,
3.милтер по 783 порту обращается к spamd
(как в этом участвует spamc?)
4.spamd результат отдает milterу,тот sendmailу

так?
Ну как бы почти так. Есть два варианта работы мильтера.
1. письмо полностью принимается сендмылом, потом передается мильтеру как фильтру.
2. письмо проходит первую стадию авторизации на этапе коннект - хело и сразу передается на обработку мильтера.

если не получается все-таки завести, давайте сначала начнем. Первое, др-веб запустили, настроили, проверили, работает. Скиньте МС сендмыла, конфиг спамд, скрипт запуска спамд, конфиг мильтера и скрипт запуска мильтера. Посмотрим, что там не так.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 16 дек 2004, 12:09

Stranger03 писал(а):Есть два варианта работы мильтера.
1. письмо полностью принимается сендмылом, потом передается мильтеру как фильтру.
2. письмо проходит первую стадию авторизации на этапе коннект - хело и сразу передается на обработку мильтера.
sendmail передает управление милтеру несколько раз при наступлении разных событий (коннект, получение helo, получение mail from, получение каждого rcpt to, получение каждого поля header, получение пустой строки после заголовков перед телом письма, получение тела письма text'овых сообщений или каждого part из multipart сообщений, конец все сообщения).

какие именно из callback'ов используются в каждом конкретном милтере, зависит от задачи и от реализации.

а вот и фрагмент spamass-milter.cpp:

// Notes:
//
//  The libmilter for sendmail works callback-oriented, so if you have no
//  experience with event-driven programming, the following may be hard for
//  you to understand.
//
//  The code should be reasonably thread-safe. No guarantees, though.
//
//  This program roughly does the following steps:
//
//   1. register filter with libmilter & set up socket
//   2. register the callback functions defined in this file
//    -- wait for mail to show up --
//   3. start spamc client
//   4. assemble mail since libmilter passes it in pieces and put
//      these parts in the output pipe to spamc.
//   5. when the mail is complete, close the pipe.
//   6. read output from spamc, close input pipe and clean up PID
//   7. check for the flags affected by SpamAssassin and set/change
//      them accordingly
//   8. replace the body with the one provided by SpamAssassin if the
//      mail was rated spam, unless -m is specified
//   9. free all temporary data
//   10. tell sendmail to let the mail to go on (default) or be discarded
//    -- wait for mail to show up -- (restart at 3)
--
/corvax

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 16 дек 2004, 12:14

corvax писал(а):sendmail передает управление милтеру несколько раз при наступлении разных событий (коннект, получение helo, получение mail from, получение каждого rcpt to, получение каждого поля header, получение пустой строки после заголовков перед телом письма, получение тела письма text'овых сообщений или каждого part из multipart сообщений, конец все сообщения).
Это еще зависит от сроки, записанной в конфигурашке на тему вызова фильтра из почтовика. Если вы используете внешние блек-листы от спамд, то да. Хотя может вы и правы, я в такие дебри не влезал, не было надобности.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 16 дек 2004, 12:18

Stranger03 писал(а):
corvax писал(а):sendmail передает управление милтеру несколько раз при наступлении разных событий (коннект, получение helo, получение mail from, получение каждого rcpt to, получение каждого поля header, получение пустой строки после заголовков перед телом письма, получение тела письма text'овых сообщений или каждого part из multipart сообщений, конец все сообщения).
Это еще зависит от сроки, записанной в конфигурашке на тему вызова фильтра из почтовика.
не совсем понял. можно пример?
Stranger03 писал(а):Если вы используете внешние блек-листы от спамд, то да. Хотя может вы и правы, я в такие дебри не влезал, не было надобности.
--
/corvax

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 17 дек 2004, 10:08

corvax писал(а):не совсем понял. можно пример?
Когда вы указываете строку вызова фильтра типа
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')
то в данных строках можно указать, как и при каких обстоятельствах будет вызван этот самый фильтр, реакции на обстоятельства и так далее. Сейчас уже не помню точно, года два назад, когда подробно изучал синтаксис, читал где-то в доках.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 17 дек 2004, 10:33

Stranger03 писал(а):
corvax писал(а):не совсем понял. можно пример?
Когда вы указываете строку вызова фильтра типа
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')
то в данных строках можно указать, как
так вот, как?
Stranger03 писал(а):и при каких обстоятельствах будет вызван этот самый фильтр, реакции на обстоятельства и так далее. Сейчас уже не помню точно, года два назад, когда подробно изучал синтаксис, читал где-то в доках.
собственно я хотел получить пример как раз того, как можно это все указать. ибо я таких примеров не встречал и мне стало любопытно

в документации к sendmail описано, что в конструкции INPUT_MAIL_FILTER можно указать имя фильтра, параметры сокета, действие при невозможности подключиться к сокету, таймауты. и все
--
/corvax

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 20 дек 2004, 17:42

corvax писал(а):собственно я хотел получить пример как раз того, как можно это все указать. ибо я таких примеров не встречал и мне стало любопытно

в документации к sendmail описано, что в конструкции INPUT_MAIL_FILTER можно указать имя фильтра, параметры сокета, действие при невозможности подключиться к сокету, таймауты. и все
Если вспомню, честно попытаюсь, я напишу. Просто повторюсь, когда сам года два назад создавал свою систему и писал статью, очень подробно все изучал. Сейчас уже многое не вспомнить, :twisted:. Такое бывает, когда сдаешь экзамены например на MSCE, типа сдал и забыл, :twisted:.

Аватара пользователя
setar
Site Admin
Site Admin
Сообщения: 1990
Зарегистрирован: 22 авг 2002, 12:03
Откуда: St. Petersburg

Сообщение setar » 22 фев 2005, 10:19

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

Walter: (9:14 PM) Я знаю ответ на данную проблему, недавно сам с неделю бился.
скорее всего у автора проблемы значения ядра kern.ipc.somaxconn=32768
При таком значении перестают нормально работать unix-sokckets во FreeBSD.
Если автор уменьшит значение (я поставил kern.ipc.somaxconn=16384) я уверен всё заработает.

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 22 фев 2005, 11:58

setar писал(а):

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

Walter: (9:14 PM) Я знаю ответ на данную проблему, недавно сам с неделю бился.
скорее всего у автора проблемы значения ядра kern.ipc.somaxconn=32768
Конечно возможно, но я что-то сильно сомневаюсь. Настраивал уже штук 50 похожих систем, нигде такой проблемы не встречал. Обычно все заканчивается некорректными правами, путями, chroot-ами. И так далее.

Аватара пользователя
Astaldo
Junior member
Сообщения: 15
Зарегистрирован: 22 авг 2005, 10:27
Контактная информация:

Milter (spamassassin): Connection refused

Сообщение Astaldo » 25 авг 2005, 14:40

Добрый день.
У меня похожая проблема как у автора этой темы :(
Установка прошла успешно, запуск spamd и spamass-milter тоже проходит без ошибок.

Но в логах сендмэйла пишет
  • Aug 25 11:18:40 ns sendmail[7459]: NOQUEUE: connect from orb.fasty.net [195.140.176.3]
    Aug 25 11:18:40 ns sendmail[7459]: j7P8IepY007459: Milter (spamassassin): open /var/spool/filter/spamass-milter failed: Connection refused by /var/spool/filter/spamass-milter
    Aug 25 11:18:40 ns sendmail[7459]: j7P8IepY007459: Milter (spamassassin): error connecting to filter: Connection refused by /var/spool/filter/spamass-milter
    Aug 25 11:18:40 ns sendmail[7459]: j7P8IepY007459: Milter (spamassassin): to error state
    Aug 25 11:18:41 ns sendmail[7459]: j7P8IepY007459: Milter (drweb-filter): init success to negotiate
    Aug 25 11:18:41 ns sendmail[7459]: j7P8IepY007459: Milter: connect to filters
    Aug 25 11:18:41 ns sendmail[7459]: j7P8IepY007459: milter=drweb-filter, action=connect, continue
    Aug 25 11:18:41 ns sendmail[7459]: j7P8IepY007459: milter=drweb-filter, action=helo, continue
    Aug 25 11:18:41 ns sendmail[7457]: j7P8IcpY007457: from=<trohimln@fc.kiev.ua>, size=7277, class=0, nrcpts=1, msgid=<129031396.20050825111414@fc.kiev.ua>, proto=ESMTP, daemon=MTA, relay=mail.fc.kiev.ua [80.91.161.90]
    Aug 25 11:18:41 ns sendmail[7457]: j7P8IcpY007457: milter=drweb-filter, action=header, continue
    Aug 25 11:18:42 ns last message repeated 9 times
    Aug 25 11:18:42 ns sendmail[7436]: j7P8ILpY007425: to=<lutsenko@firm.com>, delay=00:00:21, xdelay=00:00:20, mailer=smtp, pri=30630, relay=lotus.private.kiev.ua. [10.1.0.131], dsn=2.0.0, stat=Sent (Message accepted for delivery)
Как видно из логов милтер выдаёт ошибку, а др. веб нормально работает.

Листинг sendmail.cf
  • # Input mail filters
    O InputMailFilters=spamassassin, drweb-filter

    # Milter options
    O Milter.LogLevel=6
    O Milter.macros.connect=b, j, _, {daemon_name}, {if_name}, {if_addr}
    O Milter.macros.helo={tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}
    O Milter.macros.envfrom=i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}
    O Milter.macros.envrcpt={rcpt_mailer}, {rcpt_host}, {rcpt_addr}
    .....
    MAIL FILTER DEFINITIONS

    Xspamassassin, S=local:/var/run/spamass-milter, F=, T=C:15m;S:4m;R:4m;E:10m
    Xdrweb-filter, S=inet:3001@localhost, F=T, T=S:5m;R:5m;E:1h
запуск спамассассина из скрипта
  • /usr/local/sbin/spamass-milter -f -p /var/run/spamass-milter -b bad@firm.com
    /usr/bin/spamd -d -u filter
Вот уже 2 неделю бьюсь головой и не могу понять где же здесь грабли.
:weep:


PS.
я поставил поверх имеющегося ассассина версии 2.6
может здесь собака порылась? если да, то как это побороть.

PPS
если надо ещё какие логи пишите что надо выложу.

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей