URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 55906
[ Назад ]

Исходное сообщение
"Проблема с доменом отправителя в sendmail."

Отправлено RomEn , 25-Апр-05 18:57 
Ситуация такая. Есть машина с 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."
Отправлено denn , 25-Апр-05 21:59 
>Ситуация такая. Есть машина с 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."
Отправлено sproot , 26-Апр-05 04:44 
'sendmail -bt' - для отладки хорошо помогает

"Проблема с доменом отправителя в sendmail."
Отправлено _DVS_ , 26-Апр-05 13:47 
>Я отправляю тестовое письмо на web-support@domain2, которое принимается sendmail
>и пересылается на другой почтовый ящик(с помощью aliases). Так вот при получении
>этого письма написано,
>что оно было отправлено для web-support@domain1. Что мне совсем не нужно :)

Процитируй строку в aliases которая перенаправляет письма для web-support@domain2.


"Проблема с доменом отправителя в sendmail."
Отправлено RomEn , 26-Апр-05 19:06 
>Процитируй строку в 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
                  


"Проблема с доменом отправителя в sendmail."
Отправлено _DVS_ , 27-Апр-05 09:51 
>должно быть так:
>
>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>.
Процитируй листинг.


"Проблема с доменом отправителя в sendmail."
Отправлено denn , 27-Апр-05 11:17 
а с чего он должен выбирать cname как основной адрес?
хочешь переписывать заголовки, напрявляй в скрипт с formail
или поменяй A с CNAME местами...
настолько ли критична задача?

"Проблема с доменом отправителя в sendmail."
Отправлено RomEn , 27-Апр-05 16:25 
>а с чего он должен выбирать 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


"Проблема с доменом отправителя в sendmail."
Отправлено _DVS_ , 28-Апр-05 12:29 
>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

На ВПС напомню, что левая и правая часть правил должны быть разделены табуляцией.


"Проблема с доменом отправителя в sendmail."
Отправлено RomEn , 28-Апр-05 17:47 
Огромное спасибо за помощь! Все заработало как надо!
:)

"Проблема с доменом отправителя в sendmail."
Отправлено _DVS_ , 29-Апр-05 09:09 
Маленькая поправка. Правило
R$* < @ $* $={nocanonify} > $*     $: $1 < @ $2 $3 . > $4
лучше переписать так
R$* < @ $={nocanonify} > $*     $: $1 < @ $2 . > $3
Чтобы субдомены не попадали под условие.