WebブラウザをメーラーにするRoundcube というソフトウェアは随分と有名になりました。メールサーバーが IMAP で接続可能ならば本ソフトウェアを入れてブラウザをメーラーとして使えるようになるので、自宅メールサーバーなどにはいれておきたい人も多いでしょう。
コンテナで起動する
Roundcube は zip でプログラム一式が公開されており、導入手順にしたがって入れれば特に問題にもならないでしょう。しかし、より一層簡単に使うために、また、バージョンアップも容易にしたいと考えて、Docker コンテナによる起動方法にチャレンジしました。
まず以下のような docker-compose.yml ファイルを作成します。メールサーバーのアドレスについては各自適切なアドレスを使用して下さい。これらのアドレスのプレフィックスですが意味合いとしては次の通りです。
- tls:// STARTTLS による暗号化を使用する
- ssl:// SSL/TLS による暗号化を使用する
version: '2'
services:
roundcubemail:
image: roundcube/roundcubemail:1.5.x-apache
container_name: roundcubemail
# restart: unless-stopped
volumes:
- ./www:/var/www/html
- ./db/sqlite:/var/roundcube/db
ports:
- 9002:80
environment:
- ROUNDCUBEMAIL_DB_TYPE=sqlite
- ROUNDCUBEMAIL_SKIN=elastic
- ROUNDCUBEMAIL_DEFAULT_HOST=tls://192.168.0.1:143
- ROUNDCUBEMAIL_SMTP_SERVER=tls://192.168.0.1:587
起動
設定が出来たら、いつものコマンドで起動します。初めてのときには、”-d” オプションを付けずに起動して状態を観察するのが良いでしょう。
$ docker-compose up -d
ログインに失敗する場合
ログインに失敗する場合、いくつかの要素が考えられますが、コンソールに出力される情報を増やすところから始めて原因を探りましょう。
そのためにまず volumes に追加を行い、設定ファイルを追加して読み込ませるようにします。
volumes: - ./www:/var/www/html - ./db/sqlite:/var/roundcube/db - ./config/:/var/roundcube/config/
そして、 config ディレクトリ以下には、設定ファイル(*.php) を用意します。ここでは以下の内容とします(config.debug.inc.php ファイル)。
<?php $config['log_logins'] = true; $config['imap_debug'] = true;
この設定を適用したら再びコンテナを起動し直して実行し、どのようなログが出力されたかをみていきましょう。
証明書についての問題
共用サーバーや、自己証明書による運用の場合、そのままでは接続に失敗してしまいます。そこで、証明書のベリファイをしないように設定を変更することが必要です。
先ほどのファイルに以下の内容を追記します。
$config['imap_conn_options'] = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, ], 'tls' => [ 'verify_peer' => false, 'verify_peer_name' => false, ] ]; $config['smtp_conn_options'] = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, ], 'tls' => [ 'verify_peer' => false, 'verify_peer_name' => false, ] ];
意外とこの設定を記載している人が少ないようで、情報も少なめでした。
コメント