Страница 1 из 1

Условная перезапись адресов

Добавлено: 2007-09-06 8:59:54
Магистр
Необходимо наладить перезаписывание заголовка From при условии, если письмо направлено на определенный домен, т.е. кто бы не отправлял письмо оно должно быть доставлено от имени office@work.domain

В доке написано слудующее:

Код: Выделить всё

Перезапись может быть сделана условной, в ряде тестов, путём использования “${if” в элементе раскрытия. Например, для применения правил перезаписи лишь для сообщений, который созданы вне локального хоста:
*@*.hitch.fict.example  "${if !eq {$sender_host_address}{}{$1@hitch.fict.example}fail}"
не совсем понятно что каждый пункт означает... а именно хотелось бы понять как сделать проверку домена получателя и куда вписывать то на что будет производиться замена, и что означает вот это ==> {} ?

Re: Условная перезапись адресов

Добавлено: 2007-09-06 9:05:43
Alex Keda
читай целиком условие

Код: Выделить всё

!eq {$sender_host_address}{}
вопрос непонятен.

Re: Условная перезапись адресов

Добавлено: 2007-09-06 10:08:45
Магистр
что значит "!eq", неравно чтоли?
и как сделать корректно эту проверку: {$recipient = user@partner.domain}
и для чего пустые скобки {} ?

Re: Условная перезапись адресов

Добавлено: 2007-09-06 10:38:07
Alex Keda
если $sender_host_address неэквивалентен пустому
=========
читайте про синтксис exim и ACL в частности.
я докуентацию переводил не для того, чтобы одно и то же объяснять по сто раз.

Re: Условная перезапись адресов

Добавлено: 2007-09-10 18:41:45
Магистр
Замечание справедливое... но я так и не смог найти переменную раскрытия которая отвечает за домен получателя.
Пробовал $resipient $recipients $recipients_damain...
Вот пример того что я хочу сделать, но Exim говорит что не знает переменную $recipients

Код: Выделить всё

*mydomain.ru "${if eq {$recipients}{*@yandex.ru}{office@mydomain.ru}}" f
:roll: подскажите плз, какая должна быть переменная...

Re: Условная перезапись адресов

Добавлено: 2007-09-10 18:44:15
Alex Keda
такой нету.
у письма может быть несколько получателей - это нормальная ситуация.

Re: Условная перезапись адресов

Добавлено: 2007-09-10 19:25:19
Магистр
очень, очень, очень жаль.... а где можно посмотреть список всех переменных, может че подходящее найдется

Re: Условная перезапись адресов

Добавлено: 2007-09-10 19:55:47
Alex Keda
может всё же стоит почитать документацию?!

Re: Условная перезапись адресов

Добавлено: 2007-09-10 23:22:02
Магистр
В документации переменная $recipients есть, и она как раз содержит список получателей сообщения. Только её использование ограниченно, а можно ли переписать адрес во время проверки почты ACL-ом, и может ли Exim проверять ACL-ми исходящую почту?

Re: Условная перезапись адресов

Добавлено: 2007-09-10 23:40:52
Alex Keda
но я так и не смог найти переменную раскрытия которая отвечает за домен получателя.
я в чём-то неполно ответил на вопрос?
=======
всё можно. не имеет значения входящая или исходящая почта, просто нужно всё настроить на нужную тебе схему.

Re: Условная перезапись адресов

Добавлено: 2007-09-11 16:33:04
Магистр
Вот до чего дошло мое пыхтение:

Код: Выделить всё

remote_smtp:
    headers_rewrite = *@mydomain.ru ${if eq{${domain:$recipients}}{yandex.ru}{office@mydomain.ru}} f
    driver = smtp
но при запуске Exim дает ошибку:

Код: Выделить всё

2007-09-11 18:29:11 Exim configuration error in line 450 of /usr/local/etc/exim/configure:
  unknown rewrite flag character 'e' (could be missing quotes round replacement item)
...что еще за круглый элемент замены?

Re: Условная перезапись адресов

Добавлено: 2007-09-11 18:09:04
Alex Keda
круглые скобки.
и условие никогда не србоатает.
ты хоешь полного соответствия полного адреса домену яндекс...
неполучится.
используй match

Re: Условная перезапись адресов

Добавлено: 2007-09-11 20:00:54
Магистр
Понятно... а разве конструкция

Код: Выделить всё

${domain:$recipients}
не возвратит домен получателя?

Re: Условная перезапись адресов

Добавлено: 2007-09-11 20:15:16
Alex Keda
их может быть много.

Re: Условная перезапись адресов

Добавлено: 2007-09-11 20:23:23
Магистр
но ведь должно сработать если получатель один будет...

Re: Условная перезапись адресов

Добавлено: 2007-09-11 20:31:44
Магистр
чет не понял по поводу круглых скобок :(

Re: Условная перезапись адресов

Добавлено: 2007-09-11 21:46:19
Магистр
поставил кавычки и ошибка исчезла, но перезапись не получилась

Код: Выделить всё

remote_smtp:
   headers_rewrite = *@consplus.udm.ru \
   "${if eq {${domain:$recipients}}{yandex.ru}{office@consplus.udm.ru}}" f
   driver = smtp

Re: Условная перезапись адресов

Добавлено: 2007-09-11 22:54:15
Магистр
блин ну опять не нравится

Код: Выделить всё

2007-09-12 00:09:14 1IVB6k-000GzC-SN Expansion of ${if eq {${domain failed while rewriting: "${domain" is not a known operator (or a } is missing in a variable reference)

Re: Условная перезапись адресов

Добавлено: 2007-09-11 23:41:39
Alex Keda
будет, если он будет один...
===
про ошибки - почитайте про синтаксис условий.