Страница 1 из 1
проверка получателя в exim
Добавлено: 2008-03-25 18:10:41
ashgdw
В конфиге есть такая проверка:
Код: Выделить всё
accept domains = +local_domains
endpass
verify = recipient
Судя по документации, проверяется получатель принадлежащий к локальному домену. А откуда exim берет информацию о получателях??? Где в документации про это написано?
Делаю конфиг для пересылки входящей почты на другой хост. И у меня не проходит эту проверку. Конфиг дефолтный, только после nslookup роутера добавлен:
Код: Выделить всё
manualroute:
driver = manualroute
local_parts = lsearch;/usr/local/etc/exim/users.list
domains = +local_domains
transport = remote_smtp
route_list = 192.168.254.4
Спасибо.
Re: проверка получателя в exim
Добавлено: 2008-03-25 18:47:07
dikens3
А откуда exim берет информацию о получателях???
http://www.lissyara.su/?id=1239#39.31
Роутеры могут детектировать различие....
P.S. Роутеры этим занимаются.
Re: проверка получателя в exim
Добавлено: 2008-03-25 19:59:13
ashgdw
Ок, большое спасибо.

Я так понял, получатель проверяется через роутер accept? Т.к. с manualroute такое не прокатило.

Re: проверка получателя в exim
Добавлено: 2008-03-26 0:05:19
dikens3
Роутеры проверяются сверху вниз. Вообще есть debug (exim -bhc 192.168.x.x и т.д.)
Re: проверка получателя в exim
Добавлено: 2008-03-26 17:37:46
ashgdw
Это понятно. Не понятно, как в моем случае, с роутером manulroute делать проверку получателя. На ум приходит только создать вместо роутера manualroute соответствующий транспорт, который указать в роутере accept.
Re: проверка получателя в exim
Добавлено: 2008-03-27 11:31:47
cyrus_user
ashgdw писал(а):Это понятно. Не понятно, как в моем случае, с роутером manulroute делать проверку получателя. На ум приходит только создать вместо роутера manualroute соответствующий транспорт, который указать в роутере accept.
например добавить до вашего роутера manualroute, роутер redirect, где в data проверить наличие получателя. пример:
Код: Выделить всё
rcpt_check_router:
no_verify
driver = redirect
data = "${lookup юзера где нам надо} {$local_part@$domain} {:fail: RCPT unknown}}"
Re: проверка получателя в exim
Добавлено: 2008-03-27 13:12:44
Laa
Здравствуйте.
Новый пост, но в тему.
Прошу прощения, но туплю и не могу оптимизировать два кондишена.
Код: Выделить всё
accept domains = +local_domains : +relay_to_domains
verify = recipient
message = Unknown account <$local_part@$domain>
log_message = Unknown account <$local_part@$domain>
endpass
drop !verify = recipient
domains = +local_domains : +relay_to_domains
message = Unknown account <$local_part@$domain>
log_message = Unknown account <$local_part@$domain>
все это внутри acl_check_rcpt, в самом конце. Ниже только посылание подальше.
Так вот, второй кондишен поставил потому что в некоторых случаях на несуществующие адреса вместо Unknown account выдавалось посылание подальше. Сделал второй кондишен и проблему поборол. Но, уверен, что не очень красиво поборол.
Посоветуйте как побороть красивее.
Заранее спасибо.
Re: проверка получателя в exim
Добавлено: 2008-03-27 13:45:24
dikens3
Читать
тут. А спасибо сюда написать.
P.S. Необходимо понять как работает endpass и всё станет нормально.
Re: проверка получателя в exim
Добавлено: 2008-03-27 14:00:12
Laa
Теперь понял как работает endpass.
Говорил же что туплю...

спасибо!
Re: проверка получателя в exim
Добавлено: 2008-03-27 15:56:09
ashgdw
2 cyrus_user: спасибо за пример, как раз думал о подобном, возьму на заметку.
Если добавить
звездочку в
route_list, то как я понял, acl с проверкой получателя не срабатывает, в итоге проходят письма для любого получателя.
Если добавить опцию
verify_recipient в роутер
manualroute, то письма проходят только для тех, кто есть в списке, иначе срабатывает соответствующий ACL. Но без
звездочки ACL срабатывает для любого получателя. В итоге конфиг рутера такой:
Код: Выделить всё
manualroute:
driver = manualroute
verify_recipient
local_parts = lsearch;/usr/local/etc/exim/users.list
domains = +local_domains
transport = remote_smtp
route_list = * 192.168.254.4
Тоесть, получается, verify_recipient работает с ACL и со списком пользователей. Но если в route_list не указана звездочка, то получается он не работает со списком. Так? Я так понял, звездочка означает всем и для всех, но как она связана с verify_recipient???
Re: проверка получателя в exim
Добавлено: 2008-03-29 19:51:06
ashgdw
cyrus_user писал(а):ashgdw писал(а):Это понятно. Не понятно, как в моем случае, с роутером manulroute делать проверку получателя. На ум приходит только создать вместо роутера manualroute соответствующий транспорт, который указать в роутере accept.
например добавить до вашего роутера manualroute, роутер redirect, где в data проверить наличие получателя. пример:
Код: Выделить всё
rcpt_check_router:
no_verify
driver = redirect
data = "${lookup юзера где нам надо} {$local_part@$domain} {:fail: RCPT unknown}}"
Я так понял, это для юзания БД, а у меня пользователи в файле типа passwd лежат.
В итоге остановился на проверке в acl, с роутером так и не смог разобраться.
Код: Выделить всё
accept domains = +local_domains
endpass
message = "In my mailserver not stored this user"
condition = ${lookup{$local_part}lsearch{/usr/local/etc/exim/users.list}{yes
}{no}}
Re: проверка получателя в exim
Добавлено: 2014-08-27 18:25:31
Across
Ребят, нужна помощь. В конфиге exim у меня следущее:
Код: Выделить всё
rcpt_check_router:
driver = redirect
allow_fail
no_verify
data = "${if eq{}{${lookup mysql{ MYSQL_USER }}}{:blackhole: Unknown local user!}{$local_part@$domain} }"
Строка MYSQL_USER имеет вид:
Код: Выделить всё
MYSQL_USER = SELECT distinct awm_accounts.mail_inc_login as login FROM awm_accounts INNER JOIN awm_domains ON awm_accounts.id_domain = awm_domains.id_domain WHERE (awm_accounts.mail_inc_login = CONCAT('$local_part', '@', '$domain') OR awm_accounts.mail_inc_login = '$local_part') AND awm_domains.name = '$domain' AND awm_domains.is_internal = 1 AND awm_accounts.deleted = 0;
Если последний параметр awm_accounts.deleted = 0, то письмо доставляется получателю, если равен 1, то в лог exim'a увидим:
Код: Выделить всё
=> :blackhole: <test@localhost> R=rcpt_check_router
из секции rcpt_check_router конфига exim'a. Можно ли каким-то образом вставить в эту секцию правило для отправки письма отправителю?
Re: проверка получателя в exim
Добавлено: 2014-08-31 9:46:52
Alex Keda
да