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-1. Postfixのインストール
- 1-2. 起動確認
- 設定内容
- 2-1. 初期設定
- 2-2. OSユーザ、または、$alias_mapsで定義されていない場合拒否する
- 2-3. postfixのサブミッションポート設定
- 2-4. SASLの有効化
- 2-5. 起動確認
- 2-6. 自動起動設定
- まとめ
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
以下の通り修正します。
#
#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/
#
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
以下の通り修正します。
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
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」なので、ファイル名が似ているので注意してください。
以下の通り修正します。
#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
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
以下の通り修正します。
#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を構築する方は参考にしてみてください。
最後までご覧いただきありがとうございました。