sendmail+milter problem

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

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

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

Re: sendmail+milter problem

Сообщение corvax » 24 июн 2005, 13:47

usama писал(а):
corvax писал(а):
usama писал(а):Мильтер собственного производства, и этим все осложняется - то ли я где-то ошибку допустил, то ли libmilter
судя по кривому парсингу - libmilter ни при чем совершенно
usama писал(а):глючный. А совсем плохо то, что я этот фильтр писал не от начала и до конца, а только частично дописавыл нужные мне функции.
а не кажется ли вам, уважаемый, что эти детали были важны при первоначальной формулировке вопроса?

может в какой-то FAQ включить ссылку на smart questions?
Но при чем здесь мой мильтер? Во-первых, до изменения настроек sendmail'a он отлично парсил эту самую строку.
мне что, на пальцам объяснять, чем отличаются те две строки?
usama писал(а):Во-вторых, код запуска был взят из примера, идущего с Sendmail::Milter
очень сильно не верится
usama писал(а): - не думаю что там допущены ошибки.
уже не первый год с Sendmail::Milter идет пример, в котором все написано качественнее, чем в вашей поделке
usama писал(а):Я думал, что ошибка лежит на поверхности, просто я ее не вижу...
по тем огрызкам, которые тут были показаны, найти причину проблемы невозможно. в любом случае она не в MTA
--
/corvax

usama
member
Сообщения: 23
Зарегистрирован: 23 июн 2005, 19:18
Откуда: Одесса

Re: sendmail+milter problem

Сообщение usama » 24 июн 2005, 13:48

corvax писал(а):
usama писал(а):Мильтер собственного происзводста. Вот код запуска:
 BEGIN:
 {
set_uid_gid();
# Get myfilter's connection information'
# from /etc/mail/sendmail.cf

Sendmail::Milter::auto_setconn("filter1") || die "auto_setconn failed\n";
1. я понимаю, что есть тут люди, которые юзали Sendmail::Milter. но может таки не всем понятно, что это кусок кода perl'ового milter'а. настоятельно советую обратить внимание на неудовлетворительное качество постановки вопросов

2. религия не позволяет выполнить auto_getconn и посмотреть глазами не ее результат?
usama писал(а): Sendmail::Milter::register("filter1",
\%my_milter_callbacks, SMFI_CURR_ACTS) || die "register failed\n";

Sendmail::Milter::main();
print "\nFilter ended\n";

# Never reaches here, callbacks are called from Milter.
 }
значение, возвращаемое функциями auto_setconn и register надо таки проверять. это есть очень плохой стиль программирования. даже функция main возвращает разные значения при успешном и неуспешном завершении

вообще-то вместе с Milter.pm поставляется sample.pl, в который очень даже стОит заглянуть. хотя бы для того, чтобы понять, что нужно код своего фильтра писать чуть более аккуратно

p. s. в любом случае вышеописанная проблема с сокетом - это не проблема MTA
Насчет неправильной постановки вопроса - приношу свои извенения.
Сейчас гляну возвращаемые значения из функций.
А про плохой стиль программирования - согласен, просто этот код писался на скорую руку, да и perl я знаю весьма посредственно (никак не могу перестроиться после 2-x лет программирования на Си).
Все равно спасибо за помощь!

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

Re: sendmail+milter problem

Сообщение corvax » 24 июн 2005, 14:09

usama писал(а):
corvax писал(а):p. s. в любом случае вышеописанная проблема с сокетом - это не проблема MTA
Насчет неправильной постановки вопроса - приношу свои извенения.
Сейчас гляну возвращаемые значения из функций.
уже не надо. я только что проверил - ошибается в парсинге сам Sendmail::Milter
usama писал(а):А про плохой стиль программирования - согласен, просто этот код писался на скорую руку,
это шаткое оправдание
usama писал(а):да и perl я знаю весьма посредственно (никак не могу перестроиться после 2-x лет программирования на Си)
как по мне, C и Perl достаточно близки синтаксически
--
/corvax

usama
member
Сообщения: 23
Зарегистрирован: 23 июн 2005, 19:18
Откуда: Одесса

Re: sendmail+milter problem

Сообщение usama » 24 июн 2005, 14:18

corvax писал(а):
usama писал(а):
corvax писал(а):p. s. в любом случае вышеописанная проблема с сокетом - это не проблема MTA
Насчет неправильной постановки вопроса - приношу свои извенения.
Сейчас гляну возвращаемые значения из функций.
уже не надо. я только что проверил - ошибается в парсинге сам Sendmail::Milter
usama писал(а):А про плохой стиль программирования - согласен, просто этот код писался на скорую руку,
Ну так что-же мне исправить чтобы все работало?

это шаткое оправдание
usama писал(а):да и perl я знаю весьма посредственно (никак не могу перестроиться после 2-x лет программирования на Си)
как по мне, C и Perl достаточно близки синтаксически

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

Re: sendmail+milter problem

Сообщение corvax » 24 июн 2005, 14:36

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

--- Milter.pm.orig      2005-06-24 13:19:06.000000000 +0300
+++ Milter.pm   2005-06-24 13:19:42.000000000 +0300
@@ -149,7 +149,7 @@
                # Just ignore rest of line in case it's F=T, T=blah...
                # Or just T=blah...

-               if ($line =~ /^X(.+),\s*S\=(.+),\s*[FT]\=(.)/)
+               if ($line =~ /^X(.+),\s*S\=(.+?),\s*[FT]\=(.)/)
                {
                        $current_name = $1;
                        $conn_info = $2;
авторы оказались еще теми знатоками регекспов
--
/corvax

usama
member
Сообщения: 23
Зарегистрирован: 23 июн 2005, 19:18
Откуда: Одесса

Re: sendmail+milter problem

Сообщение usama » 24 июн 2005, 15:00

corvax писал(а):

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

--- Milter.pm.orig      2005-06-24 13:19:06.000000000 +0300
+++ Milter.pm   2005-06-24 13:19:42.000000000 +0300
@@ -149,7 +149,7 @@
                # Just ignore rest of line in case it's F=T, T=blah...
                # Or just T=blah...

-               if ($line =~ /^X(.+),\s*S\=(.+),\s*[FT]\=(.)/)
+               if ($line =~ /^X(.+),\s*S\=(.+?),\s*[FT]\=(.)/)
                {
                        $current_name = $1;
                        $conn_info = $2;
авторы оказались еще теми знатоками регекспов
Огромное спасибо! Сам бы в жизни не нашел!

И еще пара вопросов по перлу:
1) память из-под переменных освобождается как только мы выходим из облати видимости переменной?

2) если вдруг вследстии кривости рук программиста скрипт вываливатся с ошибкой, то  память тоже нормально освобождается?

3) нет ли глюков в самом libmilter (в плане работы с памятью, а то у меня есть подозрения что в некоторых ситуациях порожденные процессы фильтра вылетают с ошибкой, а вот память из-под них не освобождается)?

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

Re: sendmail+milter problem

Сообщение corvax » 24 июн 2005, 15:05

usama писал(а):И еще пара вопросов по перлу:
1) память из-под переменных освобождается как только мы выходим из облати видимости переменной?

2) если вдруг вследстии кривости рук программиста скрипт вываливатся с ошибкой, то  память тоже нормально освобождается?

3) нет ли глюков в самом libmilter (в плане работы с памятью, а то у меня есть подозрения что в некоторых ситуациях порожденные процессы фильтра вылетают с ошибкой, а вот память из-под них не освобождается)?
на самом деле в простых перловых скриптах память должна освобождаться автоматически. но Sendmail::Milter использует треды. как постоена работа с памятью в многопоточных приложениях в данном случае, я не разбирался
--
/corvax

usama
member
Сообщения: 23
Зарегистрирован: 23 июн 2005, 19:18
Откуда: Одесса

Re: sendmail+milter problem

Сообщение usama » 24 июн 2005, 15:11

corvax писал(а):
usama писал(а):И еще пара вопросов по перлу:
1) память из-под переменных освобождается как только мы выходим из облати видимости переменной?

2) если вдруг вследстии кривости рук программиста скрипт вываливатся с ошибкой, то  память тоже нормально освобождается?

3) нет ли глюков в самом libmilter (в плане работы с памятью, а то у меня есть подозрения что в некоторых ситуациях порожденные процессы фильтра вылетают с ошибкой, а вот память из-под них не освобождается)?
на самом деле в простых перловых скриптах память должна освобождаться автоматически. но Sendmail::Milter использует треды. как постоена работа с памятью в многопоточных приложениях в данном случае, я не разбирался
Ладно, это не горит. Но все равно спасибо.

Ответить

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

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

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