‘Roundcube’ タグのアーカイブ

user icon

RoundcubeをPeachPieで.NETの上に載せてみた話

TL;DR

  • Roundcube 1.7.5 を PeachPie で .NET にコンパイルして、Kestrel 上で動かしました。
  • 普通に使える状態です。ログイン、閲覧、送受信、添付、スペルチェック、LDAPアドレス帳まで確認しました。
  • Roundcube 本家のユニットテストは、PHP 8.4 で通る 1,262 件が全部通るところまで追い込みました。そのために PeachPie 側に30本ちょっとのパッチを当てています。

きっかけ

弊社では Roundcube を長いこと使っていて、カスタマイズもいろいろやってきました。
ある日ふと「PHP を .NET で動かす PeachPie ってありましたよね。あれで Roundcube ってそのまま動くんでしょうか?」と思いまして。
動けば PHP-FPM なしで dotnet 一発で起動できます。.NET のライブラリと混ぜられる可能性もありますし、とりあえずやってみることにしました。

PeachPie って何

PHP のソースを .NET のアセンブリ(DLL)にコンパイルしてくれるコンパイラです。
ASP.NET Core のミドルウェアとして PHP のサイトを載せられるので、WordPress を動かすデモなどが公開されています。

ただ、NuGet で配布されている版は少し前のもので、PHP 8.1 までの構文で止まっています。
Roundcube 1.7 は新しい構文を使っているので、今回は GitHub の master をソースからビルドして使いました。

とりあえず動かす

構成はシンプルです。

  • アプリ: Roundcube を PeachPie でコンパイルした DLL + Kestrel(コンテナ1個)
  • DB: MySQL(コンテナ1個)
  • 前段: 既存のリバースプロキシから振り分け

コンテナは rootless の Podman で、systemd のユーザーユニットで起動しています。
設定は、既存の Roundcube 環境の config.inc.php をほぼそのまま持ってきました。
PeachPie では設定ファイルもコンパイル対象なので、設定を変えるたびにビルドし直しになります。

<!-- Website.msbuildproj(抜粋イメージ) -->
<Project Sdk="Peachpie.NET.Sdk/1.2.0-xxx">
  <ItemGroup>
    <Compile Include="**/*.php" Exclude="tests/**;vendor/**/tests/**" />
  </ItemGroup>
</Project>

ビルドが通ってログイン画面が出たときは、ちょっと感動しました。
……が、ログインしたら日本語のメールが化けました。ここからが本番です。

ハマりどころ: 文字列は「文字」か「バイト」か

PHP の文字列は、ただのバイト列です。strlen() はバイト数を返しますし、$s[0] は1バイトです。
一方の PeachPie は、なるべく .NET の文字列(UTF-16)のまま扱おうとします。その結果、こうなります。

  • strlen('あ') が 3 ではなく 1 になる
  • ord() がバイト値ではなく文字コードを返す
  • 正規表現の [\x80-\xFF] がマッチしない

メールまわりはまさにバイト列の世界なので、これがあちこちに効いてきます。
例えば IMAP の「リテラル」は {123} のようにバイト数を前置きしてデータを送ります。ここが文字数で数えられていると、日本語の件名を含むメールでサーバーとの会話がずれてしまいます。

対策としては、PeachPie 側で「このデータはバイト列として扱う」区別をきちんと付けるようにしました。
strlen() や strpos()、preg 系がバイト列のときはバイト単位で動くようにする、といった修正です。
Roundcube 側も、バイト数が重要な箇所を数か所だけ明示的にバイト列として扱うよう直しています。

足りない拡張は作る

PeachPie は主要な拡張を一通り持っていますが、Roundcube が使うものの中には未実装や不完全なものがありました。

  • mbstring: PHP 8.4 が対応する文字コードを全部揃えました。ISO-2022-JP はもちろん、EUC-TW や ArmSCII-8 まで入れています。
  • iconv: .NET に無い文字コードは mbstring 側の実装を使います。
  • ldap: libldap を P/Invoke で呼び出して実装しました。アドレス帳の検索やページングも動きます。
  • pspell: libaspell を P/Invoke で呼び出して実装しました。スペルチェックが使えます。
  • そのほか、bcrypt と PBKDF2、AES-GCM、IntlDateFormatter、Spoofchecker、XMLWriter、SplFixedArray なども追加しました。

