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