EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
fatrogue
- проходил мимо
- Сообщения: 9
- Зарегистрирован: 2009-08-25 14:44:10
Непрочитанное сообщение
fatrogue » 2009-08-25 14:59:59
Ситуация следующая:
есть web-сервер, который использует почтовый сервер exim как релей для рассылки уведомлений и проч. проблема в том, что он умеет подставлять в качестве отправителя тот же почтовый адрес, что и в получателе. задача проста - во всех письмах от этого сервера заменять отправителя на заранее определенного (например,
www@mydomen.ru)
в конфиге exim-а в секции rewrite :
Код: Выделить всё
\N^(.*)$\N "${if eq{$sender_host_address}{192.168.0.99}{www@mydomen.ru}fail}" SFfrs
не работает. второй день уже туплю, что не так?
fatrogue
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
Cancer
- Гл. Кастратор
- Сообщения: 1269
- Зарегистрирован: 2008-03-25 12:21:36
- Откуда: г. Ростов-на-Дону
-
Контактная информация:
Непрочитанное сообщение
Cancer » 2009-08-26 10:38:14
Код: Выделить всё
######################################################################
# 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:" #
#########################################
Cancer
-
fatrogue
- проходил мимо
- Сообщения: 9
- Зарегистрирован: 2009-08-25 14:44:10
Непрочитанное сообщение
fatrogue » 2009-08-26 10:52:49
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}"
fatrogue
-
Cancer
- Гл. Кастратор
- Сообщения: 1269
- Зарегистрирован: 2008-03-25 12:21:36
- Откуда: г. Ростов-на-Дону
-
Контактная информация:
Непрочитанное сообщение
Cancer » 2009-08-26 11:08:32
Код: Выделить всё
"${if eq{$sender_address_domain}{192.168.0.99}{*@domain.ru}fail}" www@domain.ru тут_ключи
192.168.0.99 надеюсь это у тебя сендер_адрес_нэйм
Cancer
-
fatrogue
- проходил мимо
- Сообщения: 9
- Зарегистрирован: 2009-08-25 14:44:10
Непрочитанное сообщение
fatrogue » 2009-08-26 11:28:32
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 ловить...
fatrogue
-
Cancer
- Гл. Кастратор
- Сообщения: 1269
- Зарегистрирован: 2008-03-25 12:21:36
- Откуда: г. Ростов-на-Дону
-
Контактная информация:
Непрочитанное сообщение
Cancer » 2009-08-26 11:32:54
Блин не помню но,
по идее должно отработать и по IP
Cancer
-
fatrogue
- проходил мимо
- Сообщения: 9
- Зарегистрирован: 2009-08-25 14:44:10
Непрочитанное сообщение
fatrogue » 2009-08-26 11:41:30
Cancer писал(а):Блин не помню но,
по идее должно отработать и по IP
не работает. и не должно, потому что $sender_address_domain - Доменная часть “$sender_address”. то есть это domain.ru, если в отправителе указан
user@domain.ru. что самое странное, если запустить exim -d -bhc 192.168.0.99, то по логам - все перезаписывается как надо с помощью моей конструкции.
а в реальной эксплуатации - нет.
fatrogue
-
fatrogue
- проходил мимо
- Сообщения: 9
- Зарегистрирован: 2009-08-25 14:44:10
Непрочитанное сообщение
fatrogue » 2009-08-26 13:29:14
перезапись заработала как надо.
что было: так как хост был в разрешенных релеях, то он освобождался от всех проверок и наверно поэтому переменная $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!
fatrogue
-
Agronom
- ст. сержант
- Сообщения: 305
- Зарегистрирован: 2006-12-11 10:30:13
Непрочитанное сообщение
Agronom » 2019-02-18 9:19:57
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. ЧЯНТД?
Agronom
-
Agronom
- ст. сержант
- Сообщения: 305
- Зарегистрирован: 2006-12-11 10:30:13
Непрочитанное сообщение
Agronom » 2019-02-18 11:59:50
вопрос закрыт, удалил из 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
и все заработало
Agronom