Назад | Перейти на главную страницу

Аутентификация Dovecot SQL: как различать доступ IMAP и POP3?

В настоящее время у нас работает курьерская служба, которая позволяет нам устанавливать различные 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')

-Фил