В настоящее время у нас работает курьерская служба, которая позволяет нам устанавливать различные SQL-запросы userdb для IMAP и POP3. Нам это нужно, потому что мы не хотим предоставлять всем пользователям доступ по протоколу IMAP, логический столбец в userdb разрешает доступ по протоколу IMAP, если он установлен.
По соображениям производительности и стабильности в настоящее время мы переходим на dovecot. Я пока не нашел способа установить разные SQL-запросы на основе доступа POP3 или IMAP или передать метод доступа как переменную в SQL-запрос. Оба способа подойдут.
Вот соответствующая конфигурация mysql от курьера:
MYSQL_SELECT_CLAUSE SELECT \
username,password_enc,password,uid,gid,homedir,maildir,'',CONCAT(\
IF(isimap=1 OR '$(service)'='webmail','disableimap=0,','disableimap=1,'),\
'disablepop3=0,disablewebmail=0'\
)\
FROM mail_users WHERE username = '$(local_part)@$(domain)'
Переменная службы берется из файла конфигурации демона. В голубятне есть что-то подобное?
Вы можете использовать %s
переменная, чтобы проверить, какая услуга запрашивается. Видеть http://wiki2.dovecot.org/Variables .
Что-то вроде этого может сработать для вас в качестве SQL-запроса:
SELECT
'%u' AS username, '%d' AS domain,
password, uid, gid, homedir AS home
FROM mail_users
WHERE
CONCAT('%u', '@', '%d') = username'' AND
(isimap=1 OR '%s' <> 'imap')
-Фил