Страница 1 из 1
exim: не работает rewrite
Добавлено: 2009-08-25 14:59:59
fatrogue
Ситуация следующая:
есть web-сервер, который использует почтовый сервер exim как релей для рассылки уведомлений и проч. проблема в том, что он умеет подставлять в качестве отправителя тот же почтовый адрес, что и в получателе. задача проста - во всех письмах от этого сервера заменять отправителя на заранее определенного (например,
www@mydomen.ru)
в конфиге exim-а в секции rewrite :
Код: Выделить всё
\N^(.*)$\N "${if eq{$sender_host_address}{192.168.0.99}{www@mydomen.ru}fail}" SFfrs
не работает. второй день уже туплю, что не так?
Re: exim: не работает rewrite
Добавлено: 2009-08-26 10:38:14
Cancer
Код: Выделить всё
######################################################################
# REWRITE CONFIGURATION #
######################################################################
begin rewrite
# Подмена заголовка @zern.domain.ru на @domain.ru
*@zern.domain.ru $local_part@domain.ru Eh
# Меняем пох_кто@test.domain.local на test@domain.ru
*@test.domain.local test@domain.ru Eh
#########################################
# Флаги #
#########################################
# E ----> все поля конверта #
# F ----> поле "From" в конверте #
# T ----> поле "To" в конверте #
# b ----> заголовок "Bcc:" #
# c ----> заголовок "Cc:" #
# f ----> заголовок "From:" #
# h ----> все заголовки #
# r ----> заголовок "Reply-To:" #
# s ----> заголовок "Sender:" #
# t ----> заголовок "To:" #
#########################################
Re: exim: не работает rewrite
Добавлено: 2009-08-26 10:52:49
fatrogue
Cancer
Это я все видел и доку читал, код который я написал как раз и находится в секции rewrite. мне не просто нужно подменить какого-то конкретного отправителя, а любого, который пришел с определенного хоста...
поэтому пытаюсь прикрутить условие, но оно не срабатывает...как проверить, заполнена ли переменная $sender_host_address на момент rewrite или нет? и если заполнена, то чем?
если посмотреть сюда
http://www.lissyara.su/?id=1231 , то я пытался взять за основу это:
Код: Выделить всё
Например, для применения правил перезаписи лишь для сообщений, который созданы вне локального хоста:
*@*.hitch.fict.example "${if !eq {$sender_host_address}{}\
{$1@hitch.fict.example}fail}"
Re: exim: не работает rewrite
Добавлено: 2009-08-26 11:08:32
Cancer
Код: Выделить всё
"${if eq{$sender_address_domain}{192.168.0.99}{*@domain.ru}fail}" www@domain.ru тут_ключи
192.168.0.99 надеюсь это у тебя сендер_адрес_нэйм
Re: exim: не работает rewrite
Добавлено: 2009-08-26 11:28:32
fatrogue
Cancer писал(а):Код: Выделить всё
"${if eq{$sender_address_domain}{192.168.0.99}{*@domain.ru}fail}" www@domain.ru тут_ключи
192.168.0.99 надеюсь это у тебя сендер_адрес_нэйм
192.168.0.99 - это ip сервера. хотелось бы его не по имени или домену, а именно по ip ловить...
Re: exim: не работает rewrite
Добавлено: 2009-08-26 11:32:54
Cancer
Блин не помню но,
по идее должно отработать и по IP
Re: exim: не работает rewrite
Добавлено: 2009-08-26 11:41:30
fatrogue
Cancer писал(а):Блин не помню но,
по идее должно отработать и по IP
не работает. и не должно, потому что $sender_address_domain - Доменная часть “$sender_address”. то есть это domain.ru, если в отправителе указан
user@domain.ru. что самое странное, если запустить exim -d -bhc 192.168.0.99, то по логам - все перезаписывается как надо с помощью моей конструкции.
а в реальной эксплуатации - нет.
Re: exim: не работает rewrite
Добавлено: 2009-08-26 13:29:14
fatrogue
перезапись заработала как надо.
что было: так как хост был в разрешенных релеях, то он освобождался от всех проверок и наверно поэтому переменная $sender_host_address оставалась пустой.
что сделал: добавил перед accept для релеев
Код: Выделить всё
warn condition = ${if eq{$sender_host_address}{192.168.0.99}{yes}{no}}
hosts = +relay_from_hosts
logwrite = I did it!
exim: не работает rewrite
Добавлено: 2019-02-18 9:19:57
Agronom
fatrogue писал(а): ↑2009-08-26 13:29:14
что было: так как хост был в разрешенных релеях, то он освобождался от всех проверок и наверно поэтому переменная
у меня такая же необходимость и такая же ситуация, только нужно чтобы домен менялся с domain.ru на newdomain.ru, если письмо пришло с 192.168.22.15. Я так понимаю, сама строка реврайта будет выглядеть так:
Код: Выделить всё
"${if eq{$sender_address_domain}{192.168.22.15}{*@domain.ru}fail}" $1@newdomain.ru Ttbc
и строки из поста выше:
Код: Выделить всё
warn condition = ${if eq{$sender_host_address}{192.168.0.99}{yes}{no}}
hosts = +relay_from_hosts
logwrite = I did it!
вставил до строки:
но домен все равно не изменяется, в логах видно, что письмо пришло с айпишника 192.168.22.15, но дальше уходит в виде
user@domain.ru, а не
user@newdomain.ru. ЧЯНТД?
exim: не работает rewrite
Добавлено: 2019-02-18 11:59:50
Agronom
вопрос закрыт, удалил из relay_from_hosts и чуть изменил строку реврайта
Код: Выделить всё
"${if eq{$sender_address_domain}{192.168.22.15}{*@domain.ru}fail}" $1@newdomain.ru Ttbc
на
Код: Выделить всё
"${if eq{$sender_host_address}{192.168.22.15}{*@domain.ru}fail}" $1@newdomain.ru Ttbc
и все заработало