Dovecotで特別なpassdbクエリを設定して、IMAPアクセスを特定のユーザーに制限するのは簡単です。 dovecot wikiのこのドキュメントを参照してください 。
しかし、RoundcubeのようなWebメールを使用していて、他のすべてのユーザーに使用を許可したい場合(上記の方法でIMAPの使用を許可したユーザーだけでなく)、このアプローチは失敗します。
実用的な構成のアイデアは何でしょうか?
ウェブメールはdovecotと同じサーバー上にあります。多分特別に細工されたSQL-passdb-statementとすべてのウェブメールのローカルアドレスへのallow_nets追加フィールド-ユーザーのみ?または、Roundcube自体の特別なオプションですか?
Extra_fieldsオーバーヘッドに入らず、代わりに単純な変数 '%r'を使用する方法を見つけました。リモートIPに解決されるので、次のようなものを使用できます
WHERE active = '1'\
AND ('%s' = 'pop3' OR (imap_allowed = true OR '%r' = '1.2.3.4'))
デフォルトのケースpop3が最初に( '%s'を介して)テストされ、次に
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ステートメントを調べてください。私のものは実際には機能しないと確信していますが、アイデアはしっかりしているはずです。