Система: 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 устанавливается через / и т.д. / по умолчанию / голубятня. Я попытался установить Переменная конфигурации 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}