コンパイラ本体のバグにもいくつか当たりました。
引数展開(...$args)の型の扱いや、__call に渡される引数が参照のまま渡ってしまう件などです。これらもパッチで直しています。

最終的に、PeachPie へのパッチが32本、Roundcube へのパッチが11本になりました。

本家のユニットテストで答え合わせ

画面で触って動作を確認するのには限界があります。そこで、Roundcube 本家のリポジトリにあるユニットテストを使うことにしました。
PHP 8.4 と PeachPie の両方で同じテストを流し、結果を突き合わせます。

PHPUnit そのものは PeachPie では動かしにくいので、PHPUnit 互換の小さなテストランナーを自作しました。
テストに必要な LDAP サーバーなども、テスト用にコンテナで立てています。

              pass   skip  fail/error
PHP 8.4       1,262  88    2 ※
PeachPie(最初)  —      —     80
PeachPie(最終)  1,264  88    0

※ PHP 側の2件は、テスト環境のロケール設定などによるものです。

最初は80件失敗していました。それを1件ずつ潰して0件にしています。
差分が出たらそのたびに PHP と PeachPie で同じコードを動かして比べる、という地道な作業です。
ユニットテストで見つかった不具合は、画面を触っているだけではまず気づかない種類のものが多かったです。やってよかったと思います。

まだ残っている差

完全に同じというわけではありません。分かっている差は次のとおりです。

  • バイト列由来でも、全部が正しい UTF-8 になってしまった文字列は、strlen() が文字数を返す場合がある
  • ライブラリ内部で出た警告が set_error_handler() に届かない
  • LDAP の SASL バインドは未対応

いずれも、普段使う範囲では影響が出ないことを確認しています。

蛇足

今回の作業は、ほぼ全部 Claude Code と一緒にやりました。
パッチ作成、テストランナーの自作、テストの差分を1件ずつ追う作業は、相当な量の試行錯誤です。人間だけでやっていたら、途中で心が折れていたと思います。笑
こちらは「0件になるまで追い込もう」「テスト用に LDAP コンテナを立ててもいいよ」と方針を出す係でした。

PeachPie 側の修正には汎用的なものも多いので、そのうち本家に還元できるといいですね。

aikawa

CentOS Stream 9でRoundCubeの簡易テスト環境を作る

以前CentOS6でRoundCubeのテスト環境を作っていましたが、今回はCentOS Stream 9です。



postfixにSMTP認証がデフォルトで入っているらしく、無効にする事も考えましたが調査が必要そうなのと、それよりもSMTP認証をした方が早そうだったので、設定する事にしました。






SELinuxはpermissiveにして試しています。

PostfixとDovecot

インストールして有効化・起動します。

dnf -y install postfix dovecot
systemctl enable postfix dovecot
systemctl start postfix dovecot

設定は以前に加えてSMTP認証用の追加が必要になります。

/etc/dovecot/conf.d/10-master.conf

service auth内のunix_listener項を有効にして、user,groupを追加します。

service auth {
 unix_listener /var/spool/postfix/private/auth {
   mode = 0660
   user = postfix
   group = postfix        
 }
}

/etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain login

/etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir

/etc/postfix/main.cf

# myhostnameとhome_mailboxを編集
myhostname = localhost.localdomain
home_mailbox = Maildir/

# sasl認証関連を追加
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

設定後はリロード

systemctl reload postfix dovecot

RoundCube

installer/ 等でconfigの設定をします。先にfirewall-cmdで80番ポートも空けておきます。

firewall-cmd --add-service http --permanent
firewall-cmd --reload

config/config.inc.php

IMAP, SMTPサーバともにlocalhost.localdomainを指定して、SMTPはポート25も指定します。

IMAPポートは変更の必要が有りません。

$config['default_host'] = 'localhost.localdomain';
$config['smtp_server'] = 'localhost.localdomain';
$config['smtp_port'] = 25;

