Postfixの設定(CentOS 7)

Postfixというソフトウェアを使用して、送信用メールサーバーを構築します。

環境

CentOS 7.2.X
Postfix 2.10.x

1.Potfixのインストール確認

Postfixがインストールされているか確認します。
※CentOS7は、最初からPostfixがインストールされています。

[root@ ~]# yum list installed | grep postfix
postfix.x86_64        2:2.10.1-6.el7        @base

2.Postfixのアップデート

Postfixがインストールされていることを確認後、アップデートします。

[root@ ~]# yum -y update postfix

3.Postfixの設定ファイルをバックアップ

Postfixの設定ファイルmain.cfとmaster.cfをバックアップします。

[root@ ~]# cd /etc/postfix
[root@ postfix]# cp -p main.cf main.cf_backup
[root@ postfix]# cp -p master.cf master.cf_backup

4.Postfixの設定ファイル編集

Postfixの設定を変更します。
設定するには、/etc/postfix/main.cfを編集します。

[root@ ~]# vi /etc/postfix/main.cf

myhostnameの項目とmydomainの項目にホスト名とドメイン名を追加します。
example.comというドメイン名を使用する場合、ホスト名に「mail.example.com」、ドメイン名に「example.com」を設定します。

# INTERNET HOST AND DOMAIN NAMES
#
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = mail.example.com

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
mydomain = example.com

inet_interfacesの項目に利用するインタフェースを設定します。
「inet_interfaces = all」の行頭にある#を削除して、この行を有効にします。
さらに、「inet_interfaces = 127.0.0.1」の行頭に#を追加し、この行を無効にします。

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = 127.0.0.1

IPv6に対応していない場合は、以下の設定にします。
「inet_protocols = all」の行頭に#を追加し、この行を無効にします。
その下に「inet_protocols = ipv4」を追加します。

# Enable IPv4, and IPv6 if supported
#inet_protocols = all
inet_protocols = ipv4

独自ドメイン宛のメールを受信できるように設定します。
「mydestination = $myhostname, localhost.$mydomain, localhost」の行頭に#を追加し、この行を無効にします。
「mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain」を追加します。

# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
#mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

スプールをMaildir形式に指定します。
「#home_mailbox = Maildir/」行頭にある#を削除して、この行を有効にします。

# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
home_mailbox = Maildir/

メール送信用サーバーとして使用できるようにする為、SMTP認証の設定をします。
ファイルの末尾に下記の2行を追加します。

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes

以上で、main.cfの編集完了です。

5.Submissionポート設定

Submissionポート(587番ポート)を設定します。
設定するには、/etc/postfix/master.cfを編集します。

[root@ ~]# vi /etc/postfix/master.cf

下記のハイライト部分の行頭にある#を削除します。

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#smtp      inet  n       -       n       -       1       postscreen
#smtpd     pass  -       -       n       -       -       smtpd
#dnsblog   unix  -       -       n       -       0       dnsblog
#tlsproxy  unix  -       -       n       -       0       tlsproxy
submission inet n       -       n       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       n       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

以上で、master.cfの編集完了です。

6.ユーザ毎のメール用ディレクトリ自動作成

ユーザを追加した際、ユーザのホームディレクトリにメール用ディレクトリが自動で作成されるように設定します。

[root@ ~]# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
[root@ ~]# chmod -R 700 /etc/skel/Maildir/

7.SASLの設定

cyrus-saslをインストールして、SMTP認証ができるようにします。

[root@ ~]# yum -y install cyrus-sasl

SASLの起動と自動起動を設定します。

[root@ ~]# systemctl start saslauthd
[root@ ~]# systemctl enable saslauthd

8.SMTP認証の設定

/etc/sasl2/smtpd.confの設定ファイルでsaslauthdをauxpropに変更し、cram-md5を追記します。
※cram-md5を優先にするため、plainより前に追記します。

[root@ ~]# vi /etc/sasl2/smtpd.conf
pwcheck_method: auxprop
mech_list: cram-md5 plain login

9.Postfixを再起動

Postfixを再起動します。

[root@ ~]# systemctl restart postfix

Postfixの設定は以上です。
次はDovecotの設定とメール専用ユーザの追加です。