はじめに
メールサーバーを構築していて、ちゃんと送受信できるのか確かめたいときありますよね。オンプレ環境での構築になると、最初は外との通信もできない状態なのでメールの送受信テスト方法に悩むと思います。そこで、今回は構築するサーバーが外と通信できない状況で、ローカルでメールの送受信をテストする方法を記述します!
やること
- 送信サーバー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
手順
送信サーバーの設定
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]
2.受信ドメインの追加
[オプション]→[DNSサーバー]→[DNSサーバー]→[ドメインの追加と削除]→[ドメイン名]入力→[追加]→[OK]
3.追加したドメインのレコードを設定
[オプション]→[DNSサーバー]→[DNSサーバー]→[Resource-takahashi-mail.com]→[Type:A(PTR)]→[Name:ドメインを入力]→[Address:受信サーバーのIPアドレス]→[追加]→[OK]
送受信テスト!
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の方が分かりやすいですよねw