允许将IMAP用于Roundcube,并仅作为一些特殊用户的外部服务。 如何configuration?

dovecot中设置一个特殊的passdb查询很容易限制对某些用户的IMAP访问,例如, 请参阅dovecot wiki上的文档 。

但是,当我使用像Roundcube这样的webmailer,并希望允许其他用户使用它(而不仅仅是允许上面的每个方法使用IMAP的用户),这种方法就失败了。

什么是一个工作configuration的想法?

webmailer与dovecot在同一台服务器上。 可能是一个特殊的SQL-passdb-statement和一个allow_nets额外字段的所有webmailer用户的本地地址? 或在Roundcube本身的特殊选项?

你可以在你的MySQL查询中根据allow_nets字段来做一些CASE语句,比如SELECT password CASE WHEN allow_nets = '127.0.0.1' OR <whatever you're using> THEN allow_imap = 'true' ELSE allow_imap = 'false' END FROM users WHERE userid = '%u' and active='1'

看看CASE声明,我很确定我的实际上不会工作,但这个想法应该是坚实的。

我find了一种不进入extra_fields开销的方法,而是使用一个简单的variables'%r'。 它parsing到远程IP,所以我可以使用类似的东西

 WHERE active = '1'\ AND ('%s' = 'pop3' OR (imap_allowed = true OR '%r' = '1.2.3.4')) 

然后,首先testing默认情况下的pop3(通过'%s')

  1. 谁总是被允许IMAP? (表中的imap_allowed列)
  2. 或谁使用webmailer(远程ip == webmailer ip)