на один шаг продвинулся вперед
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
....
т.е. в перечень доменов при сравнении попадает только домен получателя, а отправителя - нет (что-то подобное было тут https://www.opennet.ru/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
копаю дальше