Ubuntuでメールサーバー構築


Ubuntuでメールサーバーを構築した際の手順です。
送信サーバーとしてPostfix、受信サーバーとしてdovecotを使用します。

# 構築前に知っといたほうがいいメールの知識
メールを送信するにはアドレスを知っている必要があります。
このメールアドレスは下記のように表現されます。

    hogehoge@gmail.com
@の前の「hogehoge」はユーザー名で、
@の後の「gmail.com」はサーバーのインターネット上の所在地(ドメイン)になります。
今から構築する送信サーバーから受信サーバーにメールを送る場合、

    root@localhost
とすればOKです。(rootユーザーのメールボックスに届きます。)

# 環境
OS：Ubuntu 14.04 LTS
Postfix：2.11.0 (確認コマンド：\$ postconf  | grep mail_version)
Dovecot：2.2.9 (確認コマンド：\$ dovecot --version)

# 送信サーバー(Postfix)の構築
## Postfixのインストール

```
$ sudo apt-get install -y postfix
```
下記のような画面が出てきますが、「設定なし」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/53476/a305d748-97ca-d4b3-60e8-a39692b2c589.png)

インストール後、「main.cf」という設定ファイルを/etc/postfix/ディレクトリにコピーしておきます。

```
$ sudo cp /usr/lib/postfix/main.cf /etc/postfix/main.cf
```

## postfixの設定を編集
```
$ sudo vi /etc/postfix/main.cf
```
下記のように編集します。

```
# 59行目：コメント解除
mail_owner = postfix
　
# 76行目：コメント解除しホスト名指定★
myhostname = mail.hogefuga.com
　
# 83行目：コメント解除しドメイン名指定
mydomain = hogefuga.com

# 104行目：コメント解除
myorigin = $mydomain

# 118行目：コメント解除
inet_interfaces = all

# 166行目：コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 209行目：コメント解除
local_recipient_maps = unix:passwd.byname $alias_maps

# 268行目：自ネットワーク追記(ifconfigコマンドでeth0のinetアドレスが10.0.2.15だったので10.0.0.0/24を追記)
mynetworks = 127.0.0.0/8, 10.0.0.0/24

# 388行目：コメント解除
alias_maps = hash:/etc/aliases

# 399行目：コメント解除
alias_database = hash:/etc/aliases

# 421行目：コメント解除 ( Maildir形式へ移行 )
home_mailbox = Maildir/

# 557行目：コメントにしてその下に追記
#smtpd_banner = $myhostname ESMTP $mail_name (@@DISTRO@@)
smtpd_banner = $myhostname ESMTP

# 632行目：追記
sendmail_path = /usr/sbin/postfix

# 637行目：追記
newaliases_path = /usr/bin/newaliases

# 642行目：追記
mailq_path = /usr/bin/mailq

# 648行目：追記
setgid_group = postdrop

# 652行目：コメント化
#html_directory =

# 656行目：コメント化
#manpage_directory =

# 661行目：コメント化
#sample_directory =

# 665行目：コメント化
#readme_directory =

# 最終行へ追記：送受信メールサイズを10Mに制限
message_size_limit = 10485760
# メールボックスサイズを1Gに制限
mailbox_size_limit = 1073741824

# 以下SMTP-Auth用
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
```

メールエイリアスのデータベースを再構築するために書きコマンドを実行します。

```
$ newaliases
```

## postfixを再起動
設定を反映させるために、postfixを再起動します。

```
$ sudo /etc/init.d/postfix restart
```

## 送信テスト
postfixがうまく構築できたかどうかを確認するため、テストメールを送信してみます。
と、その前に、mailコマンドを使えるように「mailutils」をインストールしておきます。

```
$ sudo apt-get install mailutils
```

メールを送信してみます。
※メールを送信するには、改行後、「.」を入力し[Enter]を押します。

```
# mail hogehogefugafuga@gmail.com
Cc:
Subject: test
hogehogefugafuga
.
```

結果、下記のようにGmailに送られます。
![image](https://qiita-image-store.s3.amazonaws.com/0/53476/e6936a33-49f1-d408-9ef4-4cf3caf48dd2.png)


# 受信サーバー(dovecot)の構築
## Dovecotのインストール
```
$ sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d
```

以下のように独自 SSL 証明書を作成されるか問われますが、
必要ならば後でも作成できるので、「いいえ」を選択します。

![image](https://qiita-image-store.s3.amazonaws.com/0/53476/3925fe54-0b29-5c8f-de5c-7e8e8d47b200.png)

## Dovecotの設定を編集
### ■ /etc/dovecot/dovecot.conf を変更

```
$ sudo vi /etc/dovecot/dovecot.conf

# 30行目：変更 ( IPv6をリスンしない場合 )
listen = *
```
### ■ /etc/dovecot/conf.d/10-auth.conf を変更

```
$ sudo vi /etc/dovecot/conf.d/10-auth.conf

# 10行目：コメント解除し変更(プレーンテキスト認証も許可する)
disable_plaintext_auth = no

# 100行目：追記
auth_mechanisms = plain login
```
### ■ /etc/dovecot/conf.d/10-mail.conf を変更

```
$ sudo vi /etc/dovecot/conf.d/10-mail.conf

# 30行目：Maildir形式に変更
mail_location = maildir:~/Maildir
```
### ■ /etc/dovecot/conf.d/10-master.conf を変更

```
$ sudo vi /etc/dovecot/conf.d/10-master.conf

# 96-98行目：コメント解除し追記
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
}
```
### ■ /etc/dovecot/conf.d/10-ssl.conf を変更

```
$ sudo vi /etc/dovecot/conf.d/10-ssl.conf

# 6行目：コメント解除して変更(SSLなし)
ssl = no

# 12,13行目：コメントにする
#ssl_cert = </etc/dovecot/dovecot.pem
#ssl_key = </etc/dovecot/private/dovecot.pem
```
### ■ Dovecotを起動

```
$ sudo initctl start dovecot
```

## 受信テスト
受信サーバーが正しく動くかどうかを検証します。
送信テスト時と同じようにメールコマンドを使ってメールを送信してみます。
ただし、この時の宛先(@以降)を「localhost」にします。

```
# mail root@localhost
Cc:
Subject: test
hogehogefugafuga
.
```

上記実行後、@以前をrootとしたので、
/root/Maildir ディレクトリが作成されているはずですので、
確認して見てください。(下記のようになっていれば受信テストOK)

```
# ll /root/Maildir/
合計 20
drwx------  5 root root 4096  3月 16 10:39 ./
drwx------ 10 root root 4096  3月 16 10:39 ../
drwx------  2 root root 4096  3月 16 10:39 cur/
drwx------  2 root root 4096  3月 16 10:39 new/
drwx------  2 root root 4096  3月 16 10:39 tmp/

```


# イントラネット外から受信をしたい場合

メールの送信に関しては、イントラネット外へ送信出来ますが、
受信に関しては、ファイアウォールやルーター(モデム含む)の設定が必要です。

## 受信するために必要なもの
### ■ ドメイン or グローバルIPアドレス
インターネット上の住所。
※@の後はドメインだけではなくグローバルIPアドレスでも可です。

固定IPやドメイン登録といった作業が必要になります。
ドメイン取得に関しては、
http://qiita.com/mizuki_takahashi/items/b0c5adebea48b9f2f7a6
が参考になると思います。

### ■ ポート解放
メールの送受信に使用するポートは下記の通りです。

|送受信|ポート番号|用途|
|:----:|:----:|:----:|
|送信|25|[smtp](http://www.sophia-it.com/content/SMTP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC)|
|送信|465|smtp(SSL)|
|送信|587|[Submissionポート](http://masuipeo.com/tech/port587.html)|
|受信|110|[POP](http://www.sophia-it.com/content/POP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC)|
|受信|995|POP(SSL)|
|受信|143|[IMAP](http://www.sophia-it.com/content/IMAP)|
|受信|993|IMAP(SSL)|


ただし、上記ポートを開放するための手順は、
モデムやルーターの機種によって設定方法がまちまちなので、下記を参考にしてみてください。
http://27bit.com/router.html

以上です。