Здравствуйте. Прошу спецов помочь.
В Exim под Freebsd настроена маршрутизацияsmarthost:
driver = manualroute
transport = remote_smtp
domains = !+local_domains : !whost.ru : !wwhost.ru
route_list = \
* remote.smtp.ru;т.е. все письма в зоне +local_domains (берется из СУБД) ходят локально, на внешние адреса, вся остальная почта, кроме whost.ru, wwhost.ru ходят через remote.smtp.ru. Все устраивало, но возникла необходимость один локальный хост вынести из этого правила, т.е. в базе +local_domains прописано два хоста lhost.ru и llhost.ru надо чтоб lhost.ru использовал роутер smarthost, а llhost.ru игнорировал его и при маршрутизации использовался только штатный dnslookup. Вот такая проблема.
пробовалroute_list = \
domains = +relay_domains
lhost.ru remote.smtp.ru;но если так, то получается что вся почта с lhost.ru идет через remote.smtp.ru, в том числе и локальная(((
как исключить llhost.ru из отправки на remote.smtp.ru, при этом сохранить локальную маршрутизацию, ломаю голову третий день??
>[оверквотинг удален]
> надо чтоб lhost.ru использовал роутер smarthost, а llhost.ru игнорировал его и
> при маршрутизации использовался только штатный dnslookup. Вот такая проблема.
> пробовал
> route_list = \
> domains = +relay_domains
> lhost.ru remote.smtp.ru;
> но если так, то получается что вся почта с lhost.ru идет
> через remote.smtp.ru, в том числе и локальная(((
> как исключить llhost.ru из отправки на remote.smtp.ru, при этом сохранить локальную маршрутизацию,
> ломаю голову третий день??Сделайте отдельный роутер сверху для нужного вам домена.
> Сделайте отдельный роутер сверху для нужного вам домена.Спасибо что откликнулись.
Я пробовал так (соответственно в начале маршрутизации прописывал):
smarthost:
driver = manualroute
transport = remote_smtp
domains = +relay_domains
route_list = \
lhost.ru remote.smtp.ru;так получается, что вся исходящая почта с lhost.ru идет через remote.smtp.ru, а остальные домены пропускаются, такой вариант бы устраивал, если бы прописать чтоб с @lhost.ru на @lhost.ru, т.е. локальная почта не ходила бы тоже через remote.smtp.ru, потому как удаленный smtp находится не близко, и если вся почта, в том числе и локальная начнет ходить через него, то канал забъется(.
Или я что-то не так прописываю?
smarthost:
sender_domains = !lhost.ru
driver = manualroute
transport = remote_smtp
domains = +relay_domains
route_list = lhost.ru remote.smtp.ru;>[оверквотинг удален]
> domains = +relay_domains
> route_list = \
> lhost.ru remote.smtp.ru;
> так получается, что вся исходящая почта с lhost.ru идет через remote.smtp.ru, а
> остальные домены пропускаются, такой вариант бы устраивал, если бы прописать чтоб
> с @lhost.ru на @lhost.ru, т.е. локальная почта не ходила бы тоже
> через remote.smtp.ru, потому как удаленный smtp находится не близко, и если
> вся почта, в том числе и локальная начнет ходить через него,
> то канал забъется(.
> Или я что-то не так прописываю?
Илиacl_smtp_rcpt:
set acl_c_sender_domain = $sender_domainssmarthost:
condition = ${if !eq {$acl_c_sender_domain}{lhost.ru}}
driver = manualroute
transport = remote_smtp
domains = +relay_domains
route_list = \
lhost.ru remote.smtp.ru;>[оверквотинг удален]
> domains = +relay_domains
> route_list = \
> lhost.ru remote.smtp.ru;
> так получается, что вся исходящая почта с lhost.ru идет через remote.smtp.ru, а
> остальные домены пропускаются, такой вариант бы устраивал, если бы прописать чтоб
> с @lhost.ru на @lhost.ru, т.е. локальная почта не ходила бы тоже
> через remote.smtp.ru, потому как удаленный smtp находится не близко, и если
> вся почта, в том числе и локальная начнет ходить через него,
> то канал забъется(.
> Или я что-то не так прописываю?
> acl_smtp_rcpt:
> set acl_c_sender_domain = $sender_domains
> smarthost:
> condition = ${if !eq {$acl_c_sender_domain}{lhost.ru}}
> driver = manualroute
> transport = remote_smtp
> domains = +relay_domains
> route_list = \
> lhost.ru remote.smtp.ru;Спасибо, но не получается предложенными вами способами отправить почту как надо. В первом случае sender_domains неизвестная команда пишет,
а во втором так же с lhost.ru на lhost.ru ходит через remote.smtp.ru(
>[оверквотинг удален]
> domains = +relay_domains
> route_list = \
> lhost.ru remote.smtp.ru;
> так получается, что вся исходящая почта с lhost.ru идет через remote.smtp.ru, а
> остальные домены пропускаются, такой вариант бы устраивал, если бы прописать чтоб
> с @lhost.ru на @lhost.ru, т.е. локальная почта не ходила бы тоже
> через remote.smtp.ru, потому как удаленный smtp находится не близко, и если
> вся почта, в том числе и локальная начнет ходить через него,
> то канал забъется(.
> Или я что-то не так прописываю?smarthost:
driver = manualroute
transport = remote_smtp
domains = lhost.ru !!!!!!!!!!!!!!!!!1
route_list = \
lhost.ru remote.smtp.ru;Уж это наверняка сработает
> smarthost:
> driver = manualroute
> transport = remote_smtp
> domains = lhost.ru !!!!!!!!!!!!!!!!!1
> route_list = \
> lhost.ru remote.smtp.ru;
> Уж это наверняка сработаетТак будет работать
mail# exim -bt admin@lhost.ru admin@mail.ru
admin@lhost.ru
<-- admin@lhost.ru
router = smarthost, transport = remote_smtp
host remote.smtp.ru [192.168.0.1]
admin@mail.ru
<-- admin@mail.ru
router = dnslookup, transport = remote_smtp
host mxs.mail.ru [94.100.176.20]или
mail# exim -bt admin@lhost.ru user@1host.ru
admin@lhost.ru
<-- admin@lhost.ru
router = smarthost, transport = remote_smtp
host remote.smtp.ru [192.168.0.1]
user@1host.ru
<-- user@1host.ru
router = smarthost, transport = remote_smtp
host remote.smtp.ru [192.168.0.1]т.е. видно что локальная почта будет ходить через remote.smtp.ru
единственно что получилось на сегодня, это при конфигеsmarthost:
driver = manualroute
# domains = +relay_to_domains
domains = !+local_domains
transport = remote_smtp
route_list = * remote.smtp.ru;получаем
mail# exim -bt admin@lhost.ru admin@mail.ru
admin@lhost.ru
<-- admin@lhost.ru
router = dovecot_user, transport = dovecot_delivery
admin@mail.ru
router = smarthost, transport = remote_smtp
host remote.smtp.ru [192.168.0.1]или
mail# exim -bt admin@lhost.ru user@lhost.ru
admin@lhost.ru
<-- admin@lhost.ru
router = dovecot_user, transport = dovecot_delivery
user@lhost.ru
<-- user@lhost.ru
router = dovecot_user, transport = dovecot_deliveryт.е. локальная почта не покидает локальную сеть, тут все норм, но
mail# exim -bt admin@2host.ru admin@mail.ru
admin@2host.ru
<-- admin@2host.ru
router = dovecot_user, transport = dovecot_delivery
admin@mail.ru
<-- admin@mail.ru
router = smarthost, transport = remote_smtp
host remote.smtp.ru [192.168.0.1]такой вариант не устраивает, нужно чтоб
mail# exim -bt admin@2host.ru admin@mail.ru
admin@2host.ru
<-- admin@2host.ru
router = dovecot_user, transport = dovecot_delivery
<-- admin@mail.ru
router = dnslookup, transport = remote_smtp
host mxs.mail.ru [94.100.176.20]вообщем чтоб @1host.ru в мир через smarthost
@2host.ru в мир через dnslookup
,а @1host.ru на @1host.ru, @2host.ru и обратно через dovecot_userя уже не знаю... пробовал по разному, но...(((
> @2host.ru в мир через dnslookup
> ,а @1host.ru на @1host.ru, @2host.ru и обратно через dovecot_user
> я уже не знаю... пробовал по разному, но...(((Я твою простынку не читал ;) но уж понятно пусть всё идёт серез dnslookup, а перед dnslookup поставь жёсткий роутер с domains = 1host.ru и no_more и что тебе нужно.
> Я твою простынку не читал ;) но уж понятно пусть всё идёт
> серез dnslookup, а перед dnslookup поставь жёсткий роутер с domains =
> 1host.ru и no_more и что тебе нужно.ну вообщем получилось как надо
smarthost:
driver = manualroute
domains = !+local_domains
transport = remote_smtp
condition = ${if match{$sender_address_domain}{1host.ru}{yes} {no}}
route_list = * remote.smtp.ru;локальная почта не покидает локальную сеть, в мир с 1host.ru через remote.smtp.ru, все остальные локальные хосты через dns, кстати через такой роутер можно любой локальный хост отправить в мир через свой удаленный smtp;)
> локальная почта не покидает локальную сеть, в мир с 1host.ru через remote.smtp.ru,
> все остальные локальные хосты через dnsВ spec.txt это [почти] выглядит так:
hub_route:
driver = manualroute
transport = remote_smtp
route_list = *.rhodes.tvs.example $domainВ дебиановском exim4-config вот так:
# see exim4-config_files(5) and spec.txt chapter 20.3 through 20.7 for
# more detailed documentation.hubbed_hosts:
debug_print = "R: hubbed_hosts for $domain"
driver = manualroute
domains = "${if exists{CONFDIR/hubbed_hosts}\
{partial-lsearch;CONFDIR/hubbed_hosts}\
fail}"
same_domain_copy_routing = yes
route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
transport = remote_smtp
>, кстати через такой роутер можно
> любой локальный хост отправить в мир через свой удаленный smtp;)Это называется smarthost. spec.txt:
smart_route:
driver = manualroute
domains = !+local_domains
transport = remote_smtp
route_list = * smarthost.ref.example
exim4-config:smarthost:
debug_print = "R: smarthost for $local_part@$domain"
driver = manualroute
domains = ! +local_domains
transport = remote_smtp_smarthost
route_list = * DCsmarthost byname
host_find_failed = defer
same_domain_copy_routing = yes
no_more
Это если вдруг кому нечего почитать будет.