Есть несколько плагинов Roundcube, которые обеспечивают двухфакторную аутентификацию. Однако проблема, которую я сейчас вижу, заключается в том, что я все еще могу просто войти в систему через IMAP / SMTP, без 2-FA (очевидно). 2-FA здесь (по сути) бесполезен.
Я подумал, что могу решить эту проблему, введя пароли для конкретных приложений и сделав что-то подобное, как Google делает со своим 2-FA и приложениями, которые его не поддерживают.
Теперь я подумал, что могу автоматически сгенерировать пароль для конкретного приложения для Roundcube для каждого пользователя, который отличается от того, который используется для входа в веб-интерфейс Roundcube. В результате у пользователя все еще может быть свой собственный пароль + 2-FA для входа в Roundcube, но тот же пароль нельзя использовать напрямую для IMAP / SMTP. Однако я не могу найти способ настроить Roundcube для использования пароля IMAP, отличного от того, который используется для входа в веб-интерфейс.
И Roundcube, и Dovecot работают на одной машине.
Я что-то упустил? Разумно ли то, что я делаю? Это похоже на проблему, которую можно решить более элегантно, чем то, что я пытаюсь сделать, так что я чего-то там упускаю? Все, что мне действительно нужно, это аутентификация 2-FA везде, где это возможно, и пароли для конкретных приложений везде.
Спасибо!
Попробовав еще немного, я нашел два разумных решения / обходных пути, по крайней мере, для этого простого случая.
Вариант 1: использование allow_nets. Dovecot позволяет passdb возвращать различные дополнительные поля, включая 'allow_nets' (http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/AllowNets). Если установить для параметра allow_nets значение 127.0.0.1 для пароля, который будет использоваться Roundcube, любые попытки входа в систему из других источников не удастся. Если Roundcube находится на другом компьютере, очевидно, что IP-адрес необходимо настроить. Проблемы с этим подходом заключаются в нестатических IP-адресах, и если у пользователей есть другие способы входа, отличные от 2-FA, например, прокси, работающий на той же машине, что и Roundcube.
Вариант 2. Использование CheckPassword для написания настраиваемого скрипта аутентификации. Используя драйвер контрольного пароля (http://wiki2.dovecot.org/AuthDatabase/CheckPassword) для passdb позволяет написать собственный сценарий аутентификации. Вы можете проверить IP-адрес клиента или сделать что-то совершенно другое. Возможные проблемы здесь связаны с производительностью, и вам может потребоваться дополнительная настройка для поиска пользователей, так как checkpassword не поддерживает поиск пользователей. Кроме того, остается проблема проверки того, как пользователь на самом деле пытается войти в систему.