Добрый деньсхема работы почты такая:
почта приходит на фронт-энд - ubuntu+exim4+spamassassin++
фильтруется, очищается и пересылается на exch2007(как бэк-энд)почта ходит все норм, но по приему почты exim4 должен искать "локальныую часть" адреса в /etc/aliases и менять "домен.com" на дом.local
а он этого не делает. Подскажите что и где не так.
и не понятно вот еще что: local_domanin указывать мой домен как локальный, или он всеже внешний для фронт-энда?
если указывать, то подскажите где его указывать.. что-то перерыл все, но 100% "того" параметра не нашел.cat /etc/aliases
11111@домен.com 11112@дом.localcat 400_exim4-config_system_aliases
### router/400_exim4-config_system_aliases
################################## This router handles aliasing using a traditional /etc/aliases file.
#
##### NB You must ensure that /etc/aliases exists. It used to be the case
##### NB that every Unix had that file, because it was the Sendmail default.
##### NB These days, there are systems that don't have it. Your aliases
##### NB file should at least contain an alias for "postmaster".
#
# This router handles the local part in a case-insensitive way which
# satisfies the RFCs requirement that postmaster be reachable regardless
# of case. If you decide to handle /etc/aliases in a caseful way, you
# need to make arrangements for a caseless postmaster.
#
# Delivery to arbitrary directories, files, and piping to programs in
# /etc/aliases is disabled per default.
# If that is a problem for you, see
# /usr/share/doc/exim4-base/README.Debian.gz
# for explanation and some workarounds.system_aliases:
debug_print = "R: system_aliases for $local_part@$domain"
driver = redirect
domains = +local_domains
allow_fail
allow_defer
data = ${lookup{$local_part}wildlsearch{/etc/aliases}}
#${lookup{$local_part}wildsearch{/etc/aliases}}
# .ifdef SYSTEM_ALIASES_USER
# user = SYSTEM_ALIASES_USER
# .endif
# .ifdef SYSTEM_ALIASES_GROUP
# group = SYSTEM_ALIASES_GROUP
# .endif
#B .ifdef SYSTEM_ALIASES_FILE_TRANSPORT
# file_transport = SYSTEM_ALIASES_FILE_TRANSPORT
# .endif
# .ifdef SYSTEM_ALIASES_PIPE_TRANSPORT
# pipe_transport = SYSTEM_ALIASES_PIPE_TRANSPORT
# .endif
# .ifdef SYSTEM_ALIASES_DIRECTORY_TRANSPORT
# directory_transport = SYSTEM_ALIASES_DIRECTORY_TRANSPORT
# .endifПодскажите пожалуйста логику всего этого?
>[оверквотинг удален]
> #B .ifdef SYSTEM_ALIASES_FILE_TRANSPORT
> # file_transport = SYSTEM_ALIASES_FILE_TRANSPORT
> # .endif
> # .ifdef SYSTEM_ALIASES_PIPE_TRANSPORT
> # pipe_transport = SYSTEM_ALIASES_PIPE_TRANSPORT
> # .endif
> # .ifdef SYSTEM_ALIASES_DIRECTORY_TRANSPORT
> # directory_transport = SYSTEM_ALIASES_DIRECTORY_TRANSPORT
> # .endif
> Подскажите пожалуйста логику всего этого?Конечно наверное не в тему, но все же. А Вас не достает каждый раз править файл /etc/aliases. Может стоит посмотреть в другую сторону, где меньше этой работы. Да и если уж на то пошло. То проверять есть ли такой получатель можно уже и запросами к LDAP. а там нам уже не важно какой у него домен, если есть такой localpart, то вперед заменяем domain и шлем на exchange. Я сам поднимал ни одну связку exim+exchange. Мало того, есть связки exim+dovecot+AD, где все почтовые адреса и правила пересылки почты хранятся в AD, а на exim только один раз настроено.
> Конечно наверное не в тему, но все же. А Вас не достает
> каждый раз править файл /etc/aliases. Может стоит посмотреть в другую сторону,
> где меньше этой работы. Да и если уж на то пошло.
> То проверять есть ли такой получатель можно уже и запросами к
> LDAP. а там нам уже не важно какой у него домен,
> если есть такой localpart, то вперед заменяем domain и шлем на
> exchange. Я сам поднимал ни одну связку exim+exchange. Мало того, есть
> связки exim+dovecot+AD, где все почтовые адреса и правила пересылки почты хранятся
> в AD, а на exim только один раз настроено.К сожалению есть необходимость в ведении данного списка.
У вас НЕ правильное понимание работы wildlsearch
http://www.lissyara.su/doc/exim/4.70/file_and_database_lookups/
читайте
9.3 Одноключевые типы поиска>[оверквотинг удален]
> #B .ifdef SYSTEM_ALIASES_FILE_TRANSPORT
> # file_transport = SYSTEM_ALIASES_FILE_TRANSPORT
> # .endif
> # .ifdef SYSTEM_ALIASES_PIPE_TRANSPORT
> # pipe_transport = SYSTEM_ALIASES_PIPE_TRANSPORT
> # .endif
> # .ifdef SYSTEM_ALIASES_DIRECTORY_TRANSPORT
> # directory_transport = SYSTEM_ALIASES_DIRECTORY_TRANSPORT
> # .endif
> Подскажите пожалуйста логику всего этого?
Прочел, пытаюсь применить....но не заменяет.
Как бы проверить, в какой последовательности exim4 обрабатывает отсылку адреса?И где блин в конфигах exim4"ого явно указывается кто такие local_domain
обыскался уже((
> Как бы проверить, в какой последовательности exim4 обрабатывает отсылку адреса?у exim прекрасный инструментарий отладки, все нюансы расписаны в exim/doc/spec.txt
если вам лень вникать в отладку по роутерам/транспортам/фильтрам, можете
использовать общий дебаг: exim -bd -d +all
> И где блин в конфигах exim4"ого явно указывается кто такие local_domain
> обыскался уже((попробуйте grep :)
список local_domains определяется там же, где определяются все не сессионные переменные, прямо в начале exim4.conf
> список local_domains определяется там же, где определяются все не сессионные переменные,
> прямо в начале exim4.confне, я нашел конечно определение этого параметра, но там опять ссылка
domainlist local_domains = MAIN_LOCAL_DOMAINSа вот куда ведет main... непонятно уже.
Но файла exim4.conf - вообще нет. я так понял его заменили на exim4.conf.template
или его можно разбить на маленькие файлы запиханые в под директории /exim4/conf.d/..еще вопрос по моему пониманию:
правильно ли рассуждаю:
указываем local_domains после чего при проходе маршрутов при получении письма, оно доходит до алиасов, там если доменная часть адреса совпадает с local_domanis, то exim парсит aliases в поисках "локальной части"(что до символа @), когда находит - заменяет адрес на нужный мне локальная_часть@локальный_домен; после чего :
driver = redirect
то есть запускает письмо заново с самого начала и уже отправляется на мой локальный серв exchenge2007.Все ли верно говорю? (просьба поправить если есть неверности)
и если я верно говорю, то локальный_домен не должен входить в local_domains, или всеравно?
> правильно ли рассуждаю:
> указываем local_domains после чего при проходе маршрутов при получении письма, оно доходит
> до алиасов, там если доменная часть адреса совпадает с local_domanis, то
> exim парсит aliases в поисках "локальной части"(что до символа @), когдаЭто зависит от условия в роутере
> находит - заменяет адрес на нужный мне локальная_часть@локальный_домен; после чего :
> driver = redirect
> то есть запускает письмо заново с самого начала и уже отправляется на
> мой локальный серв exchenge2007.Отправляет в следующий роутер при совпадении доменных частей и в новый процесс, если другой домен. Если не указано явно какой роутер, то следующий по списку, как есть.
> Все ли верно говорю? (просьба поправить если есть неверности)
Почти да, если пренебречь нюансами.
> и если я верно говорю, то локальный_домен не должен входить в local_domains,
> или всеравно?Если не указано явно, роутер будет срабатывать для любого домена, то есть local_domains=*
если ваш почтовик обслуживает много доменов, для каждого из них можно написать свои роутеры и, также, использовать универсальные.
Проверить логику, как сработают роутеры: exim -bt user@domain
((( нифига не понятно, говоришь что я пропускаю нюансы, дак они ж самые важные...... (((>> правильно ли рассуждаю:
>> указываем local_domains после чего при проходе маршрутов при получении письма, оно доходит
>> до алиасов, там если доменная часть адреса совпадает с local_domanis, то
>> exim парсит aliases в поисках "локальной части"(что до символа @), когда
>Это зависит от условия в роутереот условий в каком роутере? что в них и где можно прописать?
>Отправляет в следующий роутер при совпадении доменных частей и в новый процесс, если другой домен. Если не указано явно какой роутер, то следующий по списку, как есть.
там жеж написано redirect что поидее свидетельствует о начале цепочки заново...
если нет, то а как и где можно указать явный роутер для локального домена?Очень буду признателен за разьяснения...
> Проверить логику, как сработают роутеры: exim -bt user@domainСПАСИБО!!! Именно этой команды мне по жизни не хватало для отладки косяков в настройках эксима!!! Спасибо!!!
> Прочел, пытаюсь применить...Не читайте всякую хрень, особенно, если она не относится к делу.
В вашем случае нужно настроить блок рерайта в конфиге экзима.
begin rewrite
*@domain.com $local_part@dom.local Ehhttp://www.exim.org/exim-html-current/doc/html/spec_html/ch-...
>> Прочел, пытаюсь применить...
> Не читайте всякую хрень, особенно, если она не относится к делу.
> В вашем случае нужно настроить блок рерайта в конфиге экзима.Класс, пасиб за идею.
Но мне ж нужно чтоб письма по адресам приходили только тем, что в Алиасах или другом(любом) файле. Как бы это сделать в связке с rewrite?
> Но мне ж нужно чтоб письма по адресам приходили только тем, что
> в Алиасах или другом(любом) файле. Как бы это сделать в связке
> с rewrite?Раздел 31.11 подробно описывает реализацию подобного:
begin rewrite
*@domain.com ${lookup{$1}lsearch{/path/to/the/dom1.aliases}{$1}fail}@dom1.local Eh
*@domain.com ${lookup{$1}lsearch{/path/to/the/dom2.aliases}{$1}fail}@dom2.local EhФайлы /path/to/the/domХ.aliases выглядят так:
### dom1.local-------
vasya
petya
kolya
###### dom2.local
masha
nadya
sveta
###Если приходит письмо на адрес блаблабла@domain.com, рерайт делает попытку выполнить замену. Для этого он от исходного адреса отрезает все до собаки в переменную $1, которую затем пытается найти в файле /path/to/the/domX.aliases. Если строка блаблабла нашлась, она подставляется в локалпарт сгенеренного адреса. Если не нашлась, опция fail говорит рерайту, что это правило нужно пропустить и перейти к следующему.
и опять приходим к вопросу "как парсить файл и найти нужную строку" (((
в ссылке - dbm используется... но у меня же просто файл, не база...
> и опять приходим к вопросу "как парсить файл и найти нужную строку" (((
> в ссылке - dbm используется... но у меня же просто файл, не база...Уточняю: правильно вопрос звучит так:
> Как читать разделы "9. File and database lookups" и "11. String expansions" документации экзима?