Ubuntu 24.04 メールサーバー Postfixをインストールする
環境
Ubuntu 24.04
概要
Postfix をインストールして SMTP サーバーを構築します。SMTP は [25/TCP] を使用します。
1.メール不正中継防止に、必要なように Postfix を設定します。
# apt -y install postfix sasl2-bin
# 手動設定するため [No Configuration] を選択
+------+ Postfix Configuration +-------+
| General type of mail configuration: |
| |
| No configuration |
| Internet Site |
| Internet with smarthost |
| Satellite system |
| Local only |
| |
| |
| <Ok> <Cancel> |
| |
+--------------------------------------+
# 手動設定するため [No Configuration] を選択
+------+ Postfix Configuration +-------+
| General type of mail configuration: |
| |
| No configuration |
| Internet Site |
| Internet with smarthost |
| Satellite system |
| Local only |
| |
| |
| <Ok> <Cancel> |
| |
+--------------------------------------+
# 手動設定するため [No Configuration] を選択 +------+ Postfix Configuration +-------+ | General type of mail configuration: | | | | No configuration | | Internet Site | | Internet with smarthost | | Satellite system | | Local only | | | | | | <Ok> <Cancel> | | | +--------------------------------------+
# cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf
main.cfを修正します
# vi /etc/postfix/main.cf
# 82行目 : コメント解除
mail_owner = postfix
# 98行目 : コメント解除してホスト名指定
myhostname = mail.arkgame.com
# 106行目 : コメント解除してドメイン名指定
mydomain = arkgame.com
# 127行目 : コメント解除
myorigin = $mydomain
# 141行目 : コメント解除
inet_interfaces = all
# 189行目 : コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 232行目 : コメント解除
local_recipient_maps = unix:passwd.byname $alias_maps
# 277行目 : コメント解除
arknetworks_style = subnet
# 294行目 : 自ネットワーク追記
arknetworks = 127.0.0.0/8, 10.0.0.0/24
# 416行目 : コメント解除
alias_maps = hash:/etc/aliases
# 427行目 : コメント解除
alias_database = hash:/etc/aliases
# 449行目 : コメント解除
home_mailbox = Maildir/
# 585行目 : コメントにしてその下に追記
# SMTP ソフトウェアの種類やバージョンは非表示にする
#smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_banner = $myhostname ESMTP
# 659行目 : 追記
sendmail_path = /usr/sbin/postfix
# 664行目 : 追記
newaliases_path = /usr/bin/newaliases
# 669行目 : 追記
mailq_path = /usr/bin/mailq
# 675行目 : 追記
setgid_group = postdrop
# 679行目 : コメント化
#html_directory =
# 683行目 : コメント化
#manpage_directory =
# 688行目 : コメント化
#sample_directory =
# 692行目 : コメント化
#readme_directory =
# 693行目 : IPv6 もリスンする場合は [all] に変更
inet_protocols = ipv4
# 82行目 : コメント解除
mail_owner = postfix
# 98行目 : コメント解除してホスト名指定
myhostname = mail.arkgame.com
# 106行目 : コメント解除してドメイン名指定
mydomain = arkgame.com
# 127行目 : コメント解除
myorigin = $mydomain
# 141行目 : コメント解除
inet_interfaces = all
# 189行目 : コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 232行目 : コメント解除
local_recipient_maps = unix:passwd.byname $alias_maps
# 277行目 : コメント解除
arknetworks_style = subnet
# 294行目 : 自ネットワーク追記
arknetworks = 127.0.0.0/8, 10.0.0.0/24
# 416行目 : コメント解除
alias_maps = hash:/etc/aliases
# 427行目 : コメント解除
alias_database = hash:/etc/aliases
# 449行目 : コメント解除
home_mailbox = Maildir/
# 585行目 : コメントにしてその下に追記
# SMTP ソフトウェアの種類やバージョンは非表示にする
#smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_banner = $myhostname ESMTP
# 659行目 : 追記
sendmail_path = /usr/sbin/postfix
# 664行目 : 追記
newaliases_path = /usr/bin/newaliases
# 669行目 : 追記
mailq_path = /usr/bin/mailq
# 675行目 : 追記
setgid_group = postdrop
# 679行目 : コメント化
#html_directory =
# 683行目 : コメント化
#manpage_directory =
# 688行目 : コメント化
#sample_directory =
# 692行目 : コメント化
#readme_directory =
# 693行目 : IPv6 もリスンする場合は [all] に変更
inet_protocols = ipv4
# 82行目 : コメント解除 mail_owner = postfix # 98行目 : コメント解除してホスト名指定 myhostname = mail.arkgame.com # 106行目 : コメント解除してドメイン名指定 mydomain = arkgame.com # 127行目 : コメント解除 myorigin = $mydomain # 141行目 : コメント解除 inet_interfaces = all # 189行目 : コメント解除 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 232行目 : コメント解除 local_recipient_maps = unix:passwd.byname $alias_maps # 277行目 : コメント解除 arknetworks_style = subnet # 294行目 : 自ネットワーク追記 arknetworks = 127.0.0.0/8, 10.0.0.0/24 # 416行目 : コメント解除 alias_maps = hash:/etc/aliases # 427行目 : コメント解除 alias_database = hash:/etc/aliases # 449行目 : コメント解除 home_mailbox = Maildir/ # 585行目 : コメントにしてその下に追記 # SMTP ソフトウェアの種類やバージョンは非表示にする #smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_banner = $myhostname ESMTP # 659行目 : 追記 sendmail_path = /usr/sbin/postfix # 664行目 : 追記 newaliases_path = /usr/bin/newaliases # 669行目 : 追記 mailq_path = /usr/bin/mailq # 675行目 : 追記 setgid_group = postdrop # 679行目 : コメント化 #html_directory = # 683行目 : コメント化 #manpage_directory = # 688行目 : コメント化 #sample_directory = # 692行目 : コメント化 #readme_directory = # 693行目 : IPv6 もリスンする場合は [all] に変更 inet_protocols = ipv4
# 以下 最終行へ追記
# SMTP VRFY コマンドは無効にする
disable_vrfy_command = yes
# クライアントに対して HELO コマンドを要求する
smtpd_helo_required = yes
# 1 メールのサイズを制限する
# 10M バイト
message_size_limit = 10240000
# SMTP-Auth の設定
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_arknetworks,
permit_sasl_authenticated,
reject_unauth_destination
# SMTP-Auth の設定
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_arknetworks,
permit_sasl_authenticated,
reject_unauth_destination
# SMTP-Auth の設定 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_arknetworks, permit_sasl_authenticated, reject_unauth_destination
# newaliases
# systemctl restart postfix
2.必要に応じて Postfix に以下の設定を追加します。
設定することで、多くのスパムメールを拒否することができます。
以下は、自身の SMTP サーバーが特定の SMTP サーバーとしかやり取りをしない等、
使用方法が限定的な場合に限って設定します。
# vi /etc/postfix/main.cf
# 最終行に追記
# 送信元クライアントホストの DNS の正引きと逆引きが一致しない場合は接続要求を拒否する
smtpd_client_restrictions = permit_arknetworks, reject_unknown_client_hostname, permit
# FROM に設定されている送信者アドレスのドメインが DNS 登録にない または
# FQDN で登録されていない場合は接続要求を拒否する
smtpd_sender_restrictions = permit_arknetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
# HELO コマンドを受信した際に 接続元ホスト名が DNS に登録されていない または
# FQDN で登録されていない場合は接続要求を拒否する
smtpd_helo_restrictions = permit_arknetworks, reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, permit
# 最終行に追記
# 送信元クライアントホストの DNS の正引きと逆引きが一致しない場合は接続要求を拒否する
smtpd_client_restrictions = permit_arknetworks, reject_unknown_client_hostname, permit
# FROM に設定されている送信者アドレスのドメインが DNS 登録にない または
# FQDN で登録されていない場合は接続要求を拒否する
smtpd_sender_restrictions = permit_arknetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
# HELO コマンドを受信した際に 接続元ホスト名が DNS に登録されていない または
# FQDN で登録されていない場合は接続要求を拒否する
smtpd_helo_restrictions = permit_arknetworks, reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, permit
# 最終行に追記 # 送信元クライアントホストの DNS の正引きと逆引きが一致しない場合は接続要求を拒否する smtpd_client_restrictions = permit_arknetworks, reject_unknown_client_hostname, permit # FROM に設定されている送信者アドレスのドメインが DNS 登録にない または # FQDN で登録されていない場合は接続要求を拒否する smtpd_sender_restrictions = permit_arknetworks, reject_unknown_sender_domain, reject_non_fqdn_sender # HELO コマンドを受信した際に 接続元ホスト名が DNS に登録されていない または # FQDN で登録されていない場合は接続要求を拒否する smtpd_helo_restrictions = permit_arknetworks, reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, permit
postfixを再起動します
# systemctl restart postfix