CardDav/CalDav

(2015/01/31)
 IMAPでメールをサーバー管理にし、ノートPCやディスクトップPCのメールクライアントから統一的に扱えるのは良いのだが、アドレス帳が分散してしまう。LDAPも入れてみた物の、編集がいまいち。ふとアドレス帳.appを見るとCardDAVなんて項目が有る。おそらく、webdavのvCard形式特化版なのではなかろうか。だとすると、両方で書き換えとか共有するには良さそう。

 ということで、ググって見たら、appleのcalendarserverってのが良さそうだということで、インストールしようとしたら、すでに入ってた。色々ググりながら設定して起動したけど動かない。。??と思った2011年にすでに失敗してた。。ナンテコッタイ。あれから2年以上。世の中は進化するもので、radicaleなりbaikalなりってものが出てる。どうやらbaikaiってやつはapache上のphpで動くらしく、独自のサーバーは建てない。calendarserverは独立なのでポートに穴を開けたりと面倒くさいのである。というこで、baikalを使用する。dbもsqliteだから楽ちん。

サーバーはdebian squeezeである。まぁphpのプログラムなんであんまり関係ないけど。php-pdoとかphp-sqliteとか色々いるけど、元々入れちゃってるしね。

baikalのインストール

普通のphpのプログラムなので、本家からダウンロードしてくる。

#wget http://baikal-server.com/get/baikal-flat-0.2.7.zip

パッケージは3種類あって、ホスティングしてルートにする奴と、レンタルサーバーとかのftpとかで上げるやつ。webサーバーはすでに使ってて、その一部に入れようと思っているので、flatのやつでいいや。http://xxxx.com/baikal/xxxxx/みたいにアクセスするようにする。

 #cd /home/html
 #unzip baikal-flat-0.2.7.zip
 #mv baikal-flat baikal

 解凍して名前を変える。ファイルを保存するので、permissionを変えておこう。

 #chown -R www-data:www-data baikal

で、終わり。アクセスしてみる。http://xxxx.com/baikal/admin/で、設定できるととのこと。
Forbiden。なんてこった。どうやらシンボリックリンクを使っているようで、apacheの設定でシンボリックリンクが有効になっていないのでエラーが発生してるっぽい。baikalのルートに.htaccessがあるのでそこに追加する。

# Disabling cache management
# that could cause problems with DAV requests
# Useful only for Apache servers, with AllowOverride All
# (ie, .htaccess files enabled)

# Allow HTTP headers with Apache/FastCGI
# See http://code.google.com/p/sabredav/wiki/Authentication#Apache_+_(Fast)CGI

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

<IfModule mod_expires.c>
        ExpiresActive Off
</IfModule>
Options FollowSymLinks   ←追加

再び!。http://xxxx.com/baikal/admin/にアクセス。おぉ、webインターフェースで設定できるのね。便利。

設定

ウィザード形式になっているので普通にセットしていけばOK。後で設定変更できるので、適当に。データベースはsqliteでOK。

結果こんな感じ。

次に、ユーザーを作る。上部にあるメニューのusers and resoursesでアクセス。
 これもまぁ、普通にadd usersを押して作るだけ。アカウント名はcaldavは普通メールアドレスにするっぽい。iCalのデフォルトもメールアドレスだったので、普段使うメールアドレスにしといたほうが良さげ。

これで、カレンダーとアドレス帳ができた。

テスト

にCardDav

次はAddressBookの方。こっちのURLは

 * Server address: http://dav.mydomain.com/card.php/addressbooks/jerome/default (replace domain and

つまり?

http://xxxx.com/baikal/card.php/addressbooks/takumi@xxxx.com/default

Macのaddressブックに設定してみると、xxxxのすべてって項目が出来上がる。これはイケてるっぽい。
面倒なので、sqliteを覗いてみたりして。。

 #>cd /home/html/baikal/Specific/db
 #>sqlite3 db.sqlite
 sqlite>
 sqlite>select * from cards;
 1|1|BEGIN:VCARD
 VERSION:3.0
 PRODID:-//Apple Inc.//Mac OS X 10.10.2//EN
 N:;人の名前;;;
 FN:人の名前
 item1.EMAIL;type=INTERNET;type=pref:メアド@xxxx.ne.jp
 item1.X-ABLabel:_$!<Other>!$_
 REV:2015-01-31T10:22:23Z
 UID:ce7017a8-715e-4f02-9089-1a277d7ae5c4
 END:VCARD
 |ce7017a8-715e-4f02-9089-1a277d7ae5c4.vcf|1422699764
 sqlite> 

入ってる入ってる。webmailツールのrainloopでもちゃんと同期されてる。
なんまvCardだね。だっけ?。もう忘れちまったな。

まずはcalDav側

とりあえず、MacOS-Xでテスト。calendarのURLは次のようになるらしい。

* Server Address: http://dav.mydomain.com/cal.php/principals/jerome (replace domain and username)

ということは、xxxx.comだとすると、

http://xxxx.com/baikal/cal.php/principals/takumi@xxxx.com

か。
macosでカレンダーを立ち上げて、CalDAVアカウントを追加をチェックして"続ける"をクリック。
アカウントの種類が自動ではダメなので"詳細"に変更すると、色々出てくる。

アカウントの種類:詳細
ユーザー名:takumi@xxxx.com
パスワード:xxxx
サーバーアドレス:xxxx.com
サーバーパス:/baikal/cal.php/principals/takumi@xxxx.com
ポート:80

これでいいはず。他のクライアントを探さないと、確認のしようがないな。baikalをwebで表示するものはないんだろか。。

ME6000 前へ戻る