Ситуация: один фронтальный сервер, на котором Dovecot работает как прокси IMAP / POP3 / ManageSieve, а в бэкенде - смесь серверов IMAP (Dovecot, Exchange, ...). Passdb Dovecot выполняет поиск в MySQL, который содержит простое сопоставление пользователя и хоста, фактическая аутентификация происходит на внутренних серверах IMAP. Конфигурация более или менее описана здесь: http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/Proxy
Теперь я хотел бы добавить экземпляр Postfix на внешний сервер, который прослушивает порт отправки и аутентифицирует пользователей через SASL, используя локальный сокет UNIX Dovecot. Идея состоит в том, что пользователю нужно запомнить только одно имя хоста, одно имя пользователя и один пароль для всех почтовых служб.
Проблема в том, что Dovecot работает в режиме прокси, что означает, что password_query возвращает NULL в качестве пароля и явно возвращает поле «nopasswd», содержащее «Y». Таким образом, пользователи не могут аутентифицироваться через сокет UNIX.
Думаю, я хочу убедить Dovecot использовать одну passdb для служб imap / pop3 / managesieve и другую для службы auth.
Приведенный ниже фрагмент конфигурации не работает, но он должен проиллюстрировать, чего я хочу достичь:
protocols = imap pop3 sieve
service auth {
passdb sql {
driver = sql
args = /etc/dovecot/mysql-auth-sasl.conf.ext
}
unix_listener /var/spool/postfix/private/auth {
user = postfix
group = postfix
mode = 0666
}
}
# IMAP/POP3/ManageSieve auth against MySQL
passdb sql {
driver = sql
args = /etc/dovecot/mysql-auth-default.conf.ext
}
Пример mysql-auth-sasl.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail password=somethingrandom
password_query = SELECT password AS password FROM users WHERE login = '%u'
Пример mysql-auth-default.conf.ext:
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail password=somethingrandom
password_query = SELECT NULL AS password, 'Y' as nopassword, host, 'Y' AS proxy FROM users WHERE login = '%u'
Есть указатели?