mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Debian 8 (Jessie) - Web メールシステム Roundcube Webmail インストール(ソースビルド)!

[ サーバ構築 ] [ Debian, Dovecot, Linux, Mail, Postfix ]

こんばんは。

Debian GNU/Linux 8 (Jessie) に Web メールソフト RoundcubeMail をソースをビルドしてインストールする方法についての記録です。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)

0. 前提条件

1. Roundcube Webmail のインストール

アーカイブをダウンロードしてインストールを行う。
(Roundcube Webmail は apt でもインストール可能だが、依存性の関係で Apache もインストールされてしまうことに留意)。

1
2
3
4
5
6
7
8
# wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.1.1/roundcubemail-1.1.1.tar.gz
                                           # <= アーカイブダウンロード
# tar zxvf roundcubemail-1.1.1.tar.gz      # <= アーカイブ展開
# mv roundcubemail-*/ /var/www/roundcube   # <= 所定の位置へ移動
# chown nginx:nginx -R /var/www/roundcube  # <= 所有者変更
# chmod o+w -R /var/www/roundcube/temp/    # <= 書き込み権限付与
# chmod o+w -R /var/www/roundcube/logs/    # <= 書き込み権限付与
# rm -f roundcubemail-1.1.1.tar.gz         # <= 後始末

2. 文字化けの対応

機種依存文字が文字化けしないよう文字コード設定ファイル “rcube_charset.php” を以下のように編集する。

/var/www/roundcube/program/lib/Roundcube/rcube_charset.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    // convert charset using mbstring module
    if ($mbstring_list !== false) {
        $aliases['WINDOWS-1257'] = 'ISO-8859-13';
        // ====[ 追加 ]===>
        $aliases['JIS'] = 'ISO-2022-JP-MS';
        $aliases['ISO-2022-JP'] = 'ISO-2022-JP-MS';
        $aliases['EUC-JP'] = 'EUCJP-WIN';
        $aliases['SJIS'] = 'SJIS-WIN';
        $aliases['SHIFT_JIS'] = 'SJIS-WIN';
        // <===[ 追加 ]====
        // it happens that mbstring supports ASCII but not US-ASCII
        if (($from == 'US-ASCII' || $to == 'US-ASCII') && !in_array('US-ASCII', $mbstring_list)) {
            $aliases['US-ASCII'] = 'ASCII';
        }

次に、 “mime.types” を取得する。

1
2
3
# wget http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
                                            # <= ダウンロード
# mv mime.types /var/www/roundcube/config/  # <= 所定の位置へ移動

そして、デフォルト設定ファイル “defaults.inc.php” を以下のように編集する。

/var/www/roundcube/config/defaults.inc.php
1
2
3
4
5
// Absolute path to a local mime.types mapping table file.
// This is used to derive mime-types from the filename extension or vice versa.
// Such a file is usually part of the apache webserver. If you don't find a file named mime.types on your system,
// download it from http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
$config['mime_types'] = '/var/www/roundcube/config/mime.types';  // <= 変更(mime.types の位置を指定)

3. パッケージのインストール

必要なパッケージをインストールする。

1
# apt-get -y install php-pear php5-mysql php5-mcrypt php5-intl

必要な Pear モジュールもインストールする。

1
2
3
4
5
# pear install Auth_SASL
# pear install Net_SMTP
# pear install Net_IDNA2
# pear install Mail_mime
# pear install Mail_mimeDecode

(安定版が存在せずエラーになる場合は -beta-alpha を付与するようメッセージが出力されるはずなので、それに従う)

4. データベースの設定

MariaDB サーバに root でログインして以下のようにデータベース・ユーザの作成を行う。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# mysql -u root -p
Enter password:                                   # <= root パスワード
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 34
Server version: 10.0.16-MariaDB-1-log (Debian)

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE roundcubemail;  # <= roundcubemail データベース作成
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY '任意のパスワード';
                                                  # <= ユーザ roundcube 作成
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;               # <= 即時反映
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit                            # <= ログアウト
Bye

5. データベースの初期化

用意されている SQL ファイルを使用してデータベース roundcubemail を初期化する。

1
2
# mysql -u roundcube -p roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql
Enter password:  # <= roundcube ユーザのパスワード

6. PHP 設定ファイルの編集

PHP 設定ファイルでタイムゾーンが未設定なら設定する。(日本時間)

/etc/php.ini
1
2
3
4
5
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
date.timezone = Asia/Tokyo  // <= 追加

7. RoundCube Webmail デフォルト設定ファイルの編集

/var/www/roundcube/config/defaults.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// This domain will be used to form e-mail addresses of new users
// Specify an array with 'host' => 'domain' values to support multiple hosts
// Supported replacement variables:
// %h - user's IMAP hostname
// %n - http hostname ($_SERVER['SERVER_NAME'])
// %d - domain (http hostname without the first part)
// %z - IMAP domain (IMAP hostname without the first part)
// For example %n = mail.domain.tld, %t = domain.tld
$config['mail_domain'] = 'mk-mode.com';     # <= 変更 (送信元メールアドレスのドメインを指定)

// Use this charset as fallback for message decoding$
$config['default_charset'] = 'ISO-2022-1';  # <= 変更(日本語対応)

// enforce connections over https
// with this option enabled, all non-secure connections will be redirected.
// set the port for the ssl connection as value of this option if it differs from the default 443
$config['force_https'] = true;              # <= 変更(https アクセス(SSL)の強制)

// the way how contact names are displayed in the list
// 0: display name
// 1: (prefix) firstname middlename surname (suffix)
// 2: (prefix) surname firstname middlename (suffix)
// 3: (prefix) surname, firstname middlename (suffix)
$config['addressbook_name_listing'] = 2;    # <= 変更(アドレス帳での表示を姓名形式に)

// Set true if deleted messages should not be displayed$
// This will make the application run slower$
$config['skip_deleted'] = true;             # <= 変更(削除済みメッセージを非表示)

8. Nginx 設定ファイルの編集

https://サーバー名/roundcube/ で Web メールへアクセスできるようにするために、Nginx 設定ファイル server ディレクティブ(SSL 設定側)内に以下のように追記する。

/etc/nginx/conf.d/ssl.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
server {
    listen       443 ssl;
    server_name  localhost;

    #ssl_certificate      /etc/nginx/cert.pem;
    ssl_certificate      /etc/ssl/private/server.crt;
    #ssl_certificate_key  /etc/nginx/cert.key;
    ssl_certificate_key  /etc/ssl/private/server.key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        #root   /usr/share/nginx/html;
        root   /var/www/html;
        index  index.html index.htm;
    }

    # ====[ 追加 ]===>
    # RoundCube Webmail
    location /roundcube {
        alias /var/www/roundcube;
        allow 127.0.0.1;        # <= 内部からのみアクセス可にする場合
        allow 192.168.11.0/24;  # <= 内部からのみアクセス可にする場合
        deny all;               # <= 内部からのみアクセス可にする場合
        # allow all;            # <= 外部からもアクセス可にする場合
        index  index.php;
    }
    location /roundcube/config {
        deny all;
    }
    location /roundcube/temp {
        deny all;
    }
    location /roundcube/logs {
        deny all;
    }

    location ~ /roundcube/.*\.php$ {
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME  /var/www/$uri;
        include         fastcgi_params;
        fastcgi_pass_header "X-Accel-Redirect";
        fastcgi_pass_header "X-Accel-Buffering";
        fastcgi_pass_header "X-Accel-Charset";
        fastcgi_pass_header "X-Accel-Expires";
        fastcgi_pass_header "X-Accel-Limit-Rate";
    }
    # <===[ 追加 ]====

}

ちなみに、Web サーバが Nginx ではなく Apache の場合は “/etc/httpd/conf.d/roundcubemail.conf” を以下の内容で作成すればよい。(詳細なアクセス許可・拒否設定は不明)

/etc/httpd/conf.d/roundcubemail.conf
1
echo Alias /roundcube /var/www/roundcube

9. Nginx, PHP-FPM の再起動

設定反映のため Nginx(Apache なら httpd), PHP-FPM を再起動する。

1
2
3
# systemctl restart nginx

# systemctl resatrt php-fpm

10. RoundCube Webmail の設定

Web ブラウザで https://<サーバ名 or IP アドレス>/roundcube/installer/ へアクセスする。
そして、画面上で以下のように設定する。

  1. [NEXT] ボタンを押下する。
    (但し、赤字で “NOT OK” がある場合は [NEXT] が非活性で押下できない。未導入のモジュールを導入するなどし、 “NOT OK” を無くす)
  2. Logging & Debugging
    • “log_driver” で “syslog” を選択する。(ログを ”/var/log/messages" に出力)
  3. Database setup
    • “Database name”, “Database user name” が正しいか確認する。
    • “Database password” に roundcubemail データベースのパスワードを入力する。
  4. IMAP Settings
    • “default_host” にメールサーバー名(当方の例: “mail.mk-mode.com")を入力する。
    • “junk_mbox” に “Spam” と入力する。
  5. SMTP Settings
    • “smtp_server” にメールサーバー名(当方の例: “mail.mk-mode.com")を入力する。
    • “Use the current IMAP username and password for SMTP authentication” をチェックする。
      (SMTP 認証に IMAP サーバーのユーザー名/パスワードを使用する)
  6. Display settings & user prefs
    • “language” に “ja_JP” と入力する。
    • “If preview pane is enabled” をチェックする。(メール一覧下部にプレビューを表示)
  7. [CREATE CONFIG] ボタンを押下する。
  8. [CONTINUE] ボタンを押下する。
  9. 必要なら、"Test SMTP config", “Test IMAP config” でメール送信テストをしてみる。
  10. 最後に警告メッセージに従い “installer” ディレクトリを削除する。
    rm -rf /var/www/roundcube/installer

11. 動作確認

Web ブラウザで https://<サーバ名 or IP アドレス>/roundcube/ へアクセスし、メールのユーザ名・パスワードでログインできること、各種操作が可能なことを確認する。
また、ログイン後に各種設定も可能である。

12. 参考サイト


以上。

Comments