ServersMan@VPS(CentOS7) メールサーバの設定方法(SMTP:Postfix)

ServersMan@VPS(CentOS7) メールサーバの設定方法(SMTP:Postfix)

ServersMan@VPS(CentOS7) メールサーバの設定方法(SMTP:Postfix)

DTI ServersMan@VPS(CentOS7)のメールサーバの設定方法(SMTP:Postfix)です。
Postfixとは、メールサーバ(MTA、メール転送エージェント)です。CentOSでは
sendmailが標準ですが、postfixの方を使用する事が多々有ります。

 

root宛のメールの転送方法や、main.cfの設定、ログの見方については
以下のページに記載しました。

 

本ページの目次

 

 

postfixの設定

 

■postfixのインストール

yum install postfix

 

■設定ファイル(main.cf)の編集

vi /etc/postfix/main.cf

 

編集箇所は以下です。mynetworksにて、このサーバ自体からしか
外部へメール送信出来ないようにしています。

 

postconf -n

home_mailbox = Maildir/

 

inet_interfaces = all

 

mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost

 

mydomain = example.com

 

myhostname = mail.example.com

 

mynetworks = 127.0.0.0/8

 

myorigin = $mydomain

 

root宛にメールを送信しtail -f /var/log/maillog
でログを見ていると「mail for ドメイン名 loops back to myself」
となってしまいました。そのため、「mydestination」項目に
「$mydomain」を入れると正常に送信できました。

 

postfixの起動

 

■sendmailの停止

systemctl stop sendmail

 

■sendmailの自動起動停止

systemctl disable sendmail

 

■使用するMTA(メールトランスファーエージェント)の変更

alternatives --config mta

There are 2 programs which provide 'mta'.

 

Selection Command
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix

 

Enter to keep the current selection[+], or type selection number: 2

 

■postfixを起動します。

systemctl start postfix

 

■postfixを自動起動と指定します。

systemctl enable postfix

 

※自動起動と指定されたかの確認は

systemctl is-enabled postfix

 

■ファイアウォール(firewalldやiptables)でのtcp/25の開放

ファイアウォールでtcp/25を開けます。

 

・firewalldの場合

■ゾーンにサービスを追加する
firewall-cmd --zone=ゾーン名(publicやdmzなど) --add-service=smtp --permanent

 

※またはゾーンにポートを追加する

firewall-cmd --zone=ゾーン名(publicやdmzなど) --add-port=25/tcp --permanent

 

■動的に反映する
firewall-cmd --reload

 

■全ゾーンの設定値の確認
firewall-cmd --list-all-zones

 

・iptablesの場合

■iptablesを編集します。
vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

 

■iptablesサービスを再起動します。
systemctl restart iptables

または

service iptables restart

 

 

 

オープンリレーになっていないかの確認

 

第三者中継チェック RBL.JPにてチェックします。
全てのテストにおいて「relay NOT accepted!!」と表示されました。

 

 

 

メール送受信確認

 

■mailコマンドで送信する場合

 

echo 本文 | mail -s 件名 送信先メールアドレス(このメールサーバ宛のメールアドレス)

 

この場合は送信時には、このメールサーバを使わない形(メール受信のみの確認)になりますかね。

 

 

■telnetで送信する場合

この場合は、このメールサーバを送信サーバとして利用し、外部のメールサーバのメールアドレスへ
送信、も出来ますね。

 

[root@dti-vps-srv94 ~]# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix

helo 任意の文字列(自分のドメイン名など)

250 mail.example.com

mail from: 送信元メールアドレス

250 2.1.0 Ok

rcpt to: 送信先メールアドレス

250 2.1.5 Ok

data

354 End data with .

from: 任意の文字列(送信元メールアドレス)
subject: 件名
本文
.

250 2.0.0 Ok: queued as ***

quit

 

 

正しく送信できました。
その後、POP/IMAPメールサーバをインストールして、インターネット側のメールアドレス
(Yahoo!のフリーメールアドレスなど)とのメール送受信が出来ることを確認しましょう。

 

 

メールのログ確認

 

■パケットで見る

メール受信(SMTPでのセッション接続)が
行われるかどうかはパケットで見る

tcpdump -X port 25

 

■メールのログで見る
/var/log/maillog

 

■systemdのログで見る

journalctl -u postfix

 

journalctl -r

※新しい順に表示