LINUX.ORG.RU

Сообщения Danil

 

Как я насиловал Sendmail, а потом он отдался мне по любви ( посвящается Aleks IZA и qwe )

Форум — General

Прежде всего хочу выразить благодарность за сострадание Aleks IZA и qwe Итак, стояла задача прикрутить Sendmail k Oracle Email Server. Проблема была в том, что по доке Oracle, необходимо использовать адреса почты типа:

username.domain1.domain2.ofcmail@domain1.domain2

Такая форма записи адреса необходима для потому, что Оракловский мейлер ofcmail должен получать на вход адрес получателя в виде:

username.domain1.domain2

а иначе он не понимает. Сначала я написал такое правило в наборе 0:

R $+ @ $+ $#ofcmail $: $1.$2

Все было бы чудесно, мейлер ofcmail получал адрес в нужном формате но с точкой в конце т.е. как полностью определенное имя, чего тупой Oracle Email Server никак не хочет понимать. Чтобы эту точку победить, я втупую заремил обращение к набору правил 96, который эту точку ставит. Некрасиво но действенно. Таким образом все адреса передавались мейлеру ofcmail без точки в конце, а он их запихивал в Oracle Email Server и они там дальше разбредались по нужным доменам. Но тот факт, что вся почта валится на Oracle Email Server меня не устраивал. Мне надо было, чтоб на него шла почта только с доменом ora, а вся остальная уходила нормальным путем с помощью DNS ( т.е. нужны полностью определенные имена). В результате я написал два правила, которые все это реализуют:

R $+<@$*.ora.>$* $#ofcmail $: $1.$2.ora R $+<@$*.ora>$* $#ofcmail $: $1.$2.ora

В результате все работает как и задумывалось.

Danil
()

Так значит спецы по Sendmail сюда не заглядывают

Форум — General

Здравствуйте Гуру! Ведь если Вы это читаете - значит Вы гуру :) Проблема касается прикрутки sendmail к трахнутому Oracle Email Server 5.2 . Значит так - Oracle Email Server требует ( по документации ) чтобы адреса эл.почты были в следующем виде: <username>.<domain>.ofcmail@<domain> Т.е. фактически мейлер должен получать адрес типа <username>.<domain> Тогда он соображает, что такой-то <username> находится в таком-то <domain> и действует соответствующим образом. Это достигается следующим образом: в sendmail.cf (по документации Oracle Email Server ) прописывается мейлер ofcmail в конце файла, а в правиле подстановки адресов номер 0 после строки # resolve fake top level domains by forwarding to other hosts прописывается следующая фигня: R$+.ofcmail $#ofcmail $: $1 Oracle eMail passof Т.е. часть адреса до .ofcmail ( помните <username>.<domain>.ofcmail@<domain> ) становиться первой лексемой и передается как имя ползователя мейлеру ofcmail. Например такой адрес: user.foo.com.ofcmail@foo.com пройдя через правило 0 приобретает вид: user.foo.com и передается как имя получателя мейлеру ofcmail. Ну, а дальше дело техники: Oracle Email Server отрезает все до первой точки и считает, что это имя юзера, а все остальное домен. Если такого юзера на локальной машине нет, то Oracle Email Server ставит это письмо в соответствующую очередь на машину в домене foo.com . Т.е. сколько доменов в Вашей системе - столько и очередей. По одной очереди на один домен. Ну, а чтобы слать почту во внешний мир пишется обычный адрес типа xxx@foo.com и sendmail работает с ним по обычной схеме. Так вот, понятно что адреса типа <username>.<domain>.ofcmail@<domain> использовать совсем не хочется. Этого я добился прописав в правиле 0 вместо предложеной строки: R$+.ofcmail $#ofcmail $: $1 Oracle eMail passof следующую строку: R$+@$+ $#ofcmail $: $1.$2 Oracle eMail passof Т.е. вся почта передается Oracle Email Server с адресом в виде: <username>.<domain> как того и требует Oracle Email Server . При этом надо отключить правило 96, которое вызывается из правила 3 и ставит точку в конце адреса, чтобы получилось полностью определенное имя, как того требует DNS. Но при этом пропадает возможность слать почту во внешний мир. Вот тут собственно и задается вопрос: Как заставить sendmail передавать мейлеру ofcmail адреса в соответствующем виде только если они относятся к корневому домену, например, ora. А все остальные адреса, не содержащие домен ora, обрабатывал по обычной схеме. Вариант с aliases не подходит - т.к. в этом случае прийдется заносить туда всех юзеров из домена ora, а их несколько тысяч. Мне представляется решение следующим образом: Sendmail, при анализе адреса, если находит домен ora в адресе, то вызывает один набор правил, если же домен ora в адресе не содержится, то вызывается сдандартный набор правил подстановки. Только как это прописать в sendmail.cf?

Благодарю за внимание, мой email: selivanovd@mail.ru

Danil
()

Вопрос для гуру Sendmail ( правила подстановки)

Форум — General

Здравствуйте Гуру! Ведь если Вы это читаете - значит Вы гуру :) Проблема касается прикрутки sendmail к трахнутому Oracle Email Server 5.2 . Значит так - Oracle Email Server требует ( по документации ) чтобы адреса эл.почты были в следующем виде: <username>.<domain>.ofcmail@<domain> Т.е. фактически мейлер должен получать адрес типа <username>.<domain> Тогда он соображает, что такой-то <username> находится в таком-то <domain> и действует соответствующим образом. Это достигается следующим образом: в sendmail.cf (по документации Oracle Email Server ) прописывается мейлер ofcmail в конце файла, а в правиле подстановки адресов номер 0 после строки # resolve fake top level domains by forwarding to other hosts прописывается следующая фигня: R$+.ofcmail $#ofcmail $: $1 Oracle eMail passof Т.е. часть адреса до .ofcmail ( помните <username>.<domain>.ofcmail@<domain> ) становиться первой лексемой и передается как имя ползователя мейлеру ofcmail. Например такой адрес: user.foo.com.ofcmail@foo.com пройдя через правило 0 приобретает вид: user.foo.com и передается как имя получателя мейлеру ofcmail. Ну, а дальше дело техники: Oracle Email Server отрезает все до первой точки и считает, что это имя юзера, а все остальное домен. Если такого юзера на локальной машине нет, то Oracle Email Server ставит это письмо в соответствующую очередь на машину в домене foo.com . Т.е. сколько доменов в Вашей системе - столько и очередей. По одной очереди на один домен. Ну, а чтобы слать почту во внешний мир пишется обычный адрес типа xxx@foo.com и sendmail работает с ним по обычной схеме. Так вот, понятно что адреса типа <username>.<domain>.ofcmail@<domain> использовать совсем не хочется. Этого я добился прописав в правиле 0 вместо предложеной строки: R$+.ofcmail $#ofcmail $: $1 Oracle eMail passof следующую строку: R$+@$+ $#ofcmail $: $1.$2 Oracle eMail passof Т.е. вся почта передается Oracle Email Server с адресом в виде: <username>.<domain> как того и требует Oracle Email Server . При этом надо отключить правило 96, которое вызывается из правила 3 и ставит точку в конце адреса, чтобы получилось полностью определенное имя, как того требует DNS. Но при этом пропадает возможность слать почту во внешний мир. Вот тут собственно и задается вопрос: Как заставить sendmail передавать мейлеру ofcmail адреса в соответствующем виде только если они относятся к корневому домену, например, ora. А все остальные адреса, не содержащие домен ora, обрабатывал по обычной схеме. Вариант с aliases не подходит - т.к. в этом случае прийдется заносить туда всех юзеров из домена ora, а их несколько тысяч. Мне представляется решение следующим образом: Sendmail, при анализе адреса, если находит домен ora в адресе, то вызывает один набор правил, если же домен ora в адресе не содержится, то вызывается сдандартный набор правил подстановки. Только как это прописать в sendmail.cf?

Благодарю за внимание, мой email: selivanovd@mail.ru

Danil
()

RSS подписка на новые темы