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

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


■お問い合わせ先

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