Postfix + dovecot + RainloopでメールサーバとWebクライアント作成（CentOS7.4）

表題通りです。いろんなサービスが存在しますが、独自構築したいと思います。

**構築部分はこちらを参考にさせていただきました。**
https://centossrv.com/postfix.shtml
http://qiita.com/shadowhat/items/2872104e40dd219edb13

## 目指したい事
さくらVPSを基盤にメールサーバ構築、同ホスト上にRainloopを構築してブラウザ上からWebクライアントを利用する。メールサーバはpamの認証を利用して、linuxのユーザ、パスワードをメール関連（smtp/imap）の認証にも使い回したい。また、このメールサーバからリレーなど転送しない。

**必要なソフトウェア**
CentOS7.4
Postfix
cyrus-sasl
dovecot
Rainloop
(apache+php含む）

## Postfixの導入と設定
さくらVPSにはインストール済みでした

```shell-session
$ postconf  | grep mail_version
$ mail_version = 2.10.1
$ milter_macro_v = $mail_name $mail_version
```

**設定変更**

```:/etc/postfix/main.cf
変更
inet_interfaces = 127.0.0.1
→inet_interfaces = all

追記
myhostname = kusakari.style
mydomain = kusakari.style
myorigin = $mydomain
home_mailbox = Maildir/
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
message_size_limit = 10485760
```

**自動起動の設定とポート開放**

```
$ firewall-cmd --add-port=587/tcp --zone=public --permanent
$ firewall-cmd --reload
$ systemctl start postfix
$ systemctl enable postfix
$ systemctl list-unit-files  | grep post
postfix.service enabled 
```

## cyrus-saslの導入と設定
SMTPの認証にはcyrus-saslを利用します

```
$ yum install cyrus-sasl
$ systemctl start saslauthd
$ systemctl enable saslauthd
$ systemctl list-unit-files  | grep sasl
saslauthd.service enabled
```

## dovecotの導入と設定
IMAPのみ利用します

```
$ yum install dovecot
```

**設定ファイルの編集**

```:/etc/dovecot/conf.d/10-mail.conf
追加
mail_location = maildir:~/Maildir
```

```:/etc/dovecot/conf.d/10-auth.conf
追加
disable_plaintext_auth = no
```

```:/etc/dovecot/conf.d/10-ssl.conf
追加
ssl = no
```

**自動起動の設定とポート開放**

```
$ firewall-cmd --add-port=143/tcp --zone=public --permanent
$ firewall-cmd --reload
$ systemctl start dovecot
$ systemctl enable dovecot
$ systemctl list-unit-files  | grep dovecot
dovecot.service enabled 
```

**動くか確認する**

```
$ telnet localhost imap
$ telnet localhost imap
1 login kusakari password
OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE] Logged in
1 logout
```

## Rainloopの導入と設定
前回記事でWordPress導入時にも同じ事をやりましたが、一応記載します。

**事前準備**

```
$ yum install php
$ grep DocumentRoo /etc/httpd/conf/httpd.conf  
DocumentRoot "/var/www/html"
$ cd /var/www/html/
$ wget http://repository.rainloop.net/v2/webmail/rainloop-community-latest.zip
$ find . -type d -exec chmod 755 {} \;
$ find . -type f -exec chmod 644 {} \;
```

**Apacheの設定追加**

```/etc/httpd/conf/httpd.conf 
DirectoryIndex index.php
Alias /rainloop /var/www/html/rainloop
```

**Apacheの再起動とポート開放**

```
$ firewall-cmd --add-port=80/tcp --zone=public --permanent
$ firewall-cmd --reload
$ /sbin/apachectl configtest
Syntax OK
$ systemctl start httpd
$ systemctl enable httpd
$ systemctl list-unit-files  | grep httpd
```

**画面で確認**
http://<ホスト名>/

**拡張が足りないので、追加**

```
[302] The following PHP extensions are not available in your PHP configuration!dom
$ yum install php-xml
```

**権限が足りないので追加**

```
[202] Data folder permissions error [is_writable]
$ cd /var/www/html/
$ chown -R apache:apache ./
```

それっぽい画面が表示されたので、設定画面に行きます。
http://160.16.215.246/?/admin
admin/12345でログインできます

ここから先はGUIの設定になります。画面に沿って入力していくので、今回はここで打ち切ります。後日追記するかもしれません。メールを受信できるようになったら次はメールを通知する仕組みに進み、LINE Notifyなど便利な仕組みが多数あるので後日まとめたいと思います。