お知らせ
Ubuntu18.04でKopanoを設定する記事を公開しました。
–
GoogleのExchangeサービスが有料化された。1ヶ月600円、1年一括で6,000円。
日頃からGoogleに情報を預け過ぎていると気になっていたので、自宅でExchangeサービスを立ち上げて運用することを思い立った。
フリーで使えそうなものとして Zarafa opensource community edition というのがあったので導入してみることにした。
月額600円なら、運用の手間を考えると自前は間違っているのかもしれないけど・・・。
■目的
自宅でExchangeサービスを運用する。
- メールサーバーの開設。メールはリアルタイム通知させたい。
- アドレス帳などの管理。
- スケジュールの管理。
今回、上記は達成できたが外部メールサーバーとのメールのやり取りは範囲外となる。
もちろん、サーバーで作成したアカウント同士のメールはやり取りできるし、メールはリアルタイム通知される。
だが、postfix(SMTPサーバー)を外部とやり取りさせることは、セキュリティの面でハードルが高い。これは別の機会に時間をかけてゆっくり設定していく。
■作業概要
実際にZarafaをインストールしようとすると日本語で読める情報はそう多くなく、ココ(リンク切れのためアーカイブへ)とココにものすごくお世話になった。感謝。
で、ざっくりと作業の流れを見ると、
- zarafaが使用するユーザーをUbuntuに追加する。
- zarafaが連携する各種パッケージ mysql や apache, postfix 等をインストールする。
- postfixとmysql、apache2の事前設定をする。
- zarafaをダウンロードしてインストールする。
- zarafaを動作させるための最終設定をする。
- zarafaでユーザーを作ったりグループを作ったりして動作を確認する。
- Z-Pushを設定し、httpsで同期ができるようにする。
ってな感じになる見込み。
postfixにmysql、apacheが必要なのか。
想像よりハードルが高いなー。メールサーバーって設定間違えたら蜂の巣だろうなー。
こりゃ、当面ルーターのポートは開けられないなー。
・・・なんて思いつつ作業を開始。
最終的には、以下のユーザーやデーターベースを作ることになる。
同一な名前のユーザーがいたりするので、混乱しないよう先に書いておく。
■Ubuntu
ユーザーvmail は zarafa を動作させるシステムユーザーである。
ユーザーpostfix、mysql は何に使われるのかイマイチ分からない。
ユーザーwww-data は apache2 で phpが動くときに使われていた。
■mysql
データベース zarafa が作られる。
ユーザー postmaster は postfix がメールをやり取りするときと、zarafaがメールをやり取りするときに使われる。
データベース zarafa はインストール時に mysql の root によって作られる。作成後に mysql の ユーザー postmaster に全権を与える。
以降、行う作業を記す。
■zarafaが使用するユーザーをUbuntuに追加する。
$ sudo adduser -system -no-create-home vmail システムユーザ `vmail' (UID nnn) を追加しています... 新しいユーザー `vmail' (UID nnn) をグループ `nogroup' に追加しています... ホームディレクトリ `/home/vmail' を作成しません。 $ sudo gpasswd -a vmail root ユーザ vmail をグループ root に追加
その後、vmailユーザーによりzarafa関連のログ出力をする際に権限不足になるため、rootグループに入れておく。セキュリティ的にどうなのか?というのは今後の課題。
■zarafaが連携する各種パッケージ mysql や apache, postfix 等をインストールする。
必要となるパッケージは、見たところ postfix, mysql, apache2, php5他 っぽいので、この順で入れてみる。
まずは postfix から。
$ sudo apt-get install postfix
※セットアップの最中、以下の問い合わせがある。
Postfix Configuration画面 インターネットサイト を選択して了解する。 システムメール名: hogeserver.hogeddns.jp にして了解する。
※セットアップにより、Ubuntuにユーザー postfix が追加される。
次に、mysql。
$ sudo apt-get install mysql-server
※Ubuntuにユーザー mysql が作成される。
※インストールの過程で、mysql の rootパスワードを設定するように促されるので、設定する。ひと通り動作し、記事が完成したら以下の操作でそれなりに複雑なものに直す方向。
$ sudo dpkg-reconfigure mysql-server-5.5
次に、apache。
$ sudo apt-get install apache2
最後に、php5等のその他必要パッケージをインストールする。
$ sudo apt-get install php5 libapache2-mod-php5 libcdb1 php5-suhosin postfix-cdb postfix-mysql postfix-pcre php5-mysql php5-imap
一応、サービスの起動設定を見てみる。
$ sudo sysv-rc-conf service 1 2 3 4 5 0 6 S ---------------------------------------------------------------------------- apache2 [ ] [X] [X] [X] [X] [ ] [ ] [ ] mysql [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] postfix [ ] [X] [X] [X] [X] [ ] [ ] [ ]
結論からすると、再起動してみたら
・mysqlは起動していた
ので上記設定のままでよかった。
■postfixとmysql、apache2の事前設定をする。
エイリアス設定で管理者宛っぽいメールを全てrootで受けられるようにしておく。
/etc/aliases
# See man 5 aliases for format
postmaster: root
webmaster: root
mailer-daemon: root
エイリアスの変更内容を反映させる。
$ sudo newaliases
mysqlの文字コードセットを設定するため、以下のファイルを作成する。
/etc/mysql/conf.d/character-set.cnf
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
ファイルを作ったらmysqlを再起動して、文字コードセットが変わったことを確認する。
$ sudo service mysql restart $ mysql -u root -p mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql> quit;
次に、mysql に postfix というユーザーを作成する。
zarafaインストール時に root でデータベースを作成するので、その後、postmasterユーザーに zarafaデータベースへのすべての権限を与える方針。
$ mysql -u root -p
mysql> create user 'postmaster'@'localhost' identified by '********';
Query OK, 0 rows affected (0.32 sec)
mysql> quit;
※黄色部分がパスワード。
postfixとmysqlを連携させるため3つのファイルを編集する。
1つ目はこれ。
$ sudo vi /etc/postfix/main.cf
以下を修正する。
myhostname = hogeserver.hogeddns.jp mydestination = hogeserver.hogeddns.jp, localhost.hogeserver.hogeddns.jp, localhost
以下を追記する。
virtual_alias_maps = mysql:/etc/postfix/mysql-aliases.cf mailbox_transport = zarafa: zarafa_destination_recipient_limit = 1 mailbox_command = /usr/bin/zarafa-dagent "$USER" debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/X11 ddd $daemon_directory/$process_name $process_id & sleep 5
2つ目はこれ。
/etc/postfix/mysql-aliases.cf
# The user name and password to log into the mysql server.
user = postmaster
password = ********
hosts = 127.0.0.1 ※
dbname = zarafa
# For Postfix 2.2 and later The SQL query template.
# See mysql_table(5) for details.
query = select value from objectproperty where objectid=(select objectid from objectproperty where value='%s' limit 1) and propname='loginname';
※localhostとかhogeserverなどと書くと、mysqlとの接続にsocketファイルを使うようになるが、postfixが動作時にchrootしてしまうためアクセスできずにエラーが発生する。postfix側で明示的にchrootを n に設定すれば動作するが、セキュリティ的に良くないとかなんとか。
ファイルの所有権とアクセス権を変えておく。
$ sudo chown postfix:postfix /etc/postfix/mysql-aliases.cf
$ sudo chown root:root /etc/postfix/mysql-aliases.cf
$ sudo chmod 600 /etc/postfix/mysql-aliases.cf
※2013/06/13 オーナーをpostfixにするとチェック時に怒られる。オーナーはrootでも問題はなかった。
さらに以下を編集。
$ sudo vi /etc/postfix/master.cf
最終行にこれを追記
#for zarafa zarafa unix - n n - 10 pipe flags=DRhu user=vmail argv=/usr/bin/zarafa-dagent -R ${recipient}
apache2の設定。
/etc/apache2/httpd.conf
ServerName hogeserver:80 ServerName hogeserver.hogeddns.jp DocumentRoot /var/www ※訂正2013/06/12
ついでに /var/www ディレクトリに favicon.ico という名前でアイコンファイルを置いておくと、サイトのアイコンになる&エラーログが出力されない。アイコンファイル自体はWindows用のものでも使えるみたい。2013/06/12追記
■zarafaをダウンロードしてインストールする
ダウンロードはココからたどっていくと新しいものが入手できるっぽい。
最終的にたどり着いたのはココ。
この時点で新しそうな以下の ubuntu 12.04 用ファイルをダウンロード。
http://download.zarafa.com/community/final/7.1/7.1.4-41394/ ※リンク切れ
zcp-7.1.4-41394-ubuntu-12.04-i386-free.tar.gz
ファイルを展開してインストールする。
$ tar -xvf zcp-7.1.4-41394-ubuntu-12.04-i386-free.tar.gz $ cd zcp-7.1.4-41394-ubuntu-12.04-i386/ $ sudo ./install.sh
インストールの途中でdatabaseへのアクセスについて聞かれるので、rootユーザーを指定してデータベースを作らせる。後から postfix ユーザーでアクセスできるようにする。
Zarafa Collaboration Platform, version 7.1.4-41394 (C) Copyright 2004-2012 Zarafa, The Netherlands Please visit http://www.zarafa.com/ for more information. About to install for Ubuntu 12.04 i386 Found MySQL version 5.5 We will now install Zarafa onto your system. You may be required to install dependencies if the installation fails. Press <enter> to continue [enter] Installing packages ... 以前に未選択のパッケージ libvmime0 を選択しています。 ~ 必要パッケージがインストールされる Installation of the software is complete. We will now configure Zarafa services. Please answer the following questions: Serial number must be 25 characters or empty Server serial number (leave empty for none) [] :[空欄のままenter] The correctness of the serial will be checked when the server starts. MySQL Server [localhost] :[空欄のままenter] MySQL Port [3306] :[空欄のままenter] MySQL User [root] :[空欄のままenter] MySQL Password (won't be shown while typing) [] :[パスワードを入力してenter、パスワードは表示されない] Database name [zarafa] :[空欄のままenter] Log method (file or syslog) [file] :[空欄のままenter] Log filename [/var/log/zarafa/server.log] :[空欄のままenter] Creating spooler configuration ... The spooler program sends outgoing e-mail using an SMTP server Please answer the follow questions: SMTP server [localhost] :[空欄のままenter] Log method (file or syslog) [file] :[空欄のままenter] Log filename [/var/log/zarafa/spooler.log] :[空欄のままenter] Creating monitor configuration ... The monitor program sends quota warning mails to users who are over quota. Please answer the follow questions: Warning e-mail resend interval (in days) [1] :[空欄のままenter] Log method (file or syslog) [file] :[空欄のままenter] Log filename [/var/log/zarafa/monitor.log] :[空欄のままenter] Do you wish to run the Zarafa gateway (POP3/IMAP) services as well? [y][空欄のままenter] Log method (file or syslog) [file] :[空欄のままenter] Log filename [/var/log/zarafa/gateway.log] :[空欄のままenter] POP3 port [110] :[空欄のままenter] **Warning: When another service is currently providing POP3 support, the gateway may not start because the port is already in use. IMAP port [143] :[空欄のままenter] **Warning: When another service is currently providing IMAP support, the gateway may not start because the port is already in use. Do you wish to run the Zarafa Ical gateway (Ical/CalDAV) services as well? [y][空欄のままenter] Do you wish to run the Zarafa search service? [y][空欄のままenter] Already installed, skipping packages. Done configuring services Press <enter> to continue...[enter] Your server has been configured with the following parameters: MySQL server: localhost MySQL port: 3306 MySQL user: root MySQL password: *************** Log method: file Log file: /var/log/zarafa/server.log The server is running on port 236 If you wish to make changes, please edit the file /etc/zarafa/server.cfg or /etc/zarafa/license/base for the serial number. If you wish to make changes to the spooler or monitor configuration, please edit the file spooler.cfg or monitor.cfg in the directory /etc/zarafa/. To start Zarafa, you must run /etc/init.d/zarafa-server start Do you wish to start the server now? [y][空欄のままenter] * Stopping Zarafa server: zarafa-server No /usr/bin/zarafa-server found running; none killed. [fail] * Starting Zarafa server: zarafa-server [ OK ] We will now create the public store with the 'zarafa-admin -s' command Public created. Use the 'zarafa-admin -c' command to create users. Read the help or manual page for details, by typing: man zarafa-admin Press <enter> to continue...[enter] For message delivery, 'zarafa-dagent' is available. Please read the Installation documentation (PDF) on how to configure your mailserver. To start the dagent, spooler, monitor and gateway services, you must run /etc/init.d/zarafa-dagent start /etc/init.d/zarafa-spooler start /etc/init.d/zarafa-monitor start /etc/init.d/zarafa-gateway start /etc/init.d/zarafa-ical start Do you wish to start the configured services now? [y][enter] * Stopping Zarafa LMTP dagent: zarafa-dagent [ OK ] * Starting Zarafa LMTP dagent: zarafa-dagent [ OK ] * Stopping Zarafa spooler: zarafa-spooler [ OK ] * Starting Zarafa spooler: zarafa-spooler [ OK ] * Stopping Zarafa monitor: zarafa-monitor [ OK ] * Starting Zarafa monitor: zarafa-monitor Warning: Terminal locale not UTF-8, but UTF-8 locale is being forced. Screen output may not be correctly printed. [ OK ] * Stopping Zarafa gateway: zarafa-gateway [ OK ] * Starting Zarafa gateway: zarafa-gateway [ OK ] * Stopping Zarafa search: zarafa-search [ OK ] * Starting Zarafa search: zarafa-search [ OK ] * Stopping Zarafa licensed: zarafa-licensed [ OK ] * Starting Zarafa licensed: zarafa-licensed [ OK ] Press <enter> to continue [enter] Currently the server is configured to accept SOAP connections on port 236. If you wish to connect Outlook clients on port 80, please setup your web server to proxy HTTP requests with URI=/zarafa to 236. This can be done in Apache2 with mod_proxy with the ProxyPass configuration directive: ProxyPass /zarafa http://localhost:236 ProxyPassReverse /zarafa http://localhost:236sudo /etc/init.d/zarafa-dagent restart sudo /etc/init.d/zarafa-spooler restart sudo /etc/init.d/zarafa-monitor restart sudo /etc/init.d/zarafa-gateway restart sudo /etc/init.d/zarafa-ical restart sudo service apache2 restart sudo service postfix restart The modules 'proxy' and 'proxy_http' need to be enabled. Enter 'a2enmod proxy' to enable the mod_proxy module. Do not forget to reload apache when you have altered the configuration. The webaccess may already be available from http://server/webaccess. The new WebApp may already be available from http://server/webapp.
■zarafaを動作させるための最終設定をする。
ログ出力ができるように権限を変える。
sudo chmod 775 /var/log/zarafa/ sudo chmod 664 /var/log/zarafa/*
zarafaを動作させるユーザーとして vmail を追加する。
/etc/zarafa/server.cfg
#local_admin_users = root local_admin_users = root vmail ←vmailを追加 #mysql_user = root mysql_user = postmaster #mysql_password = root mysql_password = ********
タイムゾーン設定。2013/06/20追記
/etc/zarafa/ical.cfg
server_timezone = Asia/Tokyo
mysql の postmasterユーザーだと zarafa にアクセスできないので、アクセス権限を与える。
$ mysql -u root -p
mysql> grant all privileges on zarafa.* to postmaster@localhost identified by '*********';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
パスワード*********の設定は要らないはず。次の確認でデータベースにzarafaが見えないときにはパスワードを設定してみるという感じで。2013/06/20追記
確認。
$ mysql -u postmaster -p mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test | | zarafa | +--------------------+ 4 rows in set (0.00 sec) mysql> quit
webappは日本語化されている。が、設定が必要。2013/06/20追記
/etc/zarafa/webapp/config.php
define("ENABLED_LANGUAGES", "cs_CZ;de_DE;en_GB;en_US;fr_FR;he_IL;it_IT;nl_NL;pt_BR;ru_RU;tr_TR;zh_CN;zh_TWi;ja_JP");
全サービスを再起動する。
sudo /etc/init.d/zarafa-dagent restart sudo /etc/init.d/zarafa-spooler restart sudo /etc/init.d/zarafa-monitor restart sudo /etc/init.d/zarafa-gateway restart sudo /etc/init.d/zarafa-ical restart sudo service apache2 restart sudo service postfix restart
■zarafaでユーザーを作ったりグループを作ったりして動作を確認する。
最初にどんなユーザー・グループがいるのか調べてみる。
$ sudo zarafa-admin -l User list for Default(1): Username Fullname Homeserver ------------------------------------------ SYSTEM SYSTEM Zarafa
$ sudo zarafa-admin -L Group list for Default(1): groupname ------------------------------------- Everyone
システムユーザーだけ。これはパスワードを持たない内部的なユーザーらしいので、気にしない事してユーザーを作ってみることに。
マニュアルによれば、以下が書かれていて、この通りにやればできそう。
8.3.1. DBプラグインでユーザーを作成します。 新規にユーザーを作成するには次のコマンドを実行します。 /usr/bin/zarafa-admin -c <user name> -p <password> -e <email> -f <full name> -a <administrator> The fields between <> should be filled in as follows: user name: ユーザー名。この項目でログインします。 password: パスワードはデータベース上に暗号化された状態で保存されます。 email: ユーザーのメールアドレス。 full name: ユーザーの氏名。フルネームがスペースを含む場合やアルファベット文字でない場合は、 名前をクウォテーションマーク('')を使って入力して下さい。 administrator: 通常、この項目の値は0か1です。もしユーザーが管理者の場合はそのユーザーは 全ユーザーのZarafaデータを開く権限が与えられます。 もし、2を設定した場合、そのユーザーは他の企業のメールボックスにも アクセスする権限が与えられます。 メール以外の全ての項目は大文字小文字の区別が必要です。 パスワードに-Pを使うこともできます。そのパスワードはコマンドプロンプトで 付与することはできませんが、zarafa-adminツールで必要となります。 パスワードは確認のために2度入力する必要があります。
パラメータに -P を渡せば history に履歴が残らなくて良さそうだなぁ。と思いながらも、とりあえずユーザーを作ってみた。
$ sudo zarafa-admin -c root -p password -e root@hogeserver.hogeddns.jp -f "Administrator" -a 2 $ sudo zarafa-admin -c hogeuser -p password -e hogeuser@hogeserver.hogeddns.jp -f "Hoge User" -a 0 $ sudo zarafa-admin -c hogewife -p password -e hogewife@hogeserver.hogeddns.jp -f "Hoge Wife" -a 0
ユーザーが作られたかどうか確認してみる。
$ sudo zarafa-admin -l User list for Default(4): Username Fullname Homeserver ----------------------------------------------- SYSTEM SYSTEM Zarafa root Administrator hogeuser Hoge User hogewife Hoge Wife
ユーザーの詳細情報を確認してみる。
$ sudo zarafa-admin --details root Username: root Fullname: Administrator Emailaddress: root@hogeserver.hogeddns.jp Active: yes Administrator: yes (system) Address book: Visible Auto-accept meeting req:no Mapped properties: PR_EC_ENABLED_FEATURES PR_EC_DISABLED_FEATURES imap; pop3 Current user store quota settings: Quota overrides: no Warning level: unlimited Soft level: unlimited Hard level: unlimited Current store size: 0.00 MB Groups (1): Everyone
$ sudo zarafa-admin --details hogeuser Username: hogeuser Fullname: Hoge User Emailaddress: hogeuser@hogeserver.hogeddns.jp Active: yes Administrator: no Address book: Visible Auto-accept meeting req:no Mapped properties: PR_EC_ENABLED_FEATURES PR_EC_DISABLED_FEATURES imap; pop3 Current user store quota settings: Quota overrides: no Warning level: unlimited Soft level: unlimited Hard level: unlimited Current store size: 0.00 MB Groups (1): Everyone
グループを作成する。
$ sudo zarafa-admin -g Family -e family@hogeserver.hogeddns.jp Group created.
作成したグループにユーザーを追加する。
$ sudo zarafa-admin -b hogeuser -i Family User added to group. $ sudo zarafa-admin -b hogewife -i Family User added to group.
作成されたグループの状態を見てみる。
$ sudo zarafa-admin --detail Family --type group Groupname: Family Fullname: Family Emailaddress: family@hogeserver.hogeddns.jp Address book: Visible Mapped properties: PR_EC_ENABLED_FEATURES PR_EC_DISABLED_FEATURES Users (2): Username Fullname Homeserver ------------------------------------------- hogeuser Hoge User hogewife Hoge Wife
うまく登録できているようなので、webapp等の画面からhogeuserでログインし、hogewifeやfamilyグループにメールを出してみる。
設定がうまく行っていれば、
http://localhost/webapp
http://localhost/webaccess
で接続ができるはず。
メールの宛先 To: hogewife@hogeserver.hogeddns.jp To: family@hogeserver.hogeddns.jp
他のマシンから接続したい場合、Firewallで80/tcpを開けておくこと。
次に、Z-Pushをインストールする。これをインストールして設定できればiPhoneとかでアクセスできるはず。設定はココを参考にしながら行った。
まず、ファイルをダウンロード。
ココからたどって、https://download.z-push.org/final/2.0/ へ。そして、以下をダウンロードしてきた。
まず、Firewallで 443/tcp を開放する。
ファイルを展開+ディレクトリを作るなどして権限設定をする。
$ sudo tar zxvf z-push-2.0.7-1690.tar.gz $ sudo mv z-push-2.0.7-1690 z-push $ sudo mv z-push /usr/share $ sudo mkdir /usr/share/z-push/state $ sudo chown www-data:www-data /usr/share/z-push -R
その他に必要となるディレクトリを作成して権限設定する。
$ sudo mkdir /var/log/z-push $ sudo chown www-data:www-data /var/log/z-push/ $ sudo mkdir /var/lib/z-push $ sudo chown www-data:www-data /var/lib/z-push/
次に、phpの設定を変更する。マニュアルによれば、これを設定しなければならない。
php_flag magic_quotes_gpc = off
php_flag register_globals = off
php_flag magic_quotes_runtime = off
php_flag short_open_tag = on
そこで、以下の新しいファイルを作成。
/usr/share/z-push/.htaccess
# some apache settings Options -Indexes # register globals must be off php_flag register_globals off # magic quotes must be off php_flag magic_quotes_gpc off php_flag magic_quotes_runtime off # The maximum POST limit. To upload large files, this value must be larger than upload_max_filesize. php_value post_max_size 31M php_value upload_max_filesize 30M # we need short-open-tags php_flag short_open_tag on # For debugging only # make sure apache/php can write this file, or else no errors are logged! php_flag log_errors on php_value error_log errors.txt
作ったら所有者を変えておく。
$ sudo chown www-data:www-data /usr/share/z-push/.htaccess
次に、z-pushの設定。
/usr/share/z-push/config.php
タイムゾーン設定
define('TIMEZONE', 'Asia/Tokyo');
詳細なログが出したいときは以下を設定。(マニュアルとちょっと違ってた)
define('LOGUSERLEVEL', LOGLEVEL_DEVICEID);
$specialLogUsers = array('hogeuser@hogeserver.hogeddns.jp', 'hogeuser');
サーバー用の証明書と自己署名の作成。
$ sudo mkdir /etc/apache2/ssl $ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/ssl-cert-hogeserver.cert
作成中にホスト名を聞かれるので以下を入力。
できあがったファイルには 秘密鍵 と 証明書 の両方(テキスト)が入る。
-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCy75sh7uf4f90o ~ 3CzeLwQPl6lTE0hen9cY/S8= -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIICwjCCAaoCCQD7GQZ9v0BPoTANBgkqhkiG9w0BAQUFADAjMSEwHwYDVQQDExho ~ c7zwggc3J3W6g7q7qRRDSHPfufyg0dLc9iZZ3H1B/5G/IVipZvo= -----END CERTIFICATE-----
ということで、以下を実行してファイルを複製し、それぞれ以下の内容に編集し権限設定する。
$ cd /etc/apache2/ssl $ sudo cp ssl-cert-hogeserver.cert ssl-cert-hogeserver.pem $ sudo vi ssl-cert-hogeserver.pem $ sudo chmod 644 ssl-cert-hogeserver.pem
-----BEGIN CERTIFICATE----- MIICwjCCAaoCCQD7GQZ9v0BPoTANBgkqhkiG9w0BAQUFADAjMSEwHwYDVQQDExho ~ c7zwggc3J3W6g7q7qRRDSHPfufyg0dLc9iZZ3H1B/5G/IVipZvo= -----END CERTIFICATE-----
$ sudo cp ssl-cert-hogeserver.cert ssl-cert-hogeserver.key $ sudo vi ssl-cert-hogeserver.key $ sudo chmod 600 ssl-cert-hogeserver.key
-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCy75sh7uf4f90o ~ 3CzeLwQPl6lTE0hen9cY/S8= -----END PRIVATE KEY-----
生成されたファイルを削除し、秘密キーを移動する。
sudo rm 01234567 ← 8桁のリンクが作られているので削除
sudo rm ssl-cert-hogeserver.cert
sudo mv ssl-cert-hogeserver.key /etc/ssl/private
次に、以下の通り apache2 のサイトを作成。
/etc/apache2/sites-available/z-push
# # Z-push setting # <IfModule mod_ssl.c> <VirtualHost _default_:443> Alias /Microsoft-Server-ActiveSync /usr/share/z-push/index.php <Directory /var/www/z-push/> DirectoryIndex index.php Options -Indexes +FollowSymLinks AllowOverride Options Order allow,deny Allow from all </Directory> SSLEngine on SSLCertificateFile /etc/apache2/ssl/ssl-cert-hogeserver.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-hogeserver.key </VirtualHost> </IfModule>
apacheのSSLを有効化。
$ sudo a2enmod ssl
これにより、/etc/apache2/mods-enabled に以下のリンクが作られる。
ssl.load
※無効化するときは a2dismod コマンドを使用するとのこと。
z-pushサイトを有効化。
$ sudo a2ensite z-push
※無効化するときは a2dissite コマンドを使用するとのこと。
apacheの再起動(SSL有効化をしたので再起動が必要)。
$ sudo service apache2 restart
ブラウザーで
https://localhost/Microsoft-Server-ActiveSync/
に接続し、以下が表示されればテスト完了。
なお、このアドレスにアクセスする際、「証明書」に関する問い合わせがある。これは自分で作った証明書だから聞かれるのであって、証明書の内容を見て自分の作ったものだとわかったら接続してしまう。
Z-Push - Open Source ActiveSync Version 2.0.7-1690 GET not supported This is the Z-Push location and can only be accessed by Microsoft ActiveSync-capable devices More information about Z-Push can be found at: Z-Push homepage Z-Push download page at BerliOS Z-Push Bugtracker and Roadmap All modifications to this sourcecode must be published and returned to the community. Please see AGPLv3 License for details.
接続テスト。今回はこれがラスボス・・・。
iPhone で Exchange の設定を作る。
- 設定アプリを開く
- メール/連絡先/カレンダー を開く
- アカウントを追加… を開く
- Microsoft Exchange を選択
- メールアドレスに hogeuser@hogeserver.hogeddns.jp
パスワードに hogeuser のパスワード
説明に hogeserver 等の接続名を入れて「次へ」をタッチ。 - 「サーバの識別情報を検証できません」と言われたら「詳細」を押して証明書を確認し構築中のサーバーとわかったら受け入れる。
- メールアドレスは入っている
サーバーには hogeserver.hogeddns.jp
ドメインは空欄
ユーザー名には hogeuser
パスワードは入っている
説明には hogeserver 等の接続名が入っている状態で「次へ」をタッチ。 - 連携したい情報を選んで「保存」ボタンを押す。
iPhoneでリアルタイム通知をテストする場合、以下に注意すること。
iPhoneで初めて接続テストをしていたとき、hogeserverはまだインターネットに公開していなかった。ルーターのNAPTを指定なかったし、Firewallも443tcpを遮断していた。
だが、iPhoneは3G回線を使ってサーバーと同期しようとしていたので、リアルタイム通知がなされない。メールアプリを開くとメールは見られるのにおかしいな・・・と。これに気付くのに半日以上を費やしてしまった。
以上で設定は完了。
思っていた以上に時間がかかってしまったが、得られた成果は大きいと思った。
なんといっても、自分でコントロールできるExchangeサーバーを構築できたってことなわけで、VMwareでもなんでもいいからサーバーとなるマシンさえ用意できれば、いつでもどこでも環境が作れるってことなわけですよ、はい。
■メモ
再起動したら、ユーザーの登録ができない。とか、webappからログインできない等の症状。2013/06/20追記
zarafa-serverが起動していなかった。
$ sudo service zarafa-server start
これは根本解決にならなかった。起動スクリプトにsleepを入れた。2016/11/20追記
vi /etc/init.d/zarafa-server
・
・
・
case "$1" in
start)
if [ "$SERVER_ENABLED" = "no" ]; then
log_warning_msg "Zarafa Server daemon not enabled in /etc/default/zarafa ... not starting"
exit 0
fi
#added by hogehoge
sleep 5
log_begin_msg "Starting $DESC: $NAME"
export LC_ALL=$ZARAFA_LOCALE
export LANG=$ZARAFA_LOCALE
start-stop-daemon --start $QUIETDAEMON --pidfile $PIDFILE --exec $SERVER -- $SERVER_OPTS
log_end_msg $?
unset LC_ALL LANG
;;
・
・
・
これで、安定して起動するようになった。
ユーザーのフルネームを変更する。
$ sudo zarafa-admin -u hogeuser -f 'hogehoge tarojiro'
パスワードを変更する。
$ sudo zarafa-admin -u hogeuserr -p 'hogehogenewpassword'
apache2がエラー発生時に OS や 自らのバージョンを垂れ流しているのを止めたい。2013/07/15追記。
/etc/apache2/conf.d/security
#ServerTokens Full ServerTokens Prod
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他