Разрешить IMAP для Roundcube и в качестве внешнего сервиса только для некоторых специальных пользователей. Как настроить?
В dovecot легко настроить специальный запрос passdb, чтобы ограничить доступ IMAP для определенных пользователей, например, см. Эту документацию в вики dovecot.
Но когда я использую веб-почтовую программу, такую как Roundcube, и хочу разрешить использовать ее всем остальным пользователям (а не только пользователям, которым я разрешил использовать IMAP для каждого метода выше), такой подход терпит неудачу.
Какова будет идея рабочей конфигурации?
Вебмалер находится на том же сервере, что и dovecot. Может быть, специальный специально созданный оператор SQL-passdb вместе с дополнительным полем allow_nets для локального адреса для всех пользователей, работающих только с веб-почтовыми программами? Или специальная опция в самом Roundcube?
2 ответа
Я нашел способ не идти на накладные расходы extra_fields и использовать вместо этого простую переменную "%r". Он разрешает удаленный IP, так что я могу использовать что-то вроде
WHERE active = '1'\
AND ('%s' = 'pop3' OR (imap_allowed = true OR '%r' = '1.2.3.4'))
Сначала проверяется случай pop3 по умолчанию (через '%s'), затем
- кому всегда разрешен IMAP? (столбец imap_allowed в таблице)
- или кто использует вебмаилер (удаленный ip == ip вебмаилера)
Вы могли бы сделать своего рода оператор CASE в вашем запросе MySQL, основываясь на 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, я уверен, что мое на самом деле не сработает, но идея должна быть твердой.