RoundcubeとAutheliaで2要素認証を試してみた

メールサーバの2要素認証について調べていたら自身で運用しているメールサーバでも 少し頑張れば動かせそうだったので試してみました。

現在のメールサーバの構成

現構成 freenginxのmail_moduleによるMail Proxyを設定しており、そこでTLSを終端している。 認証には自前のphpスクリプトを介してLDAP認証をし、LDAPからProxy先のdovecotの情報を得ている。 dovecotでは認証していない。 また、メールの送信については、Proxy先がpostfixになりxclientを使用して同じく認証はしていない。

2要素認証設定後のメールサーバの構成

2要素認証構成 2要素認証のためにAutheliaを導入し、認可やトークン発行周りの処理を一任した。図には書いてないがバックエンドはMySQLを選択。 自前のphpスクリプトは10年前に作成したもの。今回geminiにXOAUTH2対応とついでにリファクタリングをしてもらった。 なお、freenginxではなくnginxのmail_moduleはxoauth2には対応していない KeycloakではなくAutheliaを選択したのは、サーバのメモリ節約。Javaを動かしたくなかった。

ログイン画面遷移

Roundcubeのログイン画面 test1 Autheliaのログイン画面 test2 Autheliaの2要素認証画面(初回) test3 Autheliaの2要素認証画面 test4

メモ

  • Roundcube
    • この構成ではpasswordプラグインでのパスワード変更は不可
    • managesieveプラグインも認証できず動作しないが、少しソースを修正することで動作を確認した
  • 試してみて
    • 自分の使い方で実用性があるかというと微妙だが、今まで何となく使用する側だった2要素認証の仕組みを理解できたのはよかった。
    • ClientにThunderbirdが利用できないかと試行錯誤をしていたが、任意のOAuth2クライアントに対応していないことがわかり諦めた。