Dovecot SQL身份validation:如何区分IMAP和POP3访问?

目前我们正在运行快递,这使我们能够为IMAP和POP3设置不同的SQL userdb查询。 我们需要这个,因为我们不想给所有用户IMAP访问权限,userdb中的布尔列允许设置IMAP访问。

出于性能和稳定性的原因,我们目前正在迁移到鸽舍。 我发现还没有办法设置不同的基于POP3或IMAP访问的SQL查询 – 或者将访问方法作为variables传递给SQL查询。 两种方式都可以。

这里是从信使相关的MySQLconfiguration:

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)' 

服务variables来自守护程序configuration文件。 在鸽舍里有类似的东西吗?

您可以使用%svariables来检查正在请求的服务。 见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') 

-Phil