The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
правила Sendmail, !*! andlis, 03-Дек-13, 13:32  [смотреть все]
Не выходит что-то каменный цветок... Посмотрите, плиз - где косячу?

Задача - взять почту, соответствующую какому-то правилу и отправить ее пользователю user1.
Вообще-то задача обычная: проверить релэй на соответствие шаблону и если соответствует - перенаправить пользователю, коллектирующему спам. Но что-то все как-то не работало.. Правила с $#error выполняются, а с $#local - нет.. Решил поколупаться в простейшем случае, поэтому прошу не удивляться бессмысленности примера ниже. Это пример, чтобы понять, что не работает.

sendmail.mc:

......
LOCAL_CONFIG
Ksyslog syslog
Kstorage macro

KSPAM6         regex -a@MATCH user2.*

LOCAL_RULE_0

SLocal_check_rcpt

R$*<---><------><------>$: $(SPAM6 $1 $)
R@MATCH><------><------>$: $(syslog "**user2**" $)
R@MATCH><------><------>$# local $: user1

ни в таком виде, ни в таком

R$*<---><------><------>$: $(SPAM6 $1 $)
R@MATCH><------><------>$# local $: user1

письма отправленные user2 к user1 не приходят. Все идет к user2. Лог пишется **user2**.
что не так? голову уже сломал ((

  • правила Sendmail, !*! Аноним, 12:28 , 04-Дек-13 (1)
    • правила Sendmail, !*! andlis, 12:40 , 04-Дек-13 (2)
      > Как бы
      > sendmail -bt -C <your_config> в руки и глядеть.

      Хм. А можно поподробнее? Естественно, я сделал sendmail -bt и проверил отрабатываются ли правила. Все отрабатывается. Не работает только строчка $#local - ее как будто нет.. И в логах при любом уровне логирования про нее молчок.
      Или вы про другое?

    • правила Sendmail, !*! andlis, 13:00 , 04-Дек-13 (3)
      > Как бы
      > sendmail -bt -C <your_config> в руки и глядеть.

      [root@mydomain tmp]# sendmail -bt -C sendmail.cf

      WARNING: Ruleset Local_check_relay has multiple definitions
      WARNING: Ruleset Local_check_rcpt has multiple definitions
      ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
      Enter <ruleset> <address>
      > Local_check_rcpt user2@mydomain

      Local_check_rcpt   input: user2 @ mydomain
      Local_check_rcpt returns: $# local $: user1

      то есть вроде все как надо.. Но действия нет.

      • правила Sendmail, !*! Аноним, 13:36 , 04-Дек-13 (4)
        • правила Sendmail, !*! andlis, 13:47 , 04-Дек-13 (5)
          > Предупреждения ни на какие мысли не наводят ?
          > Загляните в полученный .cf файл.

          Хм. Давайте договоримся так: да, я тупой. Можно мне объяснить где моя тупость?
          Лично меня предупреждения наводят на мысли о том, что я использую эти 2 правила для своих фильтров. Естественно они там 2 раза (в оригинальном месте и в моих правилах), а что может быть по-другому?
          А что такое "полученный" файл? В результате чего он получен?
          Вы понимаете какая штука, если бы я мог догадаться без дополнительных вводных, я бы догадался до того как спросил... ((

          • правила Sendmail, !*! Аноним, 13:55 , 04-Дек-13 (6)
            • правила Sendmail, !*! andlis, 14:00 , 04-Дек-13 (7)
              > Если Вы приводите .mc файл, то sendmail работает с .cf файлом, полученным
              > из .mc.
              > Sendmail'у Вы, я надеюсь, подсовываете новый, "полученный" .cf файл.
              > Вот загляните в оригинальный .cf файл, посмотрите как там оформлены прототипы локальных
              > правил.
              > Потом взгляните в _полученный_Вами_ .cf файл.

              Я не понял, совет - взглянуть в полученный мной .cf файл? Хорошо, взглянул. Что дальше?

  • правила Sendmail, !*! gruzzy, 17:45 , 05-Дек-13 (8)
    • правила Sendmail, !*! andlis, 17:57 , 05-Дек-13 (9)
      > попробуй так
      > R$*            
      >          $: $(SPAM6
      > $1 $)
      > R$* . @MATCH          
      >   $# local $: user1

      Попробовал - пришло опять юзеру 2.
      -bt
      WARNING: Ruleset Local_check_relay has multiple definitions
      WARNING: Ruleset Local_check_rcpt has multiple definitions
      ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
      Enter <ruleset> <address>
      > Local_check_rcpt user2@mydomain

      Local_check_rcpt   input: user2 @ mydomain
      Local_check_rcpt returns: @ MATCH

      довольно странное, кстати, вернул..
      Мне все же кажется, что проблема именно в части $# local $: user1
      ведь все остальное (если написать на этом же месте) прекрасно исполняется... То ли при каком-то апгрейде сендмейла запретили по умолчанию пересылку в нулевом правиле.. Но ничего подобного в инете не могу найти.. везде и у всех вот так же ((

      • правила Sendmail, !*! gruzzy, 18:03 , 05-Дек-13 (10)
        • правила Sendmail, !*! gruzzy, 18:12 , 05-Дек-13 (11)
          • правила Sendmail, !*! andlis, 18:21 , 05-Дек-13 (13)
            > ну и для очистки совести
            > KSPAM6         regex -aMATCH user2.*
            > SLocal_check_rcpt
            > R$*         $: $(SPAM6 $1 $)
            > R$* . MATCH $: $(syslog "**user2**" $)
            > R$* . MATCH $# local $: user1

            не - так не работает. то же самое выдает.

        • правила Sendmail, !*! andlis, 18:16 , 05-Дек-13 (12)
          > для начала таки пофикси
          > WARNING: Ruleset Local_check_relay has multiple definitions
          > WARNING: Ruleset Local_check_rcpt has multiple definitions
          > посмотри файл .mc, нет ли там дубля Local_check_rcpt
          > если всё ОК
          > make all install
          > и снова -bt прогони

          нет, конечно там нет дублей. ИМХО, если бы это вызывало ошибку - что-то не работало бы. Однако все работает как часы - сервер пропускает порядка 6000 писем в день. Хоть что-то бы сбилось.. Не работает только перенаправление..
          Варнинг появляется из-за моего локального правила. Но ведь для того и есть локальные правила?
          Пересобирать не хотелось бы - я из rpm собирал. То есть я бы и пересобрал, нет проблем, но я нигде в документации не могу найти, чтобы было что-то, что запрещает оное перенаправление! Как бэ нет смысла пересобирать..

          • правила Sendmail, !*! andlis, 18:28 , 05-Дек-13 (14)
            проверил на допотопном серваке, где сендмэйл 8 лет успешно проработал вместе с моими правилами (правила почти те же, только вместо $#local было $#error. Там выдает в точности такое же предупреждение.

            • правила Sendmail, !*! gruzzy, 01:33 , 06-Дек-13 (15)
              • правила Sendmail, !*! andlis, 12:18 , 06-Дек-13 (16)
                > убери LOCAL_RULE_0

                Нет, это конечно нельзя убрать ) Перенаправление почты разрешено только в этой цепочке правил.
                Кажется пришло озарение! В ней нельзя использовать правила из других цепочек! Получится - отпишусь. Правда непонятно, почему лог пишется, ну да это нюансы..

                • правила Sendmail, !*! gruzzy, 15:59 , 06-Дек-13 (17)
                  • правила Sendmail, !*! gruzzy, 16:07 , 06-Дек-13 (18)
                  • правила Sendmail, !*! andlis, 16:08 , 06-Дек-13 (20)
                    > ладно, тада хотябы замени  LOCAL_RULE_0 на LOCAL_RULESETS
                    > по сути у тебя K-map возвращает некорректное значение
                    > должен возвращать INPUT . @ MATCH

                    почему? map как раз возвращает MATCH.
                    Да я вообще все неправильно сделал (( В LOCAL_RULE_0 нельзя обращаться к этим правилам. Удивительно, что я не могу найти готового решения в сети. Исходная идея была банальная. Фильтр по имени релея - и дальше все письма, которые мне не нравятся (типа спам) перенаправляются специальному пользователю. Вот не отлуп (как у меня 100 лет работало) а перенаправление. Куда распространеннее задача? Вот если в лоб, она описана здесь http://linux.ufaras.ru/mailroute.html#2.1 . Но там такая путаница! Сижу отлаживаю (( Но чувствую, придется все равно с нуля переписывать, главное чтобы идея была рабочая..

                    • правила Sendmail, !*! gruzzy, 16:24 , 06-Дек-13 (21)
                      • правила Sendmail, !*! andlis, 16:54 , 06-Дек-13 (22)
                        > OK
                        > просто сделай так вот, просто ради интереса и покажи вывод sendmail -bt

                        [root@xx tmp]# sendmail -bt -C sendmail.cf
                        WARNING: Ruleset Local_check_rcpt has multiple definitions
                        ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
                        Enter <ruleset> <address>
                        > /map SPAM6 user2@mydomain

                        map_lookup: SPAM6 (user2@mydomain) returns MATCH (0)

                        Перенаправление не работает. Да в целом и не может..

                    • правила Sendmail, !*! andlis, 18:28 , 10-Дек-13 (24)
                      Как обещал, отписываюсь о результате. Ничего не получалось у меня, потому что в LOCAL_RULE_0 нельзя задавать правила (типа Local_check_relay). Как только чтение доходит до чего-то вроде SLocal_check_relay, дальнейшее воспринимается, как описание правила, а не часть LOCAL_RULE_0. То есть строки типа $#local $:user там уже не работают. А вот то, что одно и то же правило описывается в разных местах это нормально. Судя по документации, такие части правила просто последовательно добавляются друг к другу. Другой вопрос зачем так делать?
                      Ну и главное. Поскольку, я хотел сделать перенаправлялку для спама по шаблону релея, то я ее выкладываю. Вообще-то оригинал я взял тут: http://linux.ufaras.ru/mailroute.html#2.1 (за что автору большое спасибо), но две вещи изменил. В оригинале идет отладочная запись в лог, а у меня только по срабатыванию правила. И у меня письма, отправленные моими пользователями (определенными по smtp-авторизации), не проверяются (за идею и обсуждение спасибо DeadLoco и Medlar).

                      LOCAL_CONFIG

                      Ksyslog syslog
                      Kstorage macro

                      KSPAM1         regex -a@MATCH ([0-9]{1,3}[._x-]){3}[0-9]{1,3}
                      KSPAM2         regex -a@MATCH ([0-9]+[._x-]){2,}.*(\..*){2,}
                      KSPAM3         regex -a@MATCH [0-9a-f]{8,}(\..*){3,}
                      KSPAM4         regex -a@MATCH [0-9].*(dsl|dial|dynamic|static|ppp|pool|client|user|dhcp|gprs).*(\..*){2,}
                      KSPAM5         regex -a@MATCH (dsl|dial|dyn|static|ppp|pool|client|user|dhcp|gprs|ip|vpn|nat)[a-z_-]*[0-9]+.*(\..*){2,}
                      KSPAM6         regex -a@MATCH (mail.*\.com\.ua)

                      LOCAL_RULE_0

                      R$+<---><------><------><------>$: <$&{auth_authen}>AUTH $1
                      R<$+>AUTH$*<---><------><------>$: $2

                      R<>AUTH$*<-----><------><------>$: <$&f> $1
                      R<>$+<-><------><------><------>$: $1
                      R<$+>$+><------><------><------>$: $2 $| $>Parse11
                      R$+ $| OK<-----><------><------>$: $1
                      R$+ $| local $+><------><------>$# local $: $2

                      SParse11

                      R$*<---><------><------><------>$: <$&{client_name}>
                      R<><---><------><------><------>$@ OK
                      R<[192.168.1.$-]><-----><------>$@ OK
                      R<$+><-><------><------><------>$: $1

                      R$+<---><------><------><------>$: $(SPAM1 $1 $)
                      R@$+<--><------><------><------>$: $(syslog "Spam1 redirect: " $&{client_name} $) @$1
                      R@MATCH><------><------><------>$@ local user1

                      R$+<---><------><------><------>$: $(SPAM2 $1 $)
                      R@$+<--><------><------><------>$: $(syslog "Spam2 redirect: " $&{client_name} $) @$1
                      R@MATCH><------><------><------>$@ local user1

                      R$+<---><------><------><------>$: $(SPAM3 $1 $)
                      R@$+<--><------><------><------>$: $(syslog "Spam3 (IPV6) redirect: " $&{client_name} $) @$1
                      R@MATCH><------><------><------>$@ local user1

                      R$+<---><------><------><------>$: $(SPAM4 $1 $)
                      R@$+<--><------><------><------>$: $(syslog "Spam4 redirect: " $&{client_name} $) @$1
                      R@MATCH><------><------><------>$@ local user1

                      R$+<---><------><------><------>$: $(SPAM5 $1 $)
                      R@$+<--><------><------><------>$: $(syslog "Spam5 redirect: " $&{client_name} $) @$1
                      R@MATCH><------><------><------>$@ local user1

                      R$+<---><------><------><------>$: $(SPAM6 $1 $)
                      R@$+<--><------><------><------>$: $(syslog "Spam6 (known spammers) redirect: " $&{client_name} $) @$1
                      R@MATCH><------><------><------>$@ local user1

                      R$*<---><------><------><------>$@ OK




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру