CentOS6にシンプルで非セキュアなメールサーバーを構築する方法

簡単な検証を行うための、**セキュリティを全く考慮していない**メールサーバーの構築手順。
間違っても外部に公開しないこと。

## OSのインストール
OSをインストールしていない場合は、以下のページを元にOSの基本セットアップを行う。
https://qiita.com/SkyLaptor/items/b55c305fdc247fbfa319

## 必要なモジュールのインストール

```shell-session:メール送信機能
# yum install postfix dovecot telnet
```



## メール送信(SMTP)設定
メーラーとメールサーバー間のメール送信はSMTPにより行われる。
SMTP機能を以下の手順で変更する。

```shell-session:Commands
# cp /etc/postfix/main.cf /etc/postfix/main.cf.original
# vi /etc/postfix/main.cf
# postfix check
# newaliases
# chkconfig postfix on
# service postfix start
```

```bash:main.cf
# 以下の部分を修正もしくは追記する

myhostname = {自ホスト名}
# 例: myhostname = mail.rapnes.mydns.jp

mydomain = {自メールドメイン名}
# 例: mydomain = rapnes.mydns.jp

inet_interfaces = all

inet_protocols = ipv4

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 他サーバーへのリレーサーバーであれば、$mydomainを含めないようにする
# mydestination = $myhostname, localhost.$mydomain, localhost

mynetworks = {自ネットワーク}
# 例: mynetworks = 127.0.0.0/8, 192.168.0.0/16

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

home_mailbox = Maildir/

mail_spool_directory = /var/spool/mail

smtpd_banner = $myhostname ESMTP

# メールボックスのサイズを制限したい場合
mailbox_size_limit = {制限サイズ(Byte)}
# 1GBに制限する例: mailbox_size_limit = 1073741824

# 1通当たりのメールサイズを制限したい場合
message_size_limit = {制限サイズ(Byte)}
# 100MBに制限する例: message_size_limit = 104857600

# リレーさせたい場合
relayhost = [{リレー先アドレス}]
# 例:
# relayhost = [192.168.1.10]
# relayhost = [mail2.rapnes.mydns.jp]
# メモ: 大括弧で囲わないと、DNS名前解決にてMX検索をしてしまう

smtpd_helo_required = yes

disable_vrfy_command = yes
```

```bash:設定に関する各種確認コマンド
# main.cfに異常が無いか確認する
postfix check
# 設定値を全て確認する
postconf -d
# デフォルト値から変更した部分のみ確認する
postconf -n
```

## メール送信の動作確認
テスト用のグループ及びユーザーを作成し、メールをコマンド上で送信してみる。

```shell-session:
# groupadd -g 10001 mailusers
# useradd -u 501 -g 10001 -c "TestMailUser" -s /sbin/nologin testuser
# telnet localhost 25
HELO rapnes.mydns.jp
MAIL FROM: testuser@rapnes.mydns.jp
RCPT TO: testuser@rapnes.mydns.jp
DATA
Subject: TestMail
Hello. postfix!
.
QUIT
```

## メール受信(IMAP/POP3)設定
メーラーとメールサーバー間のメール受信はIMAP/POP3により行われる。
IMAP/POP3機能を以下の手順で変更する。

```shell-session:
# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.original
# cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.original
# cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.original
# cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.original
# cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.original
# cp /etc/dovecot/conf.d/20-pop3.conf /etc/dovecot/conf.d/20-pop3.conf.original
# vi /etc/dovecot/dovecot.conf
# vi /etc/dovecot/conf.d/10-auth.conf
# vi /etc/dovecot/conf.d/10-logging.conf
# vi /etc/dovecot/conf.d/10-mail.conf
# vi /etc/dovecot/conf.d/10-ssl.conf
# vi /etc/dovecot/conf.d/20-pop3.conf
# doveconf -n
# chkconfig dovecot on
# service dovecot start
```

```bash:dovecot.conf
protocols = imap pop3
listen = *
```
```bash:10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
```
```bash:10-logging.conf
log_path = /var/log/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
```
```bash:10-mail.conf
mail_location = maildir:~/Maildir
# メール利用ユーザーが使用するUIDの開始番号(必要に応じて)
first_valid_uid = 500
```

```bash:10-ssl.conf
ssl = no
```

```bash:20-pop3.conf
pop3_uidl_format = %08Xu%08Xv
```


## 参考
http://www.postfix.org/documentation.html
http://www.yukun.info/blog/2014/02/linux-telnet-smtp-pop3-mail.html