送受信に問題ないか試します。installer内でチェックをしても良いし、RoundCubeへログインして送受信しても構いません。

SubmissionポートでSMTPを利用する

追加でSMTPのサブミッションポートを利用してみます。但しTLSは使わない形です。

/etc/postfix/master.cf

tls関連は面倒が出ないよう切ってしまいます。また、reject_sender_login_mismatchもlocalhostではNG(Temporary lookup failure)になったので切っておきます。

submission inet n - n - - smtpd
# -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o smtpd_sasl_security_options=noanonymous
 -o smtpd_sasl_local_domain=$myhostname
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
# -o smtpd_sender_restrictions=reject_sender_login_mismatch
 -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

※最後の行が折り返して見えますが、-o smtpd_recipient_restrictions=…と一行です。

  • RoundCubeのconfig.inc.phpのsmtp_portを587にして送信出来れば成功です。
murave

Mac上に開発用Roundcubeをセットアップ

プラグインを作りたいので開発環境を手元に作ることにしました。

インストールについては弊社kosugiが書いた

Roundcubeをインストール&設定してみました

を参考に作業しました。あまり問題は出なかったのですが、Roundcubeのバージョンがあがり設定ファイルの名称や扱いが変わったりしていたのでメモを残したいと思います。

あとはphpのビルトインサーバー(php -S)で手軽にやりたいな〜ってのと、Gmailのセキュリティ強化の影響、個人的趣味でデータベースがPostgreSQLだというのが異なる点です。

・PHPは以前の記事でPostgreSQL用のモジュールを入れた5.5.14。
 - phpenv で入れた PHP に pdo_pgsql をインストール
 - phpenv で入れた PHP に pdo_pgsql をインストール
・PostgreSQLのバージョンは9.3.5.0 (Postgres.app)
・メールサーバーはGmail利用する。
・Roundcube 1.0.2 (Complete)

■ データベース(PostgreSQL)準備
ダウンロードして展開したRoundcubeのディレクトリにあるINSTALLファイルを参照しながら準備します。
・pgAdmin3などでroundcubeユーザーを作ります。開発環境なので権限はザックリSUPERUSERにしときました。
・roundcubemailデータベースを作ります。

CREATE DATABASE roundcubemail
WITH OWNER = roundcube
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ja_JP.UTF-8'
LC_CTYPE = 'ja_JP.UTF-8'
CONNECTION LIMIT = -1;

・準備用のSQLを実行。

#展開したRoundcubeのディレクトリで
$ psql -U roundcube -f SQL/postgres.initial.sql roundcubemail

■ ビルトインサーバー起動

#展開したRoundcubeのディレクトリで
$ php -S localhost:8000
PHP 5.5.14 Development Server started at Mon Sep 22 17:13:54 2014
Listening on http://localhost:8000
Document root is /Users/murave/roundcubemail-1.0.2
Press Ctrl-C to quit.

■ installerにアクセスして初期設定
今回だと http://localhost:8000/installer/ にアクセス。画面にしたがって設定していけばOKです。英語ですけど。

STEP2のCreate configで作成される設定ファイルの名称と扱いが以前とは変わっているようです。
config/config.inc.phpが直接作成されます。今回は編集する必要も特にありませんでした。一部(‘des_key)を*で伏せて引用します。

Roundcube_Webmail_Installer

STEP3. Test configのキャプチャです。

■ Gmailについて
kosugiが書いている通りIMAP経由でのメール受信を有効にしておくのは大前提ですが、RoundcubeからGmailにIMAPでアクセスしようとすると「安全性の低いアプリ」として拒否されるかもしれません(拒否されなければ気にする必要はありません)。

この場合「Google アカウント: ログイン試行をブロックしました」というメールが来ていると思います。

このメールに書いてあるのですが、以下のページから設定を変更することができます。あまり良くないのですが今回は「安全性に低いアプリのアクセス」を有効にしてIMAP接続を確認しました。

https://www.google.com/settings/security/lesssecureapps

■ ログインして動作確認
http://localhost:8000/

