Система: Debian Jessie
Я пытаюсь поместить переменную среды в конфигурацию sql, например:
password_query = SELECT userid AS user, crypt AS password, maildir as
userdb_home, 500 as userdb_uid, 500 as userdb_gid FROM local_account
WHERE userid = '%u' and mbox_host = '%{env:CLUSTERNAME}' \
and ( ( imap_aktiv='1' and '%s'='imap' ) or ( pop_aktiv='1' and
'%s'='pop3' ) or ( sieve_aktiv='1' and '%s'='sieve' ) ) \
and aktiv_abruf='1'
Моя переменная
%{env:CLUSTERNAME}
CLUSTERNAME устанавливается через / etc / default / dovecot. Я попытался установить для переменной конфигурации import_environment значение
TZ CLUSTERNAME
но это ничего не изменило.
Когда я выполняю это с помощью попытки входа в систему, я вижу следующее в выводе tcpflow:
SELECT userid AS user, crypt AS password, maildir as userdb_home, 508 as
userdb_uid, 503 as userdb_gid FROM local_account WHERE userid = 'te' and
mbox_host = 'env:CLUSTERNAME}' and ( ( imap_aktiv='1' and 'pop3'='imap'
) or ( pop_aktiv='1' and 'pop3'='pop3' ) or ( sieve_aktiv='1' and
'pop3'='sieve' ) ) and aktiv_abruf='1'
Так
%{env:CLUSTERNAME}
был проанализирован на
env:CLUSTERNAME}
что не то, что документ (http://wiki.dovecot.org/Variables), и кажется, что синтаксический анализатор каким-то образом воспринимает это как короткую переменную (удаляя% + {).
Любые намеки на то, что здесь может происходить / как я могу заставить его работать?
Для справки:
Проблема двоякая:
/ etc / default / dovecot не соблюдается файлом модуля systemd
Расширение% {env: VAR} несколько ошибочно: если getenv (VAR) возвращает NULL, dovecot возвращается к стандартному раскрытию коротких переменных, которое пытается раскрыть% {. Это не удается по очевидным причинам.
Как исправить:
Добавьте параметр среды в файл модуля, например:
Environment=CLUSTERNAME=mail.mydomain.com
Разрешить импорт переменной окружения в dovecot.conf:
import_environment = CLUSTERNAME
Использовать как
%{env:CLUSTERNAME}