web-dev-qa-db-ja.com

Roundcubeおよび一部の特別なユーザーのみの外部サービスとしてIMAPを許可します。設定方法は?

Dovecotで特別なpassdbクエリを設定して、IMAPアクセスを特定のユーザーに制限するのは簡単です。 dovecot wikiのこのドキュメントを参照してください

しかし、RoundcubeのようなWebメールを使用していて、他のすべてのユーザーに使用を許可したい場合(上記の方法でIMAPの使用を許可したユーザーだけでなく)、このアプローチは失敗します。

実用的な構成のアイデアは何でしょうか?

ウェブメールはdovecotと同じサーバー上にあります。多分特別に細工されたSQL-passdb-statementとすべてのウェブメールのローカルアドレスへのallow_nets追加フィールド-ユーザーのみ?または、Roundcube自体の特別なオプションですか?

1
initall

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. または誰がウェブメールを使用するか(リモートIP ==ウェブメールIP)
1
initall

allow_netsフィールドに基づいて、MySQLクエリで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ステートメントを実行できます。

CASEステートメントを調べてください。私のものは実際には機能しないと確信していますが、アイデアはしっかりしているはずです。

1
NickW