にアクセス、ログインしてメールの送受信を確認して完了です。

kosugi

「CEATEC JAPAN 2013」 2日目

CEATEC JAPAN 2日目です!!

本日は他のブースを色々と見て回ることができました。
面白そうなものが沢山展示されています。

中でも私の興味を引いたのがこちら、LEDスイッチ!!

LEDスイッチ

あらゆるボタンが ズラッと並んでるのがとても綺麗で、無駄にカチカチ押してきました(笑)
画像が動くボタンがあったので、テンション上がって動画を撮影したのですが
うまく撮れていませんでした…明日リベンジです。

本日のランチ、みそ焼き鯖ずし。

みそ焼き鯖ずし

衝撃の美味しさでした(´∀`)
もうこれはお取り寄せ決定です!

kosugi

「CEATEC JAPAN 2013 」1日目

やって参りました!CEATEC JAPAN 2013 in 幕張メッセ!!
今年も長崎県のブースで共同出展させて頂いております。

nagasaki_ken

通路を挟んで向かいのブースにdocomo様がデーンと構えておりますので、会場にお越しの際はそれを目印に、ぜひぜひお立ち寄り下さい(^_^)

LANCARD.COM

出展製品はこちらからご覧下さい!

昨年に引き続き、有安オートさんの電気自転車の無双っぷりが半端なかったです(^_^;)老若男女、国籍を超えて大人気!!
以前出展していたものより更にかっこ良くなっていました。

有安オート

CEATEC JAPAN 2013は10月5日(土)まで開催しております。
出店でグルメも楽しめますので、ランチついでにぜひ遊びに来て下さい!!

本日のランチ、タコライス。

タコライス

美味でした!

kosugi

Roundcubeのプラグインを、プラグインマネージャからダウンロードする

Roundcubeのプラグインをダウンロードする際、プラグインマネージャを使用すると
必要なプラグインを選択し、最新のものをダウンロードすることができます。

プラグインマネージャの主な機能

・簡易プラグインの配布
・プラグインのアップデート
・プラグインの関連情報
・アカウント設定に関するユーザレベルの制御
・Roundcubeデータベースの整理
・統一されたローカライゼーションの公開および配布
・ローカライゼーション翻訳の完全追跡
・プラグインのシステムの問題を報告
・リリースノートとドキュメントリンク

新しいスキンに対応したものが多いので、簡単に使用することが出来ます。

プラグインマネージャのダウンロード

プラグインマネージャの使用開始時には、他のプラグインを使っていないことが前提です。
プラグインマネージャの他に、以下のプラグインが必要になります。
・global_alias
・http_request
・jqueryui
・qtip
・settings

全て一緒に、こちらからダウンロード出来ます。
http://myroundcube.com/myroundcube-plugins/plugin-manager


ダウンロードが完了したら、プラグインディレクトリを指定し、フォルダを解凍します。
ディレクトリの場所はこちら。

<ルートディレクトリ>/roundcube/plugin

プラグインマネージャの設定

“config.inc.php.dist” ファイルのコピーを作成し、”config.inc.php” にリネームします。
コピーしたプラグインマネージャの ”config.inc.php” ファイルをテキストエディタで編集します。

<ルートディレクトリ>/roundcube/plugin/plugin_manager/comfig.in.php

管理者アカウントを追加します。(アカウントは複数追加できます。)

1
2
3
4//管理者のアカウントを追加$rcmail_config['plugin_manager_admins'] = array('admin1@mydomain.tld','admin2@mydomain.tld');↓
$rcmail_config['plugin_manager_admins'] = array('<管理者のアカウント(メールアドレス)を記入>');

“main.inc.php”ファイルに、”plugin_manager”を追記します。

1
2
3
4//プラグインマネージャを追加$rcmail_config['plugins'] = array();↓
$rcmail_config['plugins'] = array('plugin_manager');

一緒にダウンロードされた、以下のヘルパープラグインも同様にプラグインの設定を行って下さい。
・global_alias
・http_request
・jqueryui
・qtip
・settings

Roundcubeにログインし、設定をクリックすると”Manage Plugins”という項目が追加されます。


“Manage Plugins” 下の ”Pulugins Dounloads” をクリックし、Roundcubeのバージョンを選択します。
私の場合は、 ”Download plugins for Roundcube 0.8.4″ を選択し、”I agree”(同意する) をクリックします。


ここまで進むと、以下のように表示されます。
色がついているプラグインは有料です。


必要なプラグインにチェックを入れて、”Download Zip-Archive”ボタンをクリックすると
Zipファイルがダウンロードされます。

ダウンロードが完了したら、Zipファイルをプラグインディレクトリに解凍し
それぞれプラグインの設定を行います。

試しに、”compose_in_taskbar” を入れてみます。
特に難しい設定はないので、すぐに使用することができます。


タスクバーに、メッセージの新規作成ボタンを追加するプラグインです。
もちろんクリックすると、メッセージが新しく作成されます。

他にも様々な機能のプラグインが配布されているので、自分好みの機能を追加して
使いやすくカスタマイズすると、楽しいですね♪

kosugi

Roundcubeにプラグインを追加する

前回はRoundcubeのインストール&設定を行ったので、
本来の目的である、プラグインを試用していきたいと思います。

公式サイトのwikiに、使用可能なプラグインと設定の手順が載っていました。
http://trac.roundcube.net/wiki/Plugin_Repository

英語は得意ではないですが(;´Д`)カタコトなGoogle翻訳機能様を頼りつつ
なんとか読み解いて、探り探りやっていきました。

