【Postfix+dovecot+Rainloop】自鯖のメールサーバをWebメールとして使えるようにする

#前提
①以下の2工程を行なったうえで、この作業は行われています。
　1: [【Postfix + dovecot + Gmail】自前のメールサーバとGmailを連携させてみた](http://qiita.com/gerogero/items/96a300a9908b38c934c6)
　2:　[複数ドメインを運用している際のメールサーバドメインの扱い](http://qiita.com/gerogero/items/414f37d6a955c9d0a380)
②作業者は素人です。
③作業内容を理解せずに作業を始めています。
④今回は多少躓きましたが、3時間半程度(わたし的には驚異の速さ)で構築が完了しました。

##前回からの変更点

```
#cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

# postconf  | grep mail_version
postconf: warning: /etc/postfix/main.cf: unused parameter: broken_sasl_auth_cliants=yes //何かエラーが…
mail_version = 2.10.1

#dovecot --version
2.2.10
```

ちょっとVerUPしたよ！~~(多分)~~

#何をするか
設定したメールサーバをWebメール化して、**脱Googleの完全化**を推し進めようという試みです。
せっかくGmailをメーラー代わりに使っていたのにどうしてそんなことするのかというと、
　もともとGoogle依存をし過ぎるのは良くない(**もっと自前で用意できるようになるべきだ！**)というのと、
　**個人情報を何でもかんでもGoogleに握られるのが癪だ**という頓珍漢なやつあたりと、
　**どうせならフルOSSで運用してみたいという野心**
が出てきたからです。
まぁ、もともとGmailでのメーラーはThunderbirdがサーバを見つけてくれない症状が直せなかったっていう副次的産物でしたので、これを機にちゃんとしたものを用意しようって話です。
メールサーバとWebメールを運用できるものという漠然としたものを探していたら"自宅サーバの整理箱"の兄貴が[イカした投稿](http://log.windows78.net/2014/06/1020/)をしているのを発見し、これを使うことを決定した次第であります。

##で、そのWebメールってのは？
[Rainloop](http://www.rainloop.net/)というソフトウェアです。
![rainloop.png](https://qiita-image-store.s3.amazonaws.com/0/93085/923dfbbd-9d46-bfa6-2971-055a8b505dd3.png)
PHPで動くみたいです。[Github](https://github.com/RainLoop/rainloop-webmail)もあるんで、中身が読める方は眺めて、どうぞ。
ってことは、Systemctl enableしなくてもいいってことだよね。楽ちん。~~（問題そこか？）~~

こちらに、先人が書き残した虎の巻があるので参照のこと。
・[PHP製WEBMAIL「rainloop」はUIがキレイさん](http://qiita.com/acairojuni/items/946680f787b3f7855cc9)- 
・[CentOS 7.0 で複数のメルアドをインターネットで集中管理（Rainloop）](http://ufuso.jp/wp/?p=16077)

#作業手順詳細
***作業前にちゃんと[公式のSYSTEM REQUIREMENTS](http://www.rainloop.net/docs/system-requirements/)読むんだよ？***
##インストール
まずは、設置場所を作成します。
```#mkdir /var/www/rain //Apacheのドキュメントルート直下がいいんじゃないでしょうかね```

インストール作業のため、ディレクトリを移動します。
```#cd /var/www/rain```

[公式のDOCUMENTATION](http://www.rainloop.net/docs/installation/)のインストールコマンドを打ちます。
```#curl -s http://repository.rainloop.net/installer.php | php```

```:Terminal
#!/usr/bin/env php


       [RainLoop Webmail Installer]


 * Connecting to repository ...
 * Downloading package ...
 * Complete downloading!
 * Installing package ...
 * Complete installing!

 * [Success] Installation is finished!
```

ここで、```#ls -la```でファイルを確認すると、以下のようにファイルがインストールされていることが確認できます。

```:Terminal
合計 4
drwxr-xr-x  4 root root  48  9月 21 03:20 .
drwxr-xr-x. 4 root root  44  9月 21 03:13 ..
drwxrwxrwx  2 root root  32  9月 21 03:20 data
-rw-rw-rw-  1 root root 448  8月  8 23:44 index.php
drwxrwxrwx  3 root root  14  9月 21 03:20 rainloop
```

##ファイル・フォルダ設定
まだこの段階ではフォルダのパーミッション設定をしていないので、変更します。
その前にいったんディレクトリを移動。これも[公式のPermissions](http://www.rainloop.net/docs/permissions/)に書いてありますね。そのまま打ちました。

```:Terminal
#cd /var/www/rain
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
```

フォルダの所有者を再帰的に(≒下の階層まで)変更しろと書いてありますね。Apache使ってるので```apache:apache```かな？
```chown -R apache:apache . //最後のdot忘れるとオペランドエラーになるよ！```

```:Result
# ls -la
合計 4
drwxr-xr-x  4 apache apache  48  9月 21 03:20 .
drwxr-xr-x. 4 root   root    44  9月 21 03:13 ..
drwxr-xr-x  2 apache apache  32  9月 21 03:20 data
-rw-r--r--  1 apache apache 448  8月  8 23:44 index.php
drwxr-xr-x  3 apache apache  14  9月 21 03:20 rainloop
```

##Apache設定
まだWebで見るためにはウェブサーバの設定が残っています。[先人は新規ファイルを作っています](http://qiita.com/acairojuni/items/946680f787b3f7855cc9)が、こちらでは~~面倒だから~~あえてhttpd.conf内最下部に書きます(Apache2.2の時もこんな書き方してましたごめんなさい) 内容は丸パク…リスペクトです。

```:httpd.conf
<VirtualHost *:80>
  ServerName webmail.example.com
  DocumentRoot /var/www/rain //設置場所のフォルダ
  <Directory /var/www/rain/>
      <IfModule mod_authz_core.c>
          Require all granted
      </IfModule>
  </Directory>
</VirtualHost>
```

忘れずに再起動しましょう。
```#systemctl restart httpd```

~~これでhttp://webmail.example.com でWebメールにアクセスできるようになったはずです。~~
ごめんなさい、まだです。DNSの設定してないっす。でもその前にいったん次の設定をしてしまいましょう。

##PHP設定
添付容量が気になる方向けの設定ですね。あまり大きくすると受け取り側で拒否されたりもするのでほどほどにしとくのが吉かなと。
ここはWPとか入れちゃうとまた設定変更するので、目安程度ですかね。今回はGmail基準で添付ファイルサイズを25Mにしました。~~そこはGoogleに合わせるんだね。~~

```:php.ini
post_max_size = 30M //メールの最大サイズ(Default:16M)
upload_max_filesize = 25M //添付ファイルの最大サイズ(Default:16M)
```

##DNS設定
噂によると9割くらいの皆様はお名前.comでドメインを管理されているようですが、まあどこでも設定方法は同じだと思います。

```:DNS
HOSTNAME            | TYPE | TTL  | VALUE
webmail.example.com | A    | 3600 | xxx.xxx.xxx.xxx
```

ベタな設定ですよね。あえてリスクのある設定をする必要もないと思います。(リスク？)
設定が反映されるまで少しの間待機です。

反映されたら今度こそ、http://webmail.example.com でWebメールにアクセスできるようになったはずです。
そうしたら、最後のRainloop設定をして完了です！あと少し！（ここまで書きつつ2時間経過）

##Rainloop設定
下のようにアクセスできるようになりましたか？それでは最後の設定に進みましょう。
![download.png](https://qiita-image-store.s3.amazonaws.com/0/93085/9abb3c30-596c-594c-06b7-bd0c367fd980.png)
[公式のCONFIGURATION](http://www.rainloop.net/docs/configuration/)には以下の設定で入れると書いてあります。

```:DefaultLoginPass
Email    : admin
Password : 12345
```

…あれ？入れ無いゾ（焦り）と、最初肝を冷やしましたがログインのためのURLをよく確認してませんでした。```http://webmail.example.com?admin```です。```?admin```が肝心ですよ。

ログインすると以下のようなページになります。
![download.png](https://qiita-image-store.s3.amazonaws.com/0/93085/b471a08b-e6aa-7221-8946-f5919594b5fb.png)

赤字ではっきりと**ログインパスワードを変えろ**と言われているので変えましょう。ここ**冗談抜きで変えてください**。
変更すると、**Login Update**というボタンが緑色になるので、いったん右上の電源ボタンからログアウトして、再ログインしてみましょう。

次はWarning!が消えているはずです。
そうしたら**Language**と**Language(admin)**を日本語に切り替えましょう。

言語設定が完了したらドメインの追加をして、全行程完了です。左の「ドメイン」からドメインの追加を行ないます。
![download.png](https://qiita-image-store.s3.amazonaws.com/0/93085/524ffe80-fff8-dac8-4714-cfb1b6132bdb.png)
名前にexample.comと入れて、IMAP,SMTPそれぞれのサーバ入力欄をクリックすると自動補完されます。ポートを確認して左下「接続テスト」を実行します。

~~…あれぇ…Timeoutになる… 正確にはexample.comは上手く行きますが、example.netがTimeoutになります。~~
SMTPの原因はサーバが間違ってましたね。```smtp.example.net:25```でした。
IMAPの原因もサーバが間違ってたんだけど、これおかしいよなぁ… ```smtp.example.net:143```ってIMAPだよ？なんでsmtpのサブドメインなのさ…

なんでかは今度対処します。とりあえずこれで全ての作業は完了したので、ログアウトして、メールアドレスでログインしてみます。
こんどこそ```http://webmail.example.com```からログインだよ。終わった！I did it !

#作業後記
今回のインストール方法だとBasicがインストールされるので自動アップデートが使えないところが玉に瑕。
GoogleAppsの月500円をケチる為にえらく大変なことをしている気もしますが、勉強のためだから気にしない気にしない…(自己暗示)
これ、メールサーバの機能だけ切り離してAWSにでも移そうかなぁ…　でも請求が怖いなぁ…

#参考文献
CentOS version
[CentOSのバージョン確認方法](http://webkaru.net/linux/centos-version/)

Postfix version
[ちょっと忘れるPostfixバージョン確認について](http://motty.jimdo.com/2010/08/25/%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E5%BF%98%E3%82%8C%E3%82%8Bpostfix%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/)

curl option
[curl コマンド](https://hydrocul.github.io/wiki/commands/curl.html)

Port
[CentOS7でポートを開放する方法。](http://senoway.hatenablog.com/entry/2015/02/11/142139)

dovecot IMAP
[メールサーバ構築メモ【CentOS6.5＋Postfix＋Dovecot TLS/SSL】](https://blog.apar.jp/linux/678/)