Webメールのインストール

Mountain Lion Server (10.8サーバ、OSXサーバ)にはWebmail がない。そこでWebメールとしてRoundcube を選んでみた。

roundcubemail-0.9.2 である。

ダウンロードして解凍した。できたフォルダはroundcubemail-0.9.2である。
操作はrootになってからの方が楽なのでrootになって実施する

$ su
Password:

ですな。

ダウンロードし、解凍したroundcubemail-0.9.2を
/Library/Sserver/Web/Data/Sites/Default/ に移動させる。
オーナーをroot:wheel にしておく。

sh-3.2# chown -R root:wheel roundcubemail-0.9.2

さらに /Library/Sserver/Web/Data/Sites/Default/roundcubemail-0.9.2で
Webサーバがtempとlogsフォルダの書き込みが可能になるようにオーナーを変更する。

sh-3.2# chown -R www:www temp
sh-3.2# chown -R www:www logs

確認する

sh-3.2# ls -al
total 192
drwxr-xr-x@ 20 root wheel 680 6 17 00:10 .
drwxr-xr-x 9 root wheel 306 8 15 14:12 ..
-rw-r–r–@ 1 root wheel 1344 6 17 00:10 .htaccess
-rw-r–r–@ 1 root wheel 12895 6 17 00:10 CHANGELOG
-rw-r–r–@ 1 root wheel 8901 6 17 00:10 INSTALL
-rw-r–r–@ 1 root wheel 35147 6 17 00:10 LICENSE
-rw-r–r–@ 1 root wheel 4022 6 17 00:10 README.md
drwxr-xr-x@ 10 root wheel 340 6 17 00:10 SQL
-rw-r–r–@ 1 root wheel 2712 6 17 00:10 UPGRADING
drwxr-xr-x@ 14 root wheel 476 6 17 00:10 bin
-rw-r–r–@ 1 root wheel 381 6 17 00:10 composer.json-dist
drwxr-xr-x@ 6 root wheel 204 6 17 00:10 config
-rw-r–r–@ 1 root wheel 11999 6 17 00:10 index.php
drwxr-xr-x@ 10 root wheel 340 6 17 00:10 installer
drwxr-xr-x@ 3 _www _www 102 6 17 00:10 logs
drwxr-xr-x@ 31 root wheel 1054 6 17 00:10 plugins
drwxr-xr-x@ 9 root wheel 306 6 17 00:10 program
-rw-r–r–@ 1 root wheel 26 6 17 00:10 robots.txt
drwxr-xr-x@ 4 root wheel 136 6 17 00:10 skins
drwxr-xr-x@ 3 _www _www 102 6 17 00:10 temp

シンボリックリンクの作成

sh-3.2# ln -s /Library/Server/Web/Data/Sites/Default/roundcubemail-0.9.2 webmail

これで http://example.com/webmail/installer/でRoundcubeのインストール・ステップにアクセスすることができる。

データベースの作成
phpMyAdmin でエータベースを作成。データベース名をroundcubemailとした。
アクセスできるユーザにroundcube;localhost;パスワードxxxx、特権はすべて可としておいた。

http://example.com/webmail/installer/
にアクセスしたら;

20130816roundcube-1

となった。赤字がエラーだ。

Mcrypt: NOT AVAILABLE(See http://www.php.net/manual/en/book.mcrypt.php)
Intl: NOT AVAILABLE(See http://www.php.net/manual/en/book.intl.php)

SQLite (v2): NOT AVAILABLE(See http://www.php.net/manual/en/ref.pdo-sqlite.php)
SQL Server (SQLSRV): NOT AVAILABLE(See http://www.php.net/manual/en/ref.pdo-sqlsrv.php)
SQL Server (DBLIB): NOT AVAILABLE(See http://www.php.net/manual/en/ref.pdo-dblib.php)

ができていないということだ。拡張機能が動いていないという警告とデータベースがないという警告だ。

拡張機能のMcrypt: NOT AVAILABLE については、設定したはずなのにと思って、/etc/php.ini を見たら加筆した部分が消えている。OSアップデートしたときに書き換えられちゃったにちがいない。

[mcrypt]
; For more information about mcrypt settings see http://php.net/mcrypt-module-open

; Directory where to load mcrypt algorithms
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.algorithms_dir=

; Directory where to load mcrypt modes
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.modes_dir=

extension=/opt/local/lib/php53/extensions/no-debug-non-zts-20090626/mcrypt.so

と太字の部分 extension=/opt/local/lib/php53/extensions/no-debug-non-zts-20090626/mcrypt.so
を書き加えておいた(サーバ構築の記録34項参照)。

Intl: NOT AVAILABLEについては、MACPORTで探してみた。intl とはなんやら国際化の意味である。
/opt/local/bin で

sh-3.2# ./port search intl

としたら

php53-intl @5.3.23 (php, devel)
internationalization extension for PHP

というのがあったから、phpのバージョンの一致するやつ-php53-intl-をインストールした。

sh-3.2# ./port install php53-intl
Warning: port definitions are more than two weeks old, consider using selfupdate
—> Computing dependencies for php53-intl
—> Dependencies to be installed: icu
—> Fetching archive for icu
—> Attempting to fetch icu-49.1.2_1.darwin_12.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/icu
—> Attempting to fetch icu-49.1.2_1.darwin_12.x86_64.tbz2.rmd160 from http://jog.id.packages.macports.org/macports/packages/icu
—> Installing icu @49.1.2_1
—> Activating icu @49.1.2_1
—> Cleaning icu
—> Fetching archive for php53-intl
—> Attempting to fetch php53-intl-5.3.23_0.darwin_12.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/php53-intl
—> Attempting to fetch php53-intl-5.3.23_0.darwin_12.x86_64.tbz2.rmd160 from http://jog.id.packages.macports.org/macports/packages/php53-intl
—> Installing php53-intl @5.3.23_0
—> Activating php53-intl @5.3.23_0
—> Cleaning php53-intl
—> Updating database of binaries: 100.0%
—> Scanning binaries for linking errors: 100.0%
—> No broken files found.

表示されたWarning:はとりあえず無視した。

/opt/local/lib/php53/extensions/no-debug-non-zts-20090626
にintl.soがインストールされたことを確認した、

で、PHP に認識させるために /etc/php.ini に加筆する。どこに書いたらいいのかわからないので、とりあえず一番下に

[International language]
extension=/opt/local/lib/php53/extensions/no-debug-non-zts-20090626/intl.so

と記入した。

これで
http://example.com/webmail/installer/
に再度アクセスしたらOKとなった。
データベースは At least one of them is required.とあるんだから、そしてMySQL: OKとなっているのだからいいのだろう。

そんでInstallerを先に進めた。
データベース名、データベースユーザ名、パスワードは先にphpMyadminで決めた通りだ。smtpサーバのところだけ書き加えた。あとはデフォルトのまま。

configファイルを2つ作るというところでは指示にしたがった。
Download が一番間違いないから2つのファイル、db.inc.phpとmain.inc.php をダウンロードし、/Library/Server/Web/Data/Sites/Default/roundcubemail-0.9.2/config内に入れた。
owner をほかのファイルと同じようにroot:wheel とした、アクセス権は644のままだがいいのだろうか?

Check DB Config でデータベースはいいが DB Schema: NOT OK(Database not initialized) とでてきたので その下のボタン(refresh だったかな)をクリックして解決。
Test SMTP config で
Sender: hoge@localhost
Recipient: hoge@localhost
と入力して Send test mail をクリックしてhoge宛てにメールがきていることを確認した。

Test IMAP config で
Server: localhost
Port:143
Username:hoge(このサーバのユーザ名)
Password:xxxxxx(ユーザのパスワード)
を入力したら
Connecting to localhost…
IMAP connect: NOT OK(Login failed for hoge from 192.168.xx.xx. Authentication failed.)
だって。

どうやら、パスワードの暗号化の部分でひっかかっているんだろ。http://example.com/webmail/ でRoundcube の最初のページがでて来る。ユーザ名とパスワードを入力しても通らない。同じ理由からだ。

再度、installer のページから設定する必要があるようだ。このままinstallerのページにだれかがアクセスすると面倒なことになるから、installerを一時的に使えないようにしておいた。

明日、明後日とこのサーバのある建物が停電なので、で、また、今日はアルコールを体が要求しているのでここまでだ。続きは来週だな。

一発で動くとは思っていなかったし、問題にぶつかるたびに、TVの推理ドラマを見に行っちゃうとか、他のことをするからなかなかできない。夏休にやるとこういことになる。普段の仕事がつまっているときにやると、もっと早くなるのだが。

停電明けに実施して成功した。

main.conf.php の85行目

// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null to use
// best server supported one)
$rcmail_config[‘imap_auth_type’] = NULL;

の太字の NULL を PLAIN に書き換える。

// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null to use
// best server supported one)
$rcmail_config[‘imap_auth_type’] = PLAIN ;

ですね。

これで http://example.com/webmail/ にアクセスして loginできる。送受信ができることを確認しておしまい。

[追加情報]

★ Installer を再度起動して始めからやり直すためには、
/library/server/web/data/sites/default/webmail/config
にあるmain.inc.phpの185行目が

// THIS OPTION WILL ALLOW THE INSTALLER TO RUN AND CAN EXPOSE SENSITIVE CONFIG DATA.
// ONLY ENABLE IT IF YOU’RE REALLY SURE WHAT YOU’RE DOING!
$rcmail_config[‘enable_installer’] = false;

となっているから、この false を true に書き換える。

もう既に、出来上がっちゃって、さらに変更するためには;/library/server/web/data/sites/default/webmail/config/main.inc.php を直接書き換えちゃった方がはやいと思う。

★ もしconfigファイルを作成のときデフォルトのホスト名を空欄にすると、ログインのとき、ユーザ名とパスワードとホスト名を聞いてくる。ホスト名は改めて入力する必要がないのだから、78行目を

$rcmail_config[‘default_host’] = ‘example.com‘;

と太字の部分に自分のドメインを書き加える。

★ さらにScure な設定をするためには(まだやってないから確証はない);

LANCARD.LABによると

IMAPサーバの指定と設定

78行目
$rcmail_config[‘default_host’] = ”;

$rcmail_config[‘default_host’] = ‘ssl://imap.example.com:993’;

81行目
$rcmail_config[‘default_port’] = 143;

$rcmail_config[‘default_port’] = 993;

85行目
$rcmail_config[‘imap_auth_type’] = PLAIN;

$rcmail_config[‘imap_auth_type’] = *****;
*****にDIGEST-MD5、CRAM-MD5、LOGIN、PLAIN のどれかを入力する(どれがどれか、ユーザのメールソフトがPLAIN以外にどれに対応しているかによって決めないといけない。たいていのメールソフトは自動的に設定してくれると思うが。)

SMTPサーバを指定して設定する
146行目
$rcmail_config[‘smtp_server’] = ”;

$rcmail_config[‘smtp_server’] = ‘ssl://example.com’;

150行目
$rcmail_config[‘smtp_port’] = 25;

$rcmail_config[‘smtp_port’] = 465;

154行目
$rcmail_config[‘smtp_user’] = ”;

$rcmail_config[‘smtp_user’] = ‘%u’;

158行目
$rcmail_config[‘smtp_pass’] = ”;

$rcmail_config[‘smtp_pass’] = ‘%p’;

さらに
/library/server/web/data/sites/default/webmail/config/db.inc.php の
32行目

$rcmail_config[‘db_dsnr’] = ‘mysql://roundcube:pass@localhost/roundcubemail’;

//データベースのユーザ名とパスワードを入力
$rcmail_config[‘db_dsnw’] = ‘mysql://root(ユーザ名):******(パスワード)@localhost/roundcubemail’;

とするのがいいようだ。

まだ実施していない。