プラグインのインストールとプラグインの有効化

プラグインをインストールし、有効化します。

1、プラグインをダウンロードします。
2、プラグインディレクトリを指定し、フォルダを解凍します。

プラグインディレクトリの場所は以下になります。

<ルートディレクトリ>/roundcube/plugins/
3、解凍したフォルダの中に”config.inc.php.dist”ファイルが存在する場合は
コピーを作成し、”config.inc.php”にリネームします。
“config.inc.php.dist”ファイルに直接書き込まないよう気を付けて下さい。

“README”ファイルが存在し、設定の手順が載ってある場合は
手順に従い、設定を行って下さい。

4、’main.inc.php’ファイルに、追加したプラグインのディレクトリ名を追記します。
配列に列挙されたプラグインだけが有効になります。

‘main.inc.php’ファイルをテキストエディタで編集します。

<ルートディレクトリ>/roundcube/config/main.inc.php
//'additional_message_headers'と'archive'を追加
$rcmail_config['plugins'] = array();
// ↓
$rcmail_config['plugins'] = array('additional_message_headers', 'archive');
プラグインを無効にしたい場合は、リストから削除します。

//'additional_message_headers'を削除
$rcmail_config['plugins'] = array('additional_message_headers', 'archive');
// ↓
$rcmail_config['plugins'] = array('archive');
5、WEBブラウザからRoundcubeにアクセス、または更新を行い、追加した機能を確認します。

以上の設定を行えば、簡単に機能を追加することが出来ます。

ヘルプ機能を追加

Roundcubeをインストールした際、既にプラグインがいくつか入っていたので
試しにヘルプ機能を追加してみることにしました。

タスクバーにヘルプが追加されたので、クリックしてみると・・・

ヘルプのリンク先を指定してないので、何も表示されません。
“config.inc.php”ファイルを確認します。

<ルートディレクトリ>/roundcube/plugins/help/config.inc.php
ヘルプのリンク先を設定します。
特にページを作っていなかったので、Roundcubeの公式WikiのURLを指定しました。

//helpのリンク先を指定
$rcmail_config['help_source'] = '';
// ↓
$rcmail_config['help_source'] = 'http://trac.roundcube.net/wiki';
設定が済んだらページの更新を行い、ヘルプの内容が変更されているか確認します。

“larry”用のスキンも用意されていたので、レイアウトもバッチリです(´∀`)

kosugi

Roundcubeをインストール&設定してみました

弊社でカスタマイズ&運用サポートを行っております、
高機能WebメールRoundcube!!
業種や用途等に合わせて、自由にカスタマイズできるのが特徴です。

そのままでも使用できますが、それでは普通のWebメールと変わらず(;´Д`)
どうやらプラグインを使えば、簡単に色んな機能が追加できるようなので
さっそくRoundcubeをインストールしてみることに。

とりあえず簡単にプラグインを突っ込んで試してみたいだけなので、
下記のサイトを参考にさせていただきました。感謝です!
http://pnpk.net/cms/archives/650/all/1

ローカルでメールクライアントを構築し、Gmailを利用します。
あくまで簡単に簡単に(^_^;)

GmailでIMAPを利用する場合、Gmailの設定画面で事前に
IMAP経由でのメール受信を有効にしておく必要があります。
RoundCubeでGmailを受信する場合には、
Gmailログイン→“設定”→“メール転送とPOP/IMAP 設定”→“IMAPアクセス”で
“IMAPを有効にする” にチェックをしておいてください。

Roundcubeをダウンロード

http://roundcube.net/ からRoundcubeをダウンロードします。
今回は0.8.4を選びましたが、最近0.9-beta版が出たようですね~。

Apacheのドキュメントルートにフォルダを解凍し、フォルダ名を”roundcube”にリネームしました。
私の環境ではココです。

C:/Apache/htdocs

動作環境については、roundcubeフォルダにあるINSTALLファイル内で
REQUIREMENTS(必要条件)と記述してありました。
確認確認~(´∀`)~♪

* The Apache, Lighttpd, Cherokee or Hiawatha web server
* .htaccess support allowing overrides for DirectoryIndex
* PHP Version 5.2.1 or greater including
- PCRE, DOM, JSON, XML, Session, Sockets (required)
- libiconv (recommended)
- mbstring, fileinfo, mcrypt (optional)
* PEAR packages distributed with Roundcube or external:
- MDB2 2.5.0 or newer - Mail_Mime 1.8.1 or newer
- Mail_mimeDecode 1.5.5 or newer
- Net_SMTP 1.4.2 or newer
- Net_IDNA2 0.1.1 or newer
- Auth_SASL 1.0.6 or newer * php.ini options (see .htaccess file):
- error_reporting E_ALL & ~E_NOTICE (or lower)
- memory_limit > 16MB (increase as suitable to support large attachments)
- file_uploads enabled (for attachment upload features)
- session.auto_start disabled
- zend.ze1_compatibility_mode disabled
- suhosin.session.encrypt disabled
- mbstring.func_overload disabled
- magic_quotes_runtime disabled
- magic_quotes_sybase disabled
* PHP compiled with OpenSSL to connect to IMAPS and to use the spell checker
* A MySQL (4.0.8 or newer), PostgreSQL, MSSQL database engine or the SQLite extension for PHP
* One of the above databases with permission to create tables
* An SMTP server (recommended) or PHP configured for mail delivery
私の環境は、ざっとですが以下のとおりです。
・OS Windows7
・PHP Version 5.3.13
・Apache/2.2.22
・mysqlnd 5.0.8

ドキュメントルートにRoundcubeを入れておくと、こちらから設定が確認できるようです。
http://localhost/roundcube/installer/
設定出来ていれば”OK“の表示が!!

次にtemp、logsフォルダに書き込み権限を付与します。
設定方法は、こちらに詳しく書いてありました。
http://technet.microsoft.com/ja-jp/windows/ff189334.aspx

php.iniを編集

RoundCubeを動作させるために”php.ini”の内容を一部変更します。

//先頭の;を外す
extension=php_fileinfo.dll
//先頭の;を外す
extension=php_openssl.dll
私の場合、”php.ini”内に”extension=php_fileinfo.dll”の記述がなく
書いてるのと違う!どうしてくれんだ!!と焦りましたが
ちゃんと存在しました(;´∀`)

拡張モジュールは”php”フォルダの中の”ext”に収められています。
私の環境ではココです。

C:/PHP/ext

“php.ini”に”extension=php_openssl.dll”の記述を追加し、
設定を反映させるため、保存完了後、Apacheを再起動します。

Roundcubeに利用するデータベースを作成

私はphpmyadminを使用しました。
以下手順です。

