Edited at

Vagrant + VirtualBox + CentOS 7 + Postfix + Dovecotでメールサーバを構築してメール送信のテストを行う


概要

VagrantとVirtual Boxを用いて,CentOS7上にメールサーバを構築する

この手順では以下の3つのことを目的とする


  • 仮想マシン(CentOS 7)上でメールの送受信,閲覧ができるメールサーバを構築する

  • バーチャルドメインを使用したメールの送受信,閲覧

  • メーリングリストを用いたメールの送受信,閲覧

注意:メールサーバ構築の手順を一通りさらうことを目的にしており,セキュリティについては一切考慮していないため,公開しないでください.


環境

仮想化ツール:Vagrant,Virtual Box

仮想OS:CentOS7


使用ソフトウェア


  • Postfix (SMTP)

  • Dovecot (IMAP)


使用するユーザー,ドメイン

テスト用ユーザー


  • user1

  • user2

テスト用サーバドメイン(mydomain)


  • originaldomain.mail.test

テスト用バーチャルドメイン


  • virtualdomain.test

テスト用メーリングリスト


使用コマンド


  • vim

  • su

  • useradd

  • passed

  • telnet

  • chkconfig

  • servise

  • chmod



作成手順


box作成

CentOS7のboxを作成

vagrant init centos/7

vagrant up
vagrant ssh



仮想マシン環境設定

vimの導入(必要な場合のみ)

su root

yum -y install vim-enhanced
exit



SMTP (postfix) の初期設定

起動して,バージョンの確認

service postfix start

postconf | grep mail_version

自動起動の設定

cf. chkconfigまとめ - Qiita

chkconfig postfix on

バックアップを取る

sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.org

設定ファイルを編集する

sudo vim /etc/postfix/main.cf



postfixの設定変更(localテスト用)

設定ファイルを編集する

sudo vim /etc/postfix/main.cf

各項目を設定変更する

cf. Postfixの使い方について調べたよ - 新人Webエンジニアの記録。

#自身のドメイン設定

mydomain = originaldomain.mail.test
myorigin = $mydomain

#ローカルホスト以外からも受け付ける
inet_interfaces = all

#ipv4しか使用しないため
inet_protocols = ipv4

#宛先ドメインに自身のドメインを追加
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

#信頼するネットワークの指定
mynetworks = localhost

#メールボックスの形式設定
home_mailbox = Maildir/

postfixの再起動

service postfix restart



アカウント作成(テスト用)

user1というアカウントを作成する

sudo useradd user1

sudo useradd user2

/var/spool/mailの権限編集

(user1,user2が書き込みできるようにする)

sudo chmod 777 /var/spool/mail

パスワードの設定

su root

passwd user1
passwd user2
exit



localテストの実施

Telenetを使用してlocalでメールのやり取りができるか確認する.


telnetのインストール

su root

yum -y install telnet
exit

ここまで終了 2019/05/13


テスト

ローカルホストの25番ポートに接続

telnet localhost 25

220 localhost.localdomain ESMTP Postfixを表示されてコマンドに入る

入力

helo localhost 

正常な出力 250 localhost.localdomain

入力:送信元アドレス

mail from: user1@originaldomain.mail.test

正常な出力 250 2.1.0 Ok

入力:宛先アドレス

rcpt to: user1@originaldomain.mail.test

正常な出力 250 2.1.5 Ok

本文入力の開始

data

メール本文を入力

Hello, mail!

this is mail test.
text message
text message
text message
text message
good bye!

本文の終了コマンド

<改行>.<改行>

正常な出力:250 2.0.0 Ok: queued as ・・・

入力:telnet終了

quit

正常な出力: 221 2.0.0 Bye

テスト実行後,/home/user1/new/Maildirディレクトリが存在することを確認する.

su root

cd /home/user1/new/
ls


IMAPサーバ

POP3, IMAPサーバであるDovecotを導入する

今回はIMAPサーバとして利用する


IMAPサーバ(Dovecot)のインストール

インストール

su root

yum -y install dovecot
exit

起動

service dovecot start

自動起動

chkconfig dovecot on


Dovecotの設定変更(仮想マシン内のテスト用)

sudo/etc/dovecot/dovecot.confを編集

#使用するプロトコル列挙

protocols = imap pop3 lmtp

設定反映のため再起動する

service dovecot restart


talnetを使ったIMAPサーバのテスト

SMTPのテストで送信したメールをIMAPをしようして閲覧する

telnet localhost 143

ログイン

1 login user1 [password]

ホームディレクトリの一覧取得

2 list "" *

INBOXの中を確認する

3 select INBOX

メッセージ一覧が表示される

メールを読む

4 fetch 1 body[]

メッセージ1番の本文が表示される

終了

5 logout



バーチャルドメイン作成

mydestinationに新しいドメインを追加する.

(ただし,方法では,user1@virtualdoamin.testに送信しても,user1@originaldomain.mail.testと同様の場所にポストされる)

/etc/postfix/main.cfを編集

mydestination = $myhostname, localhost.$mydomain, localhost, originaldomain.mail.test, virtualdomain.test



エイリアスの作成

Listtestアカウントに送ると,user1,user2に送るような設定

/etc/ailiasesを編集

# mailing list

listtest: user1@originaldomain.mail.test, user2@virtualdomain.test

DBを更新

sudo newaliases



参考サイト