(exim, сам себе, от себя самого, local to local, отправитель и получатель совпадают)Некоторые "умные" спамеры шлют письма указывая адрес отправителя и адрес получателя одинаковыми. (Сам себе)
Напр. для сервера обслуживающего почту домена example.com:mail from: test@example.com
rcpt to: test@example.comПри стандартных настройках exim аутентификация в этом случае не запрашивается, т.к. example.com указан в local_domains
domainlist local_domains = LOCAL_DOMAINS : example.comacl_check_rcpt:
require message = relay not permitted (check smtp auth)
domains = +local_domains : +relay_to_domainsВопрос 1. Как заставить exim запрашивать аутентификацию если отправитель и получатель совпадают (локальные)?
Вопрос 2. Как заставить exim запрашивать аутентификацию если отправитель и получатель локальные, но не совпадают?
>[оверквотинг удален]
>acl_check_rcpt:
>require message = relay not permitted (check smtp auth)
> domains = +local_domains : +relay_to_domains
>
1) auth_advertise_hosts = *
2) добавить в acl_check_rcpt:
accept authenticated = *
3) настроить секцию аутентификаторов
>1) auth_advertise_hosts = *
>
>2) добавить в acl_check_rcpt:
>
>accept authenticated = *
>
>3) настроить секцию аутентификаторовпервых два пункта есть
про третий пункт собственно и вопрос
>>1) auth_advertise_hosts = *
>>
>>2) добавить в acl_check_rcpt:
>>
>>accept authenticated = *
>>
>>3) настроить секцию аутентификаторов
>
>первых два пункта есть
>про третий пункт собственно и вопросВ гугле смотрели??? миллионы тем с примерами и конфигами на все случаи жизни.
>В гугле смотрели??? миллионы тем с примерами и конфигами на все случаи
>жизни.Естественно смотрел, имею привычку сначала поиском пользоваться, а потом глупые вопросы задавать.
Только с гуглом что-то не заладилось
Может неправильно запросы формулировал...
>>В гугле смотрели??? миллионы тем с примерами и конфигами на все случаи
>>жизни.
>
>Естественно смотрел, имею привычку сначала поиском пользоваться, а потом глупые вопросы задавать.
>
>
>Только с гуглом что-то не заладилось
>Может неправильно запросы формулировал...http://exim.org.ua/pipermail/exim-users/2008-December/006710...
>http://exim.org.ua/pipermail/exim-users/2008-December/006710...2 bill
спасибо что делаете за меня мою работу,но в указанной конференции так и не нашел однозначного ответа на свои вопросы.
разве что, завтра попробую помедитировать насчет этого http://exim.org.ua/pipermail/exim-users/2008-December/006719...# ---- Deny mail from external addressess from local/virtual domains
# ---- Skip authenticated users
deny
message = Authentication needed to send mail from my domain from external IP!
!authenticated = *
!hosts = +int_hosts
sender_domains = +virtual_domains : +local_domains
domains = +virtual_domains : +local_domains
>[оверквотинг удален]
> = Authentication needed to send mail from my domain
>from external IP!
>
> !authenticated = *
>
> !hosts
> = +int_hosts
>
> sender_domains = +virtual_domains : +local_domains
> domains = +virtual_domains : +local_domainsМожно на время тестирования использовать warn вместо deny. И очень удобная фишка у exim для проверки конфигурации ACL : exim -bh
на один шаг продвинулся впередaccept authenticated = *
deny !authenticated = *
sender_domains = +local_domains : +relay_to_domains
message = Warning! Authentication required!но это работает только если домены отправителя и получателя совпадают
у меня exim обслуживает несколько доменов (test.com и example.com)
#exim -bh 1.2.3.4
mail from: user@test.com
rcpt to: user@example.com
....
>>> processing "deny"
>>> check !authenticated = *
>>> check sender_domains = +local_domains : +relay_to_domains>>> test.com in "localhost : example.com"? no (end of list)
>>> test.com in ""? no (end of list)
>>> test.com in "+local_domains : +relay_to_domains"? no (end of list)
>>> deny: condition test failed....
т.е. в перечень доменов при сравнении попадает только домен получателя, а отправителя - нет (что-то подобное было тут http://www.opennet.me/openforum/vsluhforumID1/55070.html)
если же это условие переместить из acl_check_rcpt: в acl_check_mail:, то список +relay_to_domains пустой
>>> processing "deny"
>>> check !authenticated = *
>>> check sender_domains = +local_domains : +relay_to_domains
>>> test.com in "localhost : "? no (end of list)
>>> test.com in ""? no (end of list)
>>> test.com in "+local_domains : +relay_to_domains"? no (end of list)
>>> deny: condition test failedкопаю дальше
>копаю дальшенашел где собака порылась
вот так не работает:LOCAL_DOMAINS = localhost
VIRTUAL_DOMAINS = ${lookup mysql{SELECT domainname FROM domains \
WHERE domainname='${quote_mysql:$domain}' AND type='LOCAL'}}domainlist relay_to_domains = ${lookup mysql{SELECT domainname FROM domains \
WHERE domainname='${quote_mysql:$domain}' AND type='RELAY'}}domainlist local_domains = LOCAL_DOMAINS : VIRTUAL_DOMAINS
а вот так работает:
LOCAL_DOMAINS = localhost : test.com : example.com
VIRTUAL_DOMAINS = ${lookup mysql{SELECT domainname FROM domains \
WHERE domainname='${quote_mysql:$domain}' AND type='LOCAL'}}domainlist relay_to_domains = ${lookup mysql{SELECT domainname FROM domains \
WHERE domainname='${quote_mysql:$domain}' AND type='RELAY'}}domainlist local_domains = LOCAL_DOMAINS : VIRTUAL_DOMAINS
т.о. когда явно задаю все локальные домены - все ОК
когда беру из базы mysql - exim достает только домен получателя....
Некропостинг, но может кому пригодится.Проблема у abask была из-за условия where, выбирающим из базы только домен на которое пришло письмо. Работающее решение выглядит так:
domainlist active_domains = ${lookup mysql{ \
SELECT GROUP_CONCAT(`domain` SEPARATOR ' : ') \
FROM `domain` \
WHERE `domain`!='ALL' \
AND `active`='1' \
}}
accept authenticated = *deny !authenticated = *
sender_domains = +active_domains
message = Authentication required!
вы забыли ;> domainlist active_domains = ${lookup mysql{ \
> SELECT GROUP_CONCAT(`domain` SEPARATOR '
> : ') \
> FROM `domain` \
> WHERE `domain`!='ALL' \
> AND `active`='1'
> \
> }}