1、WEBブラウザでhttp://localhost/phpmyadmin/にアクセスします
2、上部の”SQL”タブをクリックします
3、”サーバ上でクエリを実行する”に以下のコマンドを入力します

-- データベースの追加(データベース'roundcubemail'をUTF-8で作成)
CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-- ユーザの追加(ユーザ'roundcube@localhost'をパスワード'roundcube'で作成)
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'roundcube';
-- アクセス権限の追加(データベース'roundcubemail'に対してユーザ'roundcube@localhost'に適用可能な権限すべてを一度に付与)
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube';

4、右下の”実行”をクリックします
5、特に問題がなければ、”SQL は正常に実行されました”と表示されます

テーブルを作成

データベーステーブルを作成します。
以下手順です。

1、左部のデータベース一覧から”roundcubemail”を選択
2、上部”インポート”タブを選択
3、以下のファイルを読み込む

<ルートディレクトリ>/roundcube/SQL/mysql.initial.sql

インポートが完了すると、テーブルが12個新規作成されます。

Roundcubeの初期設定を行う

ここまで準備が整ったら、WEBブラウザ経由で以下のURLにアクセスし、初期設定を行います。
http://localhost/roundcube/installer/

動作するのに必須な項目が、すべて”OK“であれば問題無いようです。
最下部の”NEXT”をクリックして先に進みます。


それ以外の”NOT AVAILABLE“等になっている場合は、phpinfoを確認し、
コンポーネントが有効になっているか確認します。
設定は後からでも出来るので、特に何も設定しませんでした。

そのまま”CREATE CONFIG”をクリックすると、
main.inc.phpとdb.inc.phpの設定が、自動的に作成されます。

main.inc.php (download)
db.inc.php (download)
downloadをクリックして、それぞれ設定ファイルを
以下の場所に保存します。

<ルートディレクトリ>/roundcube/config

CONFIGファイルの編集
直接テキストエディタでファイルを編集します。
Gmailを利用した場合の設定です。

“main.inc.php”の設定

//IMAPサーバの指定
$rcmail_config['default_host'] = '';
↓
$rcmail_config['default_host'] = 'ssl://imap.gmail.com:993';
//IMAPサーバ接続ポートの変更
$rcmail_config['default_port'] = 143;
↓
$rcmail_config['default_port'] = 993;
//SMTPサーバの指定
$rcmail_config['smtp_server'] = '';
↓
$rcmail_config['smtp_server'] = 'ssl://smtp.gmail.com';
//SMTP接続ポートの変更
$rcmail_config['smtp_port'] = 25;
↓
$rcmail_config['smtp_port'] = 465;
//SMTPログインユーザの指定
$rcmail_config['smtp_user'] = '';
↓
$rcmail_config['smtp_user'] = '%u';
//SMTPパスワードの指定
$rcmail_config['smtp_pass'] = '';
↓
$rcmail_config['smtp_pass'] = '%p';
“db.inc.php”の設定

//SMTPパスワードの指定
$rcmail_config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
↓
//データベースのユーザ名とパスワードを入力
$rcmail_config['db_dsnw'] = 'mysql://root(ユーザ名):******(パスワード)@localhost/roundcubemail';
RoundCubeにログインする
http://localhost/roundcube/ にアクセスすると、RoundCubeのTOPページが表示されます。

ここで指定するログイン名は、実際のメールサーバのユーザー名とパスワードになります。
Gmailアカウントでログインする場合にはユーザー名にメールアドレス(xxxx@gmail.com)と、
パスワードを入力します。


問題なくログインできたら、不要になったinstallerフォルダの削除を行います。
以下を、フォルダごと削除して下さい。

<ルートディレクトリ>/roundcube/installer

以前試みた時には、うまくいかず断念しましたが、今回はなぜかスムーズに進みました。
大したことはしてませんが、動いてる感があるのでなんだか嬉しいです!


オリジナル感を出したいのでマークをねこちゃんに(笑)
可愛い可愛い(´∀`)ふふふ
スキンを自分好みに変えれるのは嬉しいですね~。

次は、プラグインを入れていきたいと思います。