Короче, проблема с раскрытием строки в полях типа
command= и
transport_filter= состоит в том, что сначала она разбивается по пробелам на части, а потом обрабатывается.
То есть любое выражение в этих строках либо не должно содержать пробелов, либо быть закавычено.
Таким образом в этом случае условие нужно выносить из строки
transport_filter= либо в переменную, которую уже подставлять, либо уходить на уровень скрипта и там разбираться переданными параметрами.
Примеры.
Вариант 1.
Код: Выделить всё
begin routers
dnslookup:
driver = dnslookup
domains = !+local_domains
transport = ${if условие{что}{чему}{remote_smtp_filter}{remote_smtp}} # критерий добавления disclaimer
ignore_target_hosts = 0.0.0.0 : +relay_from_hosts : +primary_ip
no_more
...
begin transports
...
DISPATH = /etc/exim4/disclaimer/users
DISPLAIN = ${if match{$h_content-type:}{windows-1251}{DISPATH/cp1251/$sender_address.txt}{DISPATH/$sender_address.txt}}
DISHTML = ${if match{$h_content-type:}{windows-1251}{DISPATH/cp1251/$sender_address.html}{DISPATH/$sender_address.html}}
remote_smtp_filter:
driver = smtp
transport_filter = /usr/bin/altermime --multipart-insert --input=- --disclaimer=DISPLAIN --disclaimer-html=DISHTML
remote_smtp:
driver = smtp
...
Вариант 2.
Код: Выделить всё
begin routers
dnslookup:
driver = dnslookup
domains = !+local_domains
transport = ${if условие{что}{чему}{remote_smtp_filter}{remote_smtp}} # критерий добавления disclaimer
ignore_target_hosts = 0.0.0.0 : +relay_from_hosts : +primary_ip
no_more
...
begin transports
...
DISFLAG = ${if match{$h_content-type:}{windows-1251}{win}{utf}}
remote_smtp_filter:
driver = smtp
transport_filter = /path/to/yourshellscript.sh DISFLAG $sender_address
remote_smtp:
driver = smtp
...
# cat /path/to/yourshellscript.sh
#!/bin/sh
dispath="/etc/exim4/disclaimer/users"
if [ $1 == win ]; then
altermime --multipart-insert --input=- --disclaimer=${dispath}/cp1251/$2.txt --disclaimer-html=${dispath}/cp1251/$2.html
else
if [ $1 == utf ]; then
altermime --multipart-insert --input=- --disclaimer=${dispath}/$2.txt --disclaimer-html=${dispath}/$2.html
fi
fi