Edited at

ローカル環境のPostfix構築

CentOS7で実施。Postfix、Dovecotを使ってローカルネットワーク向けの

メール送受信環境を構築。メール配信の仕組み理解のため。


Postfix

インストール

sudo yum -y install postfix

起動

systemctl restart postfix

postfixのバージョン確認

postconf | grep mail_version

自動起動

systemctl enable postfix

main.cf

cp -p /etc/postfix/main.cf /etc/postfix/main.cf.org

vi /etc/postfix/main.cf

# 自身のドメイン設定
mydomain = mail-server.test
myorigin = $mydomain

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

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

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

# 初めはローカルホストで動かすため
mynetworks = localhost

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

再起動

systemctl restart postfix

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

useradd user1 -s /sbin/nologin

任意のパスワード入力
passwd user1

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

useradd server1 -s /sbin/nologin

任意のパスワード入力
passwd server1

ディレクトリの書き込み権限

chmod 777 /var/spool/mail

telnetインストール

yum -y install telnet

テスト

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

telnet localhost 25

出力
220 localhost.localdomain ESMTP Postfix

入力
helo localhost

出力
250 localhost.localdomain

入力:送信元アドレス
mail from: user1@mail-server.test

出力
250 2.1.0 Ok

入力:宛先アドレス
rcpt to: user1@mail-server.test

出力
250 2.1.5 Ok

入力:メールの本文かきますコマンド
data

出力
354 End data with <CR><LF>.<CR><LF>

入力:メール本文
helo postfix

入力:本文書き終えましたコマンド
.

出力
250 2.0.0 Ok: queued as ・・・

入力:telnet終了
quit

出力
221 2.0.0 Bye

以下ディレクトリ存在すること
ll /home/user1/Maildir


Dovecot

インストール


yum -y install dovecot

起動

systemctl start dovecot

自動起動

systemctl enable dovecot

設定

vi /etc/dovecot/dovecot.conf

# 使用するプロトコル列挙
protocols = imap pop3 lmtp

# IPv4のみ使用。v6へのバインドを行わない
listen = *

vi /etc/dovecot/conf.d/10-mail.conf

# ファイルの場所を指定

mail_location = maildir:~/Maildir

vi /etc/dovecot/conf.d/10-auth.conf

# 平文認証の許可

disable_plaintext_auth = no

auth_mechanisms = plain login

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = no

再起動

systemctl restart dovecot

テスト

telnet localhost 143

出力
Connected to localhost.

入力:user1でログイン
1 login user1 パスワード

出力
Logged in

入力:ホームディレクトリの一覧を見る
2 list "" *

出力
* List () "." "INBOX"
2 OK List completed.

入力:INBOXの中身を見る
3 select INBOX

出力
1 EXISTS  ←1通のメールがある
1 RECENT  ←最新のメールは1通
3 OK Select completed.

入力:1通目のメールを見る。送信時のテストのものが見れる。
4 fetch 1 body[]

出力
From: user1@mail-server.test
To: undisclosed-recipients:;

helo postfix
)
4 OK Fetch completed.

入力:終了
5 logout

出力
5 OK logout completed.

ネットワーク設定

vi /etc/postfix/main.cf

# 割り当てているネットワークを追記
mynetworks = localhost, 192.168.2.0/24

再起動

systemctl restart postfix

設定

vi /etc/dovecot/dovecot.conf

# ネットワークを記述
login_trusted_networks = xxx.xxx.xxx.xxx/xx (プライベートネットワークのCider)

再起動

systemctl restart dovecot