В вашем браузере включен плагин блокировки рекламы: Мы заботимся о своих клиентах и показываем только ту информацию, которая по нашему мнению может Вас заинтересовать. Можете смело отключать блокировку рекламы.
На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле.

Так поможем друг другу.
Модераторы: Trinity admin`s, Free-lance moderator`s
-
corvax
- free-lance moderator
- Сообщения: 877
- Зарегистрирован: 06 авг 2004, 17:21
- Откуда: Kiev, Ukraine
-
Контактная информация:
Сообщение
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
- Откуда: Одесса
Сообщение
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
-
Контактная информация:
Сообщение
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
- Откуда: Одесса
Сообщение
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
-
Контактная информация:
Сообщение
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
- Откуда: Одесса
Сообщение
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
-
Контактная информация:
Сообщение
corvax » 24 июн 2005, 15:05
usama писал(а):И еще пара вопросов по перлу:
1) память из-под переменных освобождается как только мы выходим из облати видимости переменной?
2) если вдруг вследстии кривости рук программиста скрипт вываливатся с ошибкой, то память тоже нормально освобождается?
3) нет ли глюков в самом libmilter (в плане работы с памятью, а то у меня есть подозрения что в некоторых ситуациях порожденные процессы фильтра вылетают с ошибкой, а вот память из-под них не освобождается)?
на самом деле в простых перловых скриптах память должна освобождаться автоматически. но Sendmail::Milter использует треды. как постоена работа с памятью в многопоточных приложениях в данном случае, я не разбирался
--
/corvax
-
usama
- member
- Сообщения: 23
- Зарегистрирован: 23 июн 2005, 19:18
- Откуда: Одесса
Сообщение
usama » 24 июн 2005, 15:11
corvax писал(а):usama писал(а):И еще пара вопросов по перлу:
1) память из-под переменных освобождается как только мы выходим из облати видимости переменной?
2) если вдруг вследстии кривости рук программиста скрипт вываливатся с ошибкой, то память тоже нормально освобождается?
3) нет ли глюков в самом libmilter (в плане работы с памятью, а то у меня есть подозрения что в некоторых ситуациях порожденные процессы фильтра вылетают с ошибкой, а вот память из-под них не освобождается)?
на самом деле в простых перловых скриптах память должна освобождаться автоматически. но Sendmail::Milter использует треды. как постоена работа с памятью в многопоточных приложениях в данном случае, я не разбирался
Ладно, это не горит. Но все равно спасибо.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей