sendmailの送受信設定、ローカルで送受信テスト（Sendmail, BJD）

# はじめに
メールサーバーを構築していて、ちゃんと送受信できるのか確かめたいときありますよね。オンプレ環境での構築になると、最初は外との通信もできない状態なのでメールの送受信テスト方法に悩むと思います。そこで、今回は構築するサーバーが外と通信できない状況で、ローカルでメールの送受信をテストする方法を記述します！


# やること
- 送信サーバーA（10.1.102.141）から受信サーバーB(10.1.102.223)に送信


# 前提
- DNSは自分のノートPC（BJDを利用）
- サーバーA,Bは仮想マシン
- DNSとサーバーA,Bは同一サブネット内にある
- CentOS7.2
- Sendmail
- 受信ドメイン：tttt
- ホスト名：tttt
- 受信ユーザー：test
- 受信アドレス：test@tttt.tttt


# BJD（BlackJumboDog）とは
- Webサーバー、メールサーバー、DNSサーバーなどのサーバーソフトを備えたソフト
- 今回は、DNSサーバーの機能を使って自分のPCをDNSとして使用します  

ダウンロードはこちら→http://forest.watch.impress.co.jp/library/software/blackjmbdog/


# メールの送受信に必要なもの
- 送信先のアドレス
- アドレスの名前解決をするDNS

今回は下記のようなイメージでメールがやり取りされます。
![図1.png](https://qiita-image-store.s3.amazonaws.com/0/168635/8a74e3e0-3f83-4a4e-6e0a-64c0f449411c.png)



#手順
## 送信サーバーの設定
**sendmailの設定は特にないです！w**
インストールして起動するだけでメールの送信はできてしまいます。
あとは、DNSの設定をローカルPCに向ければOK!
てことで。。。。

1.もろもろインストール

```
# yum install sendmail sendmail-cf sendmail-devel mailx
```

2.起動、自動起動設定

```
# systemctl enable sendmail
# systemctl start sendmail
```

3.DNSの設定変更
> DNSをローカルPCにします。（BJD）
※最初に、ローカルPCで自分のIPアドレスを調べます。
Windowsであれば、コマンドプロンプトで、```ipconfig```すれば出てきます。
今回は、10.1.102.200でした。

```
# vi /etc/sysconfig/network-scripts/ifcfg-ens32　※変更箇所のみ記載
DNS1=10.1.102.200
```

4.設定の反映

```
# systemctl restart network
```

5.確認

```
# cat /etc/resolve.conf
# Generated by NetworkManager
nameserver 10.1.102.200　←★DNSのIPアドレスが記載されていることを確認する
```

※/etc/resolve.confに直接書いても、ifcfg-ens32の方に違うDNSが書いてあると設定の反映をした際に、うまくDNSが設定できないことがあるので注意すること。

送信メールサーバー完成です！


## 受信サーバーの設定
1.受信ドメインの設定（/etc/mail/local-host-names）
> 送信先（受信ドメイン）のアドレスの＠以降を最下部に追記します。
>この設定をしないと、受信できません！（このドメインでメールが来たら、sendmailが受け取りますという設定） 

```
# vi /etc/mail/local-host-names
tttt.tttt
```

2.sendmail.mc編集（/etc/mail/sendmail.mc）
>いろいろ書き換えていきます。
>

```
# vi /etc/mail/sendmail.mc ※変更箇所だけ記載します。
118行目　DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0,  Name=MTA')dnl　←★Addr=127.0.0.1から、Addr=0.0.0.0に変更。（ローカルアドレス以外からもSMTPを受け付ける設定）
157行目　LOCAL_DOMAIN(`tttt.tttt')dnl　←★受信ドメインを記載
```


3.設定の反映

```
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# systemctl restart sendmail
```


4.受信ユーザーの作成
> OSのユーザーで受信するので、受信用のユーザーを作成します。

```
# useradd test
```

受信の準備ができました！



##BJDの設定
1.DNSサーバーの起動
> [オプション]→[DNSサーバー]→[DNSサーバー]→[DNSサーバーを使用する]にチェック→[OK]
>
>
![WS000002.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/7ac1f2f6-0b09-e236-0b70-7f343f8f03c4.jpeg)
![WS000003.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/44898363-5b66-190a-0c36-602d326b2bb4.jpeg)
>

2.受信ドメインの追加
> [オプション]→[DNSサーバー]→[DNSサーバー]→[ドメインの追加と削除]→[ドメイン名]入力→[追加]→[OK]
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/619b3381-3ec2-8d1c-21de-dd0f3184c075.jpeg)


3.追加したドメインのレコードを設定
> [オプション]→[DNSサーバー]→[DNSサーバー]→[Resource-takahashi-mail.com]→[Type:A(PTR)]→[Name:ドメインを入力]→[Address：受信サーバーのIPアドレス]→[追加]→[OK]
>
![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/6e1f4ac9-5c6c-d5e9-2be1-4a32ef15dd96.jpeg)
![WS000002.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/1812c87e-4577-8f6c-a0a5-0c3f22968c4f.jpeg)
>


##送受信テスト！
1.まずは、名前解決がうまくできるか確認します！

```
送信サーバー内での操作
# ping 10.1.102.223
PING 10.1.102.223 (10.1.102.223) 56(84) bytes of data.
64 bytes from 10.1.102.223: icmp_seq=1 ttl=63 time=0.504 ms
64 bytes from 10.1.102.223: icmp_seq=2 ttl=63 time=0.251 ms
64 bytes from 10.1.102.223: icmp_seq=3 ttl=63 time=0.215 ms

# ping tttt.tttt
PING tttt.tttt (10.1.102.223) 56(84) bytes of data.
64 bytes from tttt.tttt (10.1.102.223): icmp_seq=1 ttl=63 time=0.512 ms
64 bytes from tttt.tttt (10.1.102.223): icmp_seq=2 ttl=63 time=0.236 ms
64 bytes from tttt.tttt (10.1.102.223): icmp_seq=3 ttl=63 time=0.230 ms
```

うまく名前解決してそうですね！
ちゃんと送信サーバーが、DNSであるローカルPC（BJD）を見に行って名前解決してくれています！
**※ここで躓く際は、ローカルPCのファイアウォールが起動していないか等確認してください！**


2.送信します！
***送信サーバー内での操作***

```
# mail test@tttt.tttt
Subject: test mail
test
i am takahashi
.
EOT
```

一応送信できたのか、メールログ見てみましょう。

```
# tail /var/log/maillog
Mar 25 22:16:11 takahashi-mail sendmail[3230]: v2PDGAYw003230: from=root, size=229, class=0, nrcpts=1, msgid=<201703251316.v2PDGAYw003230@takahashi-mail.com.com>, relay=root@localhost
Mar 25 22:16:11 takahashi-mail sendmail[3231]: v2PDGBSv003231: from=<root@takahashi-mail.com.com>, size=488, class=0, nrcpts=1, msgid=<201703251316.v2PDGAYw003230@takahashi-mail.com.com>, proto=ESMTP, daemon=MTA, relay=localhost [127.0.0.1]
Mar 25 22:16:11 takahashi-mail sendmail[3230]: v2PDGAYw003230: to=test@tttt.tttt, ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:00, mailer=relay, pri=30229, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (v2PDGBSv003231 Message accepted for delivery)
Mar 25 22:16:17 takahashi-mail sendmail[3233]: v2PDGBSv003231: to=<test@tttt.tttt>, ctladdr=<root@takahashi-mail.com.com> (0/0), delay=00:00:06, xdelay=00:00:06, mailer=esmtp, pri=120488, relay=tttt.tttt. [10.1.102.223], dsn=2.0.0, stat=Sent (v2PDGC6p024499 Message accepted for delivery)
```

```dsn=2.0.0, stat=Sent```になっているので送信できてそうです！

※もし、```dsn=5.2.1```や```Host unknown```になった場合は、BJDでの設定が誤っているので確かめてください・・・！！


***受信サーバー内での操作***
3.受信できたか確認します！

```
# tail -n 30 /var/spool/mail/test
From root@takahashi-mail.com.com  Sat Mar 25 22:16:17 2017
Return-Path: <root@takahashi-mail.com.com>
Received: from takahashi-mail.com.com ([10.1.102.141])
        by takahashi-mail.com (8.14.7/8.14.7) with ESMTP id v2PDGC6p024499
        for <test@tttt.tttt>; Sat, 25 Mar 2017 22:16:17 +0900
Received: from takahashi-mail.com.com (localhost [127.0.0.1])
        by takahashi-mail.com.com (8.14.7/8.14.7) with ESMTP id v2PDGBSv003231
        for <test@tttt.tttt>; Sat, 25 Mar 2017 22:16:11 +0900
Received: (from root@localhost)
        by takahashi-mail.com.com (8.14.7/8.14.7/Submit) id v2PDGAYw003230
        for test@tttt.tttt; Sat, 25 Mar 2017 22:16:10 +0900
From: root <root@takahashi-mail.com.com>
Message-Id: <201703251316.v2PDGAYw003230@takahashi-mail.com.com>
Date: Sat, 25 Mar 2017 22:16:10 +0900
To: test@tttt.tttt
Subject: test mail
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

test
i am takahashi
```

無事に届いていました！！



#おわりに
上記で行った設定は最低限の設定です。
セキュリティも担保しつつ、メールも使ってサービスとして運用したい！といった場合には、上記での設定だけだとまずいです・・・！

この設定だと25番ポートを使用していますが、セキュリティを気にするのであればサブミッションポート（587番ポート）を利用する設定を行わなければなりません！
そのためには、サーバー証明書を使用する設定や、認証機能を持たせる設定等を行う必要があります。

また、一般的にはメーラーも使うようになるはずなので、そのあたりの設定もしないといけません！


セキュリティのところはあまりやったことがないので、今度調べてみます！
postfixの方が分かりやすいですよねｗ