Ситуация такая. Есть машина с freebsd, которая зовется domain1.. На ней подняли sendmail,
принимающий почту для domain2. Причем domain2 прописан как CNAME domain1.
(доступа к ДНС я, к сожалению, не имею.) Возникла следующая проблема.
Я отправляю тестовое письмо на web-support@domain2, которое принимается sendmail
и пересылается на другой почтовый ящик(с помощью aliases). Так вот при получении этого письма написано,
что оно было отправлено для web-support@domain1. Что мне совсем не нужно :)Уже перечитал гору документации по sendmail. В sendmail.cf явно указан домен domain2
"Djdomain2", более того, указана опция MASQUERADE_AS domain2. Даже изменил hostname машины
на domain2!
Приходит письмо. Читаю заголовки..везде указан domain2, domain2...и в самом конце
строка TO:<web-support@domain1>Что с этим можно сделать? Может проблема связана с dns?
Подскажите пожалуйста, а то совсем замучался :(
>Ситуация такая. Есть машина с freebsd, которая зовется domain1.. На ней подняли
>sendmail,
>принимающий почту для domain2. Причем domain2 прописан как CNAME domain1.
>(доступа к ДНС я, к сожалению, не имею.) Возникла следующая проблема.
>Я отправляю тестовое письмо на web-support@domain2, которое принимается sendmail
>и пересылается на другой почтовый ящик(с помощью aliases). Так вот при получении
>этого письма написано,
>что оно было отправлено для web-support@domain1. Что мне совсем не нужно :)
>
>
>Уже перечитал гору документации по sendmail. В sendmail.cf явно указан домен domain2
>
>"Djdomain2", более того, указана опция MASQUERADE_AS domain2. Даже изменил hostname машины
>на domain2!
>Приходит письмо. Читаю заголовки..везде указан domain2, domain2...и в самом конце
>строка TO:<web-support@domain1>
>
>Что с этим можно сделать? Может проблема связана с dns?
>Подскажите пожалуйста, а то совсем замучался :(не алиасом делай.
'sendmail -bt' - для отладки хорошо помогает
>Я отправляю тестовое письмо на web-support@domain2, которое принимается sendmail
>и пересылается на другой почтовый ящик(с помощью aliases). Так вот при получении
>этого письма написано,
>что оно было отправлено для web-support@domain1. Что мне совсем не нужно :)Процитируй строку в aliases которая перенаправляет письма для web-support@domain2.
>Процитируй строку в aliases которая перенаправляет письма для >web-support@domain2.перенаправляет она вообще не на web-support@domain2.
должно быть так:
vasya@mail.ru ----> web_support@domain2 ----> web_support@blabla.ru
(отправляет) (принял, пересылает)
Но проблема в том, что когда domain2 переcылает на blabla.ru, там оно оказывается в виде TO:<web_support@domain1>, а должен быть
TO:<web_support@domain2> !!!/etc/aliases
root: web-support@blabla.ru
web-support: root
>должно быть так:
>
>vasya@mail.ru ----> web_support@domain2 ----> web_support@blabla.ru
> (отправляет)
> (принял, пересылает)
>
>
>Но проблема в том, что когда domain2 переcылает на blabla.ru, там оно оказывается в виде TO:<web_support@domain1>, а должен быть
>TO:<web_support@domain2> !!!
>
>/etc/aliases
>
>root: web-support@blabla.ru
>web-support: root
>Странно. Давай посмотрим где именно переписывается адрес.
Выполни команду:echo "3,0 <web_support@domain2>" | sendmail -bt -d21.4
Она покажет все преобразования адреса получателя <web_support@domain2>.
Процитируй листинг.
а с чего он должен выбирать cname как основной адрес?
хочешь переписывать заголовки, напрявляй в скрипт с formail
или поменяй A с CNAME местами...
настолько ли критична задача?
>а с чего он должен выбирать cname как основной адрес?
>хочешь переписывать заголовки, напрявляй в скрипт с formail
>или поменяй A с CNAME местами...
>настолько ли критична задача?
Так дело в том, что я не имею доступ к dns.
А что за скрипт такой? :)echo "3,0 <web-support@domain2.ru>" | sendmail -bt -d21.4
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> canonify input: < web-support @ domain2 . ru >
rewritten as: < web-support @ domain2 . ru > < @ >
rewritten as: < web-support @ domain2 . ru >
rewritten as: < < web-support @ domain2 . ru > >
rewritten as: < web-support @ domain2 . ru > >
rewritten as: < web-support @ domain2 . ru >
rewritten as: web-support @ domain2 . ru
rewritten as: web-support < @ domain2 . ru >
Canonify2 input: web-support < @ domain2 . ru >
rewrite: RHS $&{daemon_flags} => "(NULL)"
rewritten as: $| web-support < @ domain2 . ru >
rewritten as: web-support < @ domain1 . ru . >
Canonify2 returns: web-support < @ domain1 . ru . >
rewritten as: web-support < @ domain1 . ru . >
canonify returns: web-support < @ domain1 . ru . >
parse input: web-support < @ domain1 . ru . >
Parse0 input: web-support < @ domain1 . ru . >
rewritten as: < > web-support < @ domain1 . ru . >
rewritten as: web-support < @ domain1 . ru . >
rewritten as: web-support < @ domain1 . ru . >
Parse0 returns: web-support < @ domain1 . ru . >
rewritten as: web-support < @ domain1 . ru . >
ParseLocal input: web-support < @ domain1 . ru . >
ParseLocal returns: web-support < @ domain1 . ru . >
rewritten as: web-support < @ domain1 . ru . >
Parse1 input: web-support < @ domain1 . ru . >
rewritten as: < ! > web-support < @ domain1 . ru . >
rewritten as: < @ > web-support < @ domain1 . ru . >
rewritten as: < @ > web-support < @ domain1 . ru . >
rewritten as: web-support < @ domain1 . ru . >
rewritten as: $# local $: web-support
Parse1 returns: $# local $: web-support
rewritten as: $# local $: web-support
parse returns: $# local $: web-support
>Canonify2 input: web-support < @ domain2 . ru >
>rewrite: RHS $&{daemon_flags} => "(NULL)"
>rewritten as: $| web-support < @ domain2 . ru >
>rewritten as: web-support < @ domain1 . ru . >
>Canonify2 returns: web-support < @ domain1 . ru . >Наверное проще всего будет немного поправить sendmail.cf. Предлагаю сделать класс содержащий имена доменов которые не будут канонифицироваться.
C{nocanonify}domain2 . ru
или
F{nocanonify}/etc/mail/nocanonify
где /etc/mail/nocanonify - текстовый файл содержащий по одному имени домена на каждой строке.
Затем в наборе правил Canonify2 надо найти строки (возможно у тебя они будут немного отличаться):
# hostnames ending in class P are always canonical
R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
и заменить их на:
# hostnames ending in class P are always canonical
R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
R$* < @ $* $={nocanonify} > $* $: $1 < @ $2 $3 . > $4На ВПС напомню, что левая и правая часть правил должны быть разделены табуляцией.
Огромное спасибо за помощь! Все заработало как надо!
:)
Маленькая поправка. Правило
R$* < @ $* $={nocanonify} > $* $: $1 < @ $2 $3 . > $4
лучше переписать так
R$* < @ $={nocanonify} > $* $: $1 < @ $2 . > $3
Чтобы субдомены не попадали под условие.