2026年7月17日

2026年7月17日

Roundcube のインストール方法|Debian・Ubuntu のパッケージと Apache で設定する手順

Roundcube(ラウンドキューブ)は、ブラウザーから IMAP のメールボックスを読み書きできるオープンソースの Web メールです。Debian と Ubuntu には roundcube パッケージがあり、apt で入れるとデータベースの作成や Apache 用の設定ファイルの配置まで自動で行われます。セキュリティ修正も OS の更新として届くため、手軽に導入して長く運用したい場合に向いています。

この記事では、Debian 13 に入る roundcube パッケージ(2026年11月時点で 1.6.20)を使い、MariaDB と Apache で動かす手順を説明します。Ubuntu でも同じ名前のパッケージで、手順はほぼ同じです(版は Ubuntu のリリースごとに異なります)。公式サイトの配布ファイルを Nginx で動かす方法は、Roundcube で Web メールクライアントを構築する方法にまとめています。

始める前に確認すること

Roundcube はメールを保存する仕組みを持たず、IMAP サーバー(Dovecot など)に接続してメールを表示し、SMTP サーバー(Postfix など)に接続して送信します。先に次の状態になっている必要があります。

  • メールアプリから、IMAP での受信と、SMTP(587番)での認証付き送信ができる。
  • Web メールを公開するホスト名(例: webmail.example.com)の DNS が、このサーバーを向いている。
  • 管理者権限(sudo)でパッケージを入れられる。

メールサーバーがまだ無い場合は、Postfix+Dovecot で IMAP メールサーバーを構築する手順を先に済ませます。

手順 1: データベースと Web サーバーを入れる

Roundcube のパッケージは、インストール中にデータベースを作ります。そのため、先に MariaDB を入れて起動しておきます。Apache と PHP もここで入れます。

sudo apt update
sudo apt install mariadb-server apache2 libapache2-mod-php
sudo systemctl status mariadb --no-pager

MariaDB が active (running) になっていれば次に進みます。

手順 2: roundcube パッケージを入れる

sudo apt install roundcube roundcube-mysql roundcube-plugins
パッケージ 内容
roundcube 本体(roundcube-core を引き込む)
roundcube-mysql MariaDB/MySQL を使うための部品。SQLite なら roundcube-sqlite3、PostgreSQL なら roundcube-pgsql
roundcube-plugins 公式プラグイン(archive、zipdownload、managesieve、password など)

インストールの途中で、dbconfig-common でデータベースを設定するかを聞かれます。「はい」を選ぶと、ローカルの MariaDB に roundcube という名前のデータベースと同名のユーザーが作られ、表も作成されます。ユーザーのパスワードは空欄のままにすると自動で生成されます。

作られたものは次のとおりです。

場所 内容
/etc/roundcube/config.inc.php 自分で編集する設定ファイル
/etc/roundcube/defaults.inc.php 全項目の既定値と説明(編集しない)
/etc/roundcube/debian-db.php データベースの接続情報(自動生成)
/etc/roundcube/apache.conf Apache 用の設定。/etc/apache2/conf-enabled/roundcube.conf から読み込まれる
/var/lib/roundcube/public_html Web に公開するディレクトリ
/var/log/roundcube/ Roundcube のログ(errors.log など)

データベースの作成を飛ばしてしまった場合や、設定をやり直したい場合は、次のコマンドで質問をもう一度表示できます。

sudo dpkg-reconfigure roundcube-core

手順 3: IMAP と SMTP の接続先を設定する

/etc/roundcube/config.inc.php を開きます。パッケージが入れた直後は、接続先が次のようになっています。

$config['imap_host'] = ["localhost:143"];
$config['smtp_host'] = 'localhost:587';
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';

smtp_user と smtp_pass の %u・%p は、Roundcube にログインしたときのユーザー名とパスワードで SMTP 認証する、という意味です。

接続先は、メールサーバーの証明書に入っているホスト名で、暗号化して接続する指定にしておくと、Roundcube を別のサーバーに移したときも同じ設定で使えます。

// IMAP は 993 番(接続時から TLS)、SMTP は 587 番(STARTTLS)
$config['imap_host'] = 'ssl://mail.example.com:993';
$config['smtp_host'] = 'tls://mail.example.com:587';
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';

$config['product_name'] = 'Webメール';
$config['plugins'] = ['archive', 'zipdownload'];
  • ssl:// は接続した時点から TLS、tls:// は平文で接続してから STARTTLS で暗号化する指定です。
  • 接続先を IP アドレスにすると、証明書のホスト名と一致せず TLS の検証に失敗します。
  • imap_host と smtp_host は 1.6 系の項目名です。古い解説にある default_host や smtp_server、main.inc.php という設定ファイルは、現在の版では使いません。
  • des_key(ログイン中のパスワードを暗号化する鍵)は、パッケージがインストール時にランダムな値を書き込んでいます。変える必要はありません。

設定ファイルにはデータベースのパスワードなどが入るため、パッケージは所有者を root、グループを www-data、パーミッションを 640 にしています。このまま変えずに使います。

Roundcube は PHP のアプリケーションで、常駐するサービスはありません。設定ファイルの変更は、次にページを開いたときから反映されます。

手順 4: Apache で公開する

パッケージが置く /etc/roundcube/apache.conf では、/roundcube で公開する Alias の行がコメントになっています。公開のしかたは2通りです。

方法 A: Web メール専用のホスト名で公開する(おすすめ)

webmail.example.com のような専用のホスト名を用意し、ドキュメントルートを /var/lib/roundcube/public_html に向けます。設定ファイルやログのディレクトリが Web から見えない位置になります。

/etc/apache2/sites-available/webmail.conf を作ります。

<VirtualHost *:80>
    ServerName webmail.example.com
    DocumentRoot /var/lib/roundcube/public_html

    ErrorLog ${APACHE_LOG_DIR}/webmail_error.log
    CustomLog ${APACHE_LOG_DIR}/webmail_access.log combined
</VirtualHost>

有効にして、Let's Encrypt の証明書を取得します。certbot の Apache プラグインは、HTTPS 用の設定を追加し、HTTP から HTTPS への転送も設定できます。

sudo a2ensite webmail
sudo apache2ctl configtest
sudo systemctl reload apache2

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d webmail.example.com

ディレクトリへのアクセス許可や .htaccess を読む設定(AllowOverride All)は、/etc/roundcube/apache.conf にすでに書かれているので、仮想ホスト側に足す必要はありません。

方法 B: 既存のサイトの /roundcube で公開する

/etc/roundcube/apache.conf の次の行の先頭の # を外し、Apache を再読み込みします。

    Alias /roundcube /var/lib/roundcube/public_html
sudo apache2ctl configtest
sudo systemctl reload apache2

この Alias は、そのサーバーのすべての仮想ホストに効きます。WordPress などのサイトと同じサーバーで動かしている場合、どのドメインでも /roundcube で Web メールが開く状態になるため、方法 A を選ぶ方が管理しやすくなります。

手順 5: ログインして確かめる

ブラウザーで https://webmail.example.com/(方法 B なら https://example.com/roundcube/)を開き、メールアドレス(または Dovecot に設定したユーザー名)とパスワードでログインします。次の3点を確かめます。

  1. 受信トレイが表示され、フォルダー(送信済み・ゴミ箱など)が開ける。
  2. 自分宛てにメールを送り、受信できる。
  3. 添付ファイル付きのメールを送れる。

コマンドで公開状態を確認する場合は、ログイン画面が 200、設定ファイルが 404 になることを見ます。

curl -s -o /dev/null -w "%{http_code}\n" https://webmail.example.com/
curl -s -o /dev/null -w "%{http_code}\n" https://webmail.example.com/config/config.inc.php

うまくいかないときの確認順

症状 見る場所 よくある原因
ログインできない /var/log/roundcube/errors.log imap_host のホスト名が証明書と合わない、ポートの指定違い
ログインできない(接続はできている) sudo journalctl -u dovecot ユーザー名の形式(user か user@example.com か)、パスワード違い
送信できない /var/log/roundcube/errors.log、/var/log/mail.log または journalctl -u postfix smtp_host の指定違い、SMTP 認証が通っていない
画面が真っ白・500 エラー /var/log/apache2/ のエラーログ PHP の拡張モジュールの不足、設定ファイルの書き間違い
大きな添付を送れない PHP の upload_max_filesize・post_max_size、Postfix の message_size_limit どれか1か所の上限が小さい

設定ファイルの書き間違いは、PHP の構文チェックで見つけられます。

sudo php -l /etc/roundcube/config.inc.php

公開後の運用と安全対策

  • 更新を続ける: Roundcube は Web に公開するログイン画面を持つため、過去には実際の攻撃に使われた脆弱性も報告されています。Debian・Ubuntu のパッケージで入れた場合は、sudo apt update && sudo apt upgrade でセキュリティ修正が入り、データベースの表の更新も dbconfig-common が行います。自動更新(unattended-upgrades)を使うと適用漏れを減らせます。
  • 総当たり対策: fail2ban には Roundcube 用の設定(roundcube-auth)があり、Debian のパッケージではログの場所が /var/log/roundcube/errors.log に合わせてあります。/etc/fail2ban/jail.local に次のように書いて fail2ban を再起動すると、ログインの失敗を繰り返す IP アドレスを遮断できます。Dovecot と Postfix の認証失敗の遮断もあわせて行います。
[roundcube-auth]
enabled = true
  • アクセス元の制限: 社内だけで使うなら、Apache の Require ip や VPN で接続元を絞ると、攻撃を受ける範囲を大きく減らせます。
  • WordPress と同じサーバーの場合: Roundcube は専用のホスト名(方法 A)で公開し、データベースも WordPress とは別にします(パッケージが作る roundcube データベースとユーザーをそのまま使えば分かれます)。
  • 定期処理: 古いセッションやキャッシュの削除は、パッケージが入れる systemd のタイマー(roundcube-gc.timer、roundcube-cleandb.timer)が行います。自分で cron を足す必要はありません。

まとめ

  • Debian・Ubuntu では roundcube パッケージで入れられます。先に MariaDB を起動しておくと、dbconfig-common がデータベースとユーザーを自動で作ります。
  • 設定は /etc/roundcube/config.inc.php の imap_host と smtp_host を、証明書のホスト名と暗号化の指定に合わせます。
  • 公開は、ドキュメントルートを /var/lib/roundcube/public_html に向けた専用のホスト名がおすすめです。
  • Roundcube に常駐サービスは無く、更新は apt で行います。fail2ban とアクセス元の制限で、ログイン画面への攻撃に備えます。

関連記事

参考: Roundcube 公式サイト、Roundcube の設定項目(GitHub Wiki)、Debian の roundcube パッケージ

お気軽にご相談ください

お見積りへ お問い合わせへ
▲