Запрет от relay_from_hosts при mail from +local_domains
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Запрет от relay_from_hosts при mail from +local_domains
ЧОт никак не придумаю...
Как запретить отсылку писем для relay_from_hosts при использовании ими в MAIL FROM: адреса с доменом, который не обслуживается этим сервером.
Подскажите пожалуйста?
Как запретить отсылку писем для relay_from_hosts при использовании ими в MAIL FROM: адреса с доменом, который не обслуживается этим сервером.
Подскажите пожалуйста?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Чот я думал думал... и толи я ничо не понял толи такая формулировка не корректна... толи я думал плохо
Если скажем в базе унас лежит домен our.ru
Тогда:
Ведь если письмо отправляется с адреса mail@remote.ru mail@our.ru то +local_domains в данном случае будет содержать our.ru
Но если письмо будет отправляться с mail@our.ru на mail@remote.ru to +local_domains будет содержать ммм а ничего в ней не будет. Что какбэ не корректно.
Правильнее вроде
ТАким образом список +local_domains всегда будет содержать наш домен.
Я ошибаюсь?
Код: Выделить всё
domainlist local_domains = ${lookup mysql{SELECT `domain` FROM `domain` WHERE `domain`='${domain}' AND `active`='1'}}
Если скажем в базе унас лежит домен our.ru
Тогда:
Ведь если письмо отправляется с адреса mail@remote.ru mail@our.ru то +local_domains в данном случае будет содержать our.ru
Но если письмо будет отправляться с mail@our.ru на mail@remote.ru to +local_domains будет содержать ммм а ничего в ней не будет. Что какбэ не корректно.
Правильнее вроде
Код: Выделить всё
domainlist local_domains = ${lookup mysql{SELECT `domain` FROM `domain` WHERE `active`='1'}}
Я ошибаюсь?
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: Запрет от relay_from_hosts при mail from +local_domains
ошибаетесь
предлагаю вам помедитировать над строкой из документации:
предлагаю вам помедитировать над строкой из документации:
Когда выполняется ACL для команды RCPT, переменная “$domain” содержит домен адреса получателя.
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: Запрет от relay_from_hosts при mail from +local_domains
Код: Выделить всё
deny hosts = +relay_from_hosts
sender_domains = domain1.ru : domain2.ru и т.д.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Именно эта строка и навела меня на мысль о корректности данной записи списка.hizel писал(а):ошибаетесь
предлагаю вам помедитировать над строкой из документации:Когда выполняется ACL для команды RCPT, переменная “$domain” содержит домен адреса получателя.
Так я вам о том и говорю что после команды рцпт в ацл эта переменная будет содрежать домен получателя, а следовательно +local_domains будет содержать наш домен только в том случае если $domain будет содержать наш домен.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Код: Выделить всё
begin acl
acl_check_rcpt:
accept hosts = :
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
deny hosts = +relay_from_hosts
domains = !local_domains
Код: Выделить всё
processing "deny"
check hosts = +relay_from_hosts
cached yes match for +relay_from_hosts
cached lookup data = NULL
host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
check domains = !local_domains
our.ru in "!local_domains"? yes (end of list)
deny: condition test succeeded
SMTP>> 550 Administrative prohibition
LOG: MAIN REJECT
H=(ONE) [192.168.0.20] F=<pop@mail.ru> rejected RCPT blitzkrieg@our.ru
SMTP<< DATA
Код: Выделить всё
mysql> select domain from domain;
+----------+
| domain |
+----------+
| ALL |
| our.ru |
+----------+
3 rows in set (0.00 sec)
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Не пойму в чем дело, помогите разобраться.
Это часть конфига
Вот что меня смущает:
а потом фигаксь
Код: Выделить всё
router# cat /log
>>> host in hosts_connection_nolog? no (option unset)
LOG: [79368] SMTP connection from [192.168.0.20]
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 192.168.0.20
>>> IP address lookup yielded localhost
>>> gethostbyname looked up these IP addresses:
>>> name=localhost address=127.0.0.1
>>> checking addresses for localhost
>>> 127.0.0.1
>>> no IP address for localhost matched 192.168.0.20
>>> 192.168.0.20 does not match any IP address for localhost
>>> host in host_reject_connection? no (option unset)
>>> gethostbyname looked up these IP addresses:
>>> name=localhost address=127.0.0.1
>>> host in "localhost:192.168.0.0/24"? yes (matched "192.168.0.0/24")
>>> host in sender_unqualified_hosts? yes (matched "+relay_from_hosts")
>>> host in recipient_unqualified_hosts? yes (matched "+relay_from_hosts" - cached)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
**** SMTP testing session as if from host 192.168.0.20
**** but without any ident (RFC 1413) callback.
**** This is not for real!
220 mail2.our.ru, ESMTP EXIM
>>> SYS in helo_lookup_domains? no (end of list)
>>> using ACL "acl_check_rcpt"
>>> processing "accept"
>>> check hosts = :
>>> host in ":"? no (end of list)
>>> accept: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> our.ru in "our.ru"? yes (matched "our.ru")
>>> our.ru in "+local_domains"? yes (matched "+local_domains")
>>> check local_parts = ^[.] : ^.*[@%!/|]
>>> blitzkrieg in "^[.] : ^.*[@%!/|]"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = !+local_domains
>>> our.ru in "our.ru"? yes (matched "our.ru")
>>> our.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = !+relay_from_hosts
>>> host in "!+relay_from_hosts"? no (matched "!+relay_from_hosts" - cached)
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check !verify = sender
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing pop@mail.ru
>>> mail.ru in ""? no (end of list)
>>> mail.ru in "! +local_domains"? yes (end of list)
>>> calling dnslookup router
>>> 94.100.176.20 in "0.0.0.0 : 127.0.0.0/8"? no (end of list)
>>> routed by dnslookup router
>>> ----------- end verify ------------
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = !+relay_from_hosts
>>> host in "!+relay_from_hosts"? no (matched "!+relay_from_hosts" - cached)
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check domains = !local_domains
>>> our.ru in "!local_domains"? yes (end of list)
>>> deny: condition test succeeded
LOG: [79368] H=(SYS) [192.168.0.20] F=<pop@mail.ru> rejected RCPT blitzkrieg@our.ru
LOG: [79368] SMTP protocol error in "DATA" H=(SYS) [192.168.0.20] valid RCPT command must precede DATA
LOG: [79368] SMTP syntax error in "Subject: test" H=(SYS) [192.168.0.20] unrecognized command
LOG: [79368] SMTP syntax error in "." H=(SYS) [192.168.0.20] unrecognized command
LOG: [79368] H=(SYS) [192.168.0.20] incomplete transaction (QUIT) from <pop@mail.ru>
LOG: [79368] SMTP connection from (SYS) [192.168.0.20] closed by QUIT
250 mail2.our.ru Hello SYS [192.168.0.20]
250 OK
550 Administrative prohibition
503-All RCPT commands were rejected with this error:
503-Administrative prohibition
503 valid RCPT command must precede DATA
500 unrecognized command
500 unrecognized command
221 mail2.our.ru closing connection
Код: Выделить всё
begin acl
acl_check_rcpt:
accept hosts = :
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
deny message = Relay not permitted
hosts = !+relay_from_hosts
condition = ${if !eq {$domain}{${lookup mysql{MY_DOMAIN_LIST}{$value}{0}}}{yes}{no}}
deny hosts = +relay_from_hosts
!verify = sender
deny
hosts = !+relay_from_hosts
!verify = recipient
deny hosts = +relay_from_hosts
domains = !local_domains
Код: Выделить всё
>>> processing "deny"
>>> check domains = !+local_domains
>>> our.ru in "our.ru"? yes (matched "our.ru")
>>> our.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
Код: Выделить всё
>>> processing "deny"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check domains = !local_domains
>>> our.ru in "!local_domains"? yes (end of list)
>>> deny: condition test succeeded
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Да я так и делал, да все опять упирается в этот запрос который +local_domains а домены ручками перечислять не катит.
deny hosts = +relay_from_hosts
sender_domains = !+local_domains
Но ведь при правильном списке +local_domains можно будет сделать так кошерненько.dikens3 писал(а):Код: Выделить всё
deny hosts = +relay_from_hosts sender_domains = domain1.ru : domain2.ru и т.д.
deny hosts = +relay_from_hosts
sender_domains = !+local_domains
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Ну объясните почему сначала домен our.ru не попадает в список !+local_domains а потом попадает в него?
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
БЛДЖАД +local_domains
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Вот так будет корректнее и правильнее вроде
domainlist local_domains = ${tr{${lookup mysql {SELECT domain FROM domain} } } {"\n"} {:}}
domainlist local_domains = ${tr{${lookup mysql {SELECT domain FROM domain} } } {"\n"} {:}}
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: Запрет от relay_from_hosts при mail from +local_domains
если доменов немного лучше список делать всегда. Я через sg делаю. Тогда и sender_domains нормально работает.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Ну проще просто. Я и говорю что в той формулировке не оч. корректно это работает, точнее работает мож и корректно но идеологически неправильно ведь local_domains это просто список доменов, а в случае указанного в первом посте запроса это список из 1 домена да и то не всегда.
Второй запрос верный, но там разделителей нет. Хотя странно, я вроде для массовой рассылки использовался просто запрос без разделителей и это работает. А тут нет.
А что такое sg :-)
Вот последний local_domains будет содержать как раз то, что нужно как раз в той, что нужно форме.
Второй запрос верный, но там разделителей нет. Хотя странно, я вроде для массовой рассылки использовался просто запрос без разделителей и это работает. А тут нет.
А что такое sg :-)
Вот последний local_domains будет содержать как раз то, что нужно как раз в той, что нужно форме.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Вобщем всем, кто использует списки доменов в бд рекомендую пользоваться именно такой формулировкой запроса, ибо предложенная в статьях многоуважаемого не корректна. Т.е. как таковая не является списком вообще.
Поэтому данное правило работать не будет, хотя и является корректным с точки зрения разработчиков.
При использовании такого листа все корректно обрабатывается.
Т.е. я не говорю, что первоначальня формулировка не работает, я лишь утверждаю, что она не является тем, чем должна являться. Опять таки, из-за некорректности она усложняла понимание:-)
Поэтому данное правило работать не будет, хотя и является корректным с точки зрения разработчиков.
Код: Выделить всё
deny hosts = +relay_from_hosts
sender_domains = !+local_domains
domainlist local_domains = ${tr{${lookup mysql {SELECT domain FROM domain} } } {"\n"} {:}}
Т.е. я не говорю, что первоначальня формулировка не работает, я лишь утверждаю, что она не является тем, чем должна являться. Опять таки, из-за некорректности она усложняла понимание:-)
Последний раз редактировалось Alex Keda 2010-05-20 13:48:37, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Да это же естественно касается листа relay_to_domains который кстати говоря в случае если сервер обслуживает только локальные домены вообще нужно оставить пустым и не использовать дабы не етить свой моск лишний раз ненужными парвилами.
Ну и как посоветовал hizel Больше медитировать, что кстати ему тоже не помешает :-)
И спасибо dikens3 :-)
Ну и как посоветовал hizel Больше медитировать, что кстати ему тоже не помешает :-)
И спасибо dikens3 :-)
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: Запрет от relay_from_hosts при mail from +local_domains
как-то нагромождено, так красивее мыслю:
у меня каждый пинок exim - медитация ~8-)
Код: Выделить всё
domainlist local_domains = ${lookup mysql{select concat(domain,' : ') from domain}}
BlitzKrieg писал(а): Ну и как посоветовал hizel Больше медитировать, что кстати ему тоже не помешает :-)
у меня каждый пинок exim - медитация ~8-)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Не знаю как экзим, а я к завершающим : отношусь не очень :-)
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: Запрет от relay_from_hosts при mail from +local_domains
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Не знаю где у вас ТУТ, а у нас ТУТ сущесвтенно :-)
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: Запрет от relay_from_hosts при mail from +local_domains
для Ъ:
Пустые элементы в конце списков всегда игнорируются.
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Я к тому, что некошерно это, даже несмотря на игнорирование экзимом.
Помимо правильности/неправильности есть еще личные приципы. Вот все лепят where domain = $domain и это работает, но это усложняет понимание механизмов работы и идет в разрез с принципами :-)
Помимо правильности/неправильности есть еще личные приципы. Вот все лепят where domain = $domain и это работает, но это усложняет понимание механизмов работы и идет в разрез с принципами :-)
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: Запрет от relay_from_hosts при mail from +local_domains
Почти тоже,что и tr. Принцип тот же.А что такое sg :-)
Согласен.Вот все лепят where domain = $domain и это работает, но это усложняет понимание механизмов работы и идет в разрез с принципами :-)
Аналогичную проблему я уже проходил когда-то.
http://forum.lissyara.su/viewtopic.php? ... er_domains
Хочу сделать ограничение на объём отправляемого сообщения для наших пользователей.Так работает :-)Код: Выделить всё
# Ограничение на отправку сообщения для наших пользователей, если сообщение больше определённого размера не отправляем. deny message = 10K for $sender_address_domain $sender_address sender_domains = mydomain1.ru : mydomain2.ru condition = ${if > {$message_size}{10K}}
А так нет. Вот я не въеду, а почему собственно?Код: Выделить всё
deny message = 10K for $sender_address_domain $sender_address sender_domains = +local_domains condition = ${if > {$message_size}{10K}}
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: Запрет от relay_from_hosts при mail from +local_domains
я щитаю, нужно побольше работы переносить на БД у экзима и так работы выше крыши
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- ст. прапорщик
- Сообщения: 538
- Зарегистрирован: 2008-03-13 12:02:59
Re: Запрет от relay_from_hosts при mail from +local_domains
Подозреваю, что какой-нибудь acl без вызова mysql выполняется быстрее чем с ним :-) Проверка домена отсылателя на принадлежность к локальным в случае использования mysql и списка в конфиге какбэ сама намекае кто чем должен занимацо