Доброе время суток...Попробовал я улучшить защиту от СПАМА на постовом сервере Sendmail. Поиск в Интернете привел меня на статью - http://www.dz.dn.ua/spam/antispam.html. Кусочек из нее (немного порезано):
LOCAL_CONFIG
Knondsl1 regex -a@MATCH (^|[0-9.-])(mail|mailrelay|mta|mx|relay|smtp)[0-9.-]
Knondsl2 regex -a@MATCH \.(мой_домен\.ru)$
Kdsl1 regex -a@MATCH ([0-9].*){5,}
Kdsl2 regex -a@MATCH (^|[0-9.-])([axv]dsl|as|[ck]lient||pppo[ae]|vpn)Поставил на тестирование и сразу наткнулся на понятную проблему - почтовик не принимает письма от локальной сети конторы (10.0.0.0/24). IP- Адреса машин ведь полностью не резолвятся (по его мнению). Попробовал написать исключения в конфиги для моей адресации типа...
Knondsl2 regex -a@MATCH \.(мой_домен\.ru|10\.0\.0\.[0-9])$
Увы не помогло...Может кто поможет как решить эту проблему?
"Эта" проблема так просто не решается.
А статья, которая послужила Вам источником вдохновения, никуда не годится. Поищите другие, их много.
>"Эта" проблема так просто не решается.
>А статья, которая послужила Вам источником вдохновения, никуда не годится. Поищите другие,
>их много.А что можете посоветовать? Если дадите ссылку на более лучшее решение, фильтрующее почту ещё на этапе организации соединения, буду очень признателен... А так, это пустые слова... лишь бы что-нибудь написать...
>Попробовал написать исключения в конфиги
>для моей адресации типа...
>Knondsl2 regex -a@MATCH \.(мой_домен\.ru|10\.0\.0\.[0-9])$
>Увы не помогло...
>
>Может кто поможет как решить эту проблему?покажите на примере, что вы хотите заматчить в исключении
>
>покажите на примере, что вы хотите заматчить в исключенииПочтовый сервер имеет интернетовскую адресацию с ним (через NAT) работают клиенты из локальной сети с адресацией 10.0.0.0/24. Хотелось бы чтоб для клиентов из локалки проверки не проверялись и письма можно было бы отправлять. Сейчас при попытке из локальной сети (net 10.0.0.0/24) отправить письмо выдает сообщение "!18.04.2008, 16:26:25: SEND - Сервер сообщает об ошибке: 5.7.1 Relaying denied. IP name lookup failed for 10.0.0.86".
>>
>>покажите на примере, что вы хотите заматчить в исключении
>
>Почтовый сервер имеет интернетовскую адресацию с ним (через NAT) работают клиенты из
>локальной сети с адресацией 10.0.0.0/24. Хотелось бы чтоб для клиентов из
>локалки проверки не проверялись и письма можно было бы отправлять. Сейчас
>при попытке из локальной сети (net 10.0.0.0/24) отправить письмо выдает сообщение
>"!18.04.2008, 16:26:25: SEND - Сервер сообщает об ошибке: 5.7.1 Relaying
>denied. IP name lookup failed for 10.0.0.86".покажите рулсет, который вы добавили
>покажите рулсет, который вы добавилиВот что добавил в конфигурацию sendmail-а...
LOCAL_CONFIG
Knondsl1 regex -a@MATCH (^|[0-9.-])(mail|mailrelay|mta|mx|relay|smtp)[0-9.-]
Knondsl2 regex -a@MATCH \.(domain\.ru)$
Knondsl3 regex -a@MATCH \.(10\.0\.0\.[0-9])$Kdsl1 regex -a@MATCH ([0-9].*){5,}
Kdsl2 regex -a@MATCH (^|[0-9.-])([axv]dsl|as|bgp|broadband|cable|[ck]lient|dhcp|dial|dialin|dialup|dialer|dip|dsl|dslam|dup|dyn|dynamic|host|ip|isdn|modem|nas|node|pool|ppp|pppo[ae]|sirius.*ukrtel.*|user|users)[0-9.-]
Kdsl3 regex -a@MATCH [0-9a-f]{8,}
Kdsl4 regex -a@MATCH (^|\.)[0-9]
Kdsl5 regex -a@MATCH (-.*){3,}
Kdsl6 regex -a@MATCH \.(ipt\.aol\.com|internetdsl\.tpnet\.pl|rr\.com|pppool\.de|adelphia\.net|osnanet\.de|dedicado\.com\.uy)$LOCAL_RULESETS
SLocal_check_relay
R$* $: < $&{client_resolve} >
R<TEMP> $#error $@ 4.7.1 $: "450 Relaying temporarily denied. IP name loo-kup failed for " $&{client_addr}
R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed for " $&{client_addr}
R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name forged (PTR and A records mismatch) for " $&{client_addr}R$* $: $(nondsl1 $&{client_name} $)
R@MATCH $@ OK
R$* $: $(nondsl2 $&{client_name} $)
R@MATCH $@ OK
R$* $: $(nondsl3 $&{client_name} $)
R@MATCH $@ OKR$* $: $(dsl1 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (1), please use Provider SMTP"
R$* $: $(dsl2 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (2), please use Provider SMTP"
R$* $: $(dsl3 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (3), please use Provider SMTP"
R$* $: $(dsl4 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (4), please use Provider SMTP"
R$* $: $(dsl5 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (5), please use Provider SMTP"
R$* $: $(dsl6 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name} " [" $&{client_addr} "] (6), please use Provider SMTP"
поставьте проверку на исключения первойу вас срабатывает блокировка на первых правилах по client_resolve
>[оверквотинг удален]
>" [" $&{client_addr} "] (3), please use Provider SMTP"
>R$* $: $(dsl4 $&{client_name} $)
>R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name}
>" [" $&{client_addr} "] (4), please use Provider SMTP"
>R$* $: $(dsl5 $&{client_name} $)
>R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name}
>" [" $&{client_addr} "] (5), please use Provider SMTP"
>R$* $: $(dsl6 $&{client_name} $)
>R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name}
>" [" $&{client_addr} "] (6), please use Provider SMTP"
>[оверквотинг удален]
>>" [" $&{client_addr} "] (3), please use Provider SMTP"
>>R$* $: $(dsl4 $&{client_name} $)
>>R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name}
>>" [" $&{client_addr} "] (4), please use Provider SMTP"
>>R$* $: $(dsl5 $&{client_name} $)
>>R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name}
>>" [" $&{client_addr} "] (5), please use Provider SMTP"
>>R$* $: $(dsl6 $&{client_name} $)
>>R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " $&{client_name}
>>" [" $&{client_addr} "] (6), please use Provider SMTP"Спасибо, сейчас попробую
Перенес проверки ниже исключенийLOCAL_RULESETS
SLocal_check_relay
R$* $: $(nondsl1 $&{client_name} $)
R@MATCH $@ OK
R$* $: $(nondsl2 $&{client_name} $)
R@MATCH $@ OK
R$* $: $(nondsl3 $&{client_name} $)
R@MATCH $@ OKR$* $: < $&{client_resolve} >
R<TEMP> $#error $@ 4.7.1 $: "450 Relaying temporarily denied. IP name loo-kup failed for " $&{client_addr}
R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed for " $&{client_addr}
...Все равно не желает отправлять почту от клиентов из локальной сети.
В логах сервера вот такое сообщение:
Apr 21 13:21:39 srv0 sm-mta[36110]: ruleset=check_relay, arg1=[10.0.0.86], arg2=10.0.0.86, relay=[10.0.0.86], reject=550 5.7.1 Relaying denied. IP name lookup failed for 10.0.0.86Может быть я не правильно пишу исключение для сети 10.0.0.0/24???
Knondsl3 regex -a@MATCH \.(10\.0\.0\.[0-9])$
ну тогда я повторю свой первый вопроспокажите конкретно что вы хотите заматчить
>ну тогда я повторю свой первый вопрос
>
>покажите конкретно что вы хотите заматчитьМожет быть я что-то путаю и недопонимаю это строки конфига
LOCAL_CONFIG
Knondsl1 regex -a@MATCH (^|[0-9.-])(mail|mailrelay|mta|mx|relay|smtp)[0-9.-]
Knondsl2 regex -a@MATCH \.(zemsky\.ru)$
(Мой домен, в котором работает почтовый сервер)
Knondsl3 regex -a@MATCH \.(10\.0\.0\.[0-9])$
(Пользователи локальной сети, работающие с этим почтовым сервером. ЛВС - 10.0.0.0/24)Я предполагал сделать исключения для IP-адресов 10.0.0.ххх и пользователей почтового сервера в домене zemsky.ru) что-бы для них не выполнялись дальнейшие проверки... Вроде бы так...
Держите меня семеро ... Иначе я сейчас прямо на рабочем месте повешусь ...Я хотела увидеть какие именно у вас исключения.
Вот вы пишете 10.0.0а вместе с тем в nondsl3 у вас еще круглые скобки и точка перед первой.
Как я могу узнать, что вы хотите заматчить??? Покажите пример!
Какая именно последовательность символов должна быть поймана вашим nondsl3 ???Ясновиденьем я не обладаю
>[оверквотинг удален]
>
>Я хотела увидеть какие именно у вас исключения.
>Вот вы пишете 10.0.0
>
>а вместе с тем в nondsl3 у вас еще круглые скобки и
>точка перед первой.
>Как я могу узнать, что вы хотите заматчить??? Покажите пример!
>Какая именно последовательность символов должна быть поймана вашим nondsl3 ???
>
>Ясновиденьем я не обладаюПример...
10.0.0.1 или 10.0.0.2 или 10.0.0.3 и так далее до 10.0.0.254 любое из этих значений..Извиняй, полный профан...
Knondsl3 regex -a@MATCH 10[.]0[.]0[.][1-9]$
сорри
без последнего доллара
>сорри
>без последнего доллараОгромнейшее спасибо!!! Все получилось правило сработало.
Если не трудно можешь ещё пояснить, что означает знак "$" в конце выражения и "\." в начале выражения.
>Если не трудно можешь ещё пояснить, что означает знак "$" в концеозначает конец шаблона
те 10.0.0.1] уже не заматчится
заматчится только то, что оканчивается на точно
10.0.0.1
10.0.0.99
...
>выражения и "\." в начале выражения.. в regex означает любой символ
\. - в regex это настоящая точкаДалее начинается самое интересное:
в sendmail.cf точка означает пробел (см sendmail.cf (egrep Blank))
НО! в regex точка - любой символпОЭТОМУ чтобы в спец преобразовании указать именно пробел ИСПОЛЬЗУЕМ комбинацию \.
В общем, если ин-но, см.
http://www.anrb.ru/linux/regex.html#features
>Может кто поможет как решить эту проблему?А в файле /etc/mail/access.db разрешено принимать письма от локальной сети?
>>Может кто поможет как решить эту проблему?
>
>А в файле /etc/mail/access.db разрешено принимать письма от локальной сети?Вот что в /etc/mail/access
10.0.0 RELAY