允许 Roundcube 使用 IMAP,并且仅对某些特殊用户提供外部服务。如何配置?

允许 Roundcube 使用 IMAP,并且仅对某些特殊用户提供外部服务。如何配置?

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

但是,当我使用像 Roundcube 这样的网络邮件程序并希望允许其他每个用户使用它(而不仅仅是我按照上述方法允许使用 IMAP 的用户)时,这种方法会失败。

可行的配置想法是什么?

Webmailer 与 dovecot 位于同一服务器上。也许是一个特别制作的 SQL-passdb 语句以及一个 allow_nets 额外字段,用于所有仅限 webmailer 用户的本地地址?或者是 Roundcube 本身的一个特殊选项?

答案1

您可以根据字段在 MySQL 查询中执行某种 CASE 语句allow_nets,例如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 语句,我很确定我的实际上不起作用,但这个想法应该是可靠的。

答案2

我找到了一种方法,可以不进入 extra_fields 开销,而是使用一个简单的变量“%r”。它解析为远程 ip,所以我可以使用类似

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

首先测试默认情况 pop3(通过 '%s'),然后

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

相关内容