CentOSにPostfixをインストールしてから起動までに必要な最初の設定


掲載日:2021年1月4日



INFOMARTION > CentOSにPostfixをインストールしてから起動までに必要な最初の設定

概要

CentOSにPostfixをインストールしてから起動までに必要な最初の設定の手順です。CentOS7を前提に記載しています。サブミッションポートで設定していきたいと思います。

Dovecotもインストールする方は こちら もご覧ください。

Postfixはメールを送信するための機能で、Dovecotはメールを受信するための機能です。メールを送信する処理が必要な方はPostfixをインストール、メールの受信もしたい人はDovecotもインストールとなります。

バージョンは以下となります。

CentOSのバージョン7.6 (1810)
Postfixのバージョン2.10.1

目次

  1. インストール
  2. 設定内容
  3. まとめ

1. インストール

Postfixをインストールするところから起動までの設定について記載します。

1-1. Postfixのインストール

yumコマンドによりPostfixのインストールを実行します。rootユーザで作業を実施してください。

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix

1-2. 起動確認

無事にインストール出来ているか確認するため、起動確認します。

[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root      1485  0.7  0.2  89744  2128 ?        Ss   16:02   0:00 /usr/libexec/postfix/master -w
postfix   1486  0.2  0.4  89848  4080 ?        S    16:02   0:00 pickup -l -t unix -u
postfix   1487  0.2  0.4  89916  4104 ?        S    16:02   0:00 qmgr -l -t unix -u
root      1489  0.0  0.1 112824   964 pts/0    S+   16:02   0:00 grep --color=auto postfix

上記の通りpostfixユーザで起動しているプロセスがあればOKです。停止しましょう。

[root@hostname ~]# /usr/sbin/postfix stop

2. 設定内容

2-1. 初期設定

Postfixの初期設定をしていきます。基本的にPostfixの設定は「/etc/postfix/main.cf」に記載されているので、main.cfを修正していきます。

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

以下の通り修正します。

main.cf【変更前】


#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
~省略~
#
#mydomain = domain.tld
~省略~
#myorigin = $myhostname
#myorigin = $mydomain
~省略~
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
~省略~
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
~省略~
#mynetworks = 168.100.189.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~省略~
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/

main.cf【変更後】


#
myhostname = example.com
#myhostname = virtual.domain.tld
~省略~
#
mydomain = example.com
~省略~
#myorigin = $myhostname
myorigin = $mydomain
~省略~
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
~省略~
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
~省略~
mynetworks = 127.0.0.0/8, 192.168.100.0/24
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~省略~
#
#home_mailbox = Mailbox
home_mailbox = Maildir/

「myhostname」「mydomain」「myorigin」こちらはドメインに関する設定となります。「example.com」に修正している個所はサーバのドメイン名を設定してください。「https://example.com/」の「example.com」の部分がドメイン名です。

メールアドレスは「ユーザ名@example.com」となります。

「mynetworks」はネットワークに関する設定となります。postfixに接続可能なIPアドレスとなります。メールサーバと連携するサーバが別サーバの場合は、適宜この値を修正してください。

「home_mailbox」はメールのディレクトリとなります。送信したメールを保存します。

2-2. OSユーザ、または、$alias_mapsで定義されていない場合拒否する

OSユーザと$alias_mapsに記載されているユーザでメールを送信するための設定をします。OSユーザとはuseraddで追加するユーザです。

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

以下の通り修正します。

main.cf【変更前】


#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

main.cf【変更後】


local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

main.cfの末尾に以下の内容を追記します。

main.cf


### MAIL SIZE (20Mバイト)
message_size_limit = 20971520
### TLS
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt
smtpd_tls_key_file = /etc/pki/tls/private/localhost.key

「smtpd_tls_cert_file」「smtpd_tls_key_file」は環境に合わせて設定してください。サーバ証明書が格納してあるパスを設定してください。

SSL設定が事前に必要なので、SSL設定をしていない人はSSL設定を先に実施してください。以下を参考にしてみてください。

CentOSにApacheをインストールしてから起動までに必要な最初の設定

2-3. postfixのサブミッションポート設定

サブミッションポートを使用してメールを送信するための設定を行います。

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

※編集するファイルは「main.cf」ではなく「master.cf」なので、ファイル名が似ているので注意してください。

以下の通り修正します。

master.cf【変更前】


#submission inet n - n - - smtpd
~省略~
#-o smtpd_sasl_auth_enable=yes
~省略~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~省略~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~省略~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

master.cf【変更後】


submission inet n - n - - smtpd
~省略~
-o smtpd_sasl_auth_enable=yes
~省略~
-o smtpd_client_restrictions=permit_sasl_authenticated
~省略~
-o smtpd_sender_restriction=permit_sasl_authenticated
~省略~
-o smtpd_recipient_restrictions=permit_sasl_authenticated


SASL認証するために必要なライブラリをyumでインストールします。

[root@hostname ~]# yum -y install cyrus-sasl
[root@hostname ~]# yum -y install cyrus-sasl-plain
[root@hostname ~]# yum -y install cyrus-sasl-md5
[root@hostname ~]# yum -y install cyrus-sasl-devel

UNIXアカウントを認証に使用するため、saslauthdを編集します。

[root@hostname ~]# vi /etc/sysconfig/saslauthd

以下の通り修正します。

saslauthd


#MECH=pam
MECH=shadow

2-4. SASLの有効化

SASLを有効化します。

[root@hostname ~]# systemctl enable saslauthd
[root@hostname ~]# systemctl is-enabled saslauthd
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep saslauthd
saslauthd.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-5. 起動確認

Postfixが起動するか確認します。

[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root      1838  0.0  0.1  89744  2080 ?        Ss   18:14   0:00 /usr/libexec/postfix/master -w
postfix   1839  0.0  0.3  89848  3988 ?        S    18:14   0:00 pickup -l -t unix -u
postfix   1840  0.0  0.3  89916  4008 ?        S    18:14   0:00 qmgr -l -t unix -u
root      1845  0.0  0.0 112824   968 pts/0    S+   18:15   0:00 grep --color=auto postfix

上記の通りpostfixユーザで起動しているプロセスがあれば無事設定が完了していて起動してる状態となります。起動の確認が取れたので一旦、停止しましょう。

[root@hostname ~]# /usr/sbin/postfix stop

2-6. 自動起動設定

最後に必須ではありませんが、毎回サーバ再起動の度に起動するのは大変なので、サーバ起動時にPostfixが自動起動するように設定を入れます。systemctlコマンドへの登録も行います。CentOS7の場合の手順なので、CentOS7以外を使用している方はServiceコマンドにより対応する必要があるので、ご注意ください。

「/usr/lib/systemd/system/postfix.service」が存在するか確認します。無い場合は、以下の手順で「postfix.service」を作成します。rootユーザで実行します。

[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service

以下の内容を記載します。

[Unit]
#説明
Description=Postfix
#実行前、実行後を制御
#Before=xxx.service
After=syslog.target network.target

[Service]
#ユーザ、グループ指定
User=root
Group=root
#起動したらステータスを起動中にする
Type=oneshot
RemainAfterExit=yes
#起動、停止、リロード
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload

[Install]
#runlevel3相当の設定
WantedBy=multi-user.target

次にsystemctlコマンドに登録します。

[root@hostname ~]# systemctl enable postfix
[root@hostname ~]# systemctl is-enabled postfix
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postfix
postfix.service                                enabled
[root@hostname ~]# systemctl daemon-reload

3. まとめ

Postfixをインストールした時に必要な最初の設定について記載させていただきました。

結構設定に苦戦したので、Postfixを構築する方は参考にしてみてください。

最後までご覧いただきありがとうございました。



■INFORMATION

INFORMATIONのトップページはこちらよりお願いいたします。


■PROFILE

プロフィールはこちらよりお願いいたします。


■お問い合わせ先

記事に関するお問い合わせはこちらよりお願いいたします。