Маскарадинг
MASQUERADE_AS(`doamin.ru')dnl - Заменять на domain.ru
MASQUERADE_DOMAIN_FILE(`/etc/mail/masq_domain')dnl – Файл где хранится
список маскируемых доменов
FEATURE(`allmasquerade')dnl –Распространить маскирование и на получателя
FEATURE(`masquerade_entire_domain')dnl –Подвергать маскарадингу
не только домены, указанные в
MASQUERADE_DOMAIN[_FILE], но
и их поддомены
FEATURE(`masquerade_envelope')dnl - Маскировать не только
адреса в заголовках, но и адреса
на конвертах
FEATURE(`limited_masquerade')dnl - Список маскируемых доменов
ограничить , теми доменами, которые
указаны с помощью
MASQUERADE_DOMAIN[_FILE]. Без этой
инструкции, маскироваться будут и
домены, указанные в
/etc/mail/local-host-names
Однако, почему то адрес получателя на конверте не маскарадиться. Все остальные адреса прекрасно маскарадятся. Что бы решить эту проблему, надо посмотреть как и где происходит маскарадинг. Для этого посмотрим .cf файл :
Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP,R=EnvToSMTP/HdrFromSMTP, E=\r\n, L=9,
T=DNS/RFC822/SMTP,
A=TCP $h
Отсюда видно, что за маскарадинг адреса получателя на конверте отвечает
правило EnvToSMTP . Смотрим на него:
SEnvToSMTP
R$+ $: $>PseudoToReal $1 sender/recipient common
R$+ $: $>MasqSMTP $1 qualify unqual'ed names
R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
И смотрим на правило EnvFromSMTP, которое работает:
SEnvFromSMTP
R$+ $: $>PseudoToReal $1 sender/recipient common
R$* :; <@> $@ list:; special case
R$* $: $>MasqSMTP $1 qualify unqual'ed names
R$+ $: $>MasqEnv $1 do masquerading
В конце правила EnvToSMTP отсутствует строка, которая, судя по всему
(в том числе и по комментариям) и запускает маскарадинг:
R$+ $: $>MasqEnv $1 do masquerading
Устанавливаем эту строку в конец правила EnvToSMTP и проверяем
$ /usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
3,EnvToSMTP test@test.domain.ru
Все работает!