手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Postfix ローカル MTA 設定

目次に戻る

Overview

Postfix を使用してローカル MTA の設定を行います。これはローカル MTA が稼働していることを前提をしたアプリケーションやサービスからのメール(システムメール)を送信するためであり、本稿の例としては WordPress, unattended-upgrades 等が対象になります。

前提条件

  • こちらを参考にネットワーク設定が完了していること。
  • こちらを参考に APT のTUI 抑止設定が完了していること。
  • こちらを参考に自己署名証明書の設定が完了していること。
  • こちらを参考に自己署名証明書の信頼設定が完了していること。

インストール

Postfix と mailutils をインストールします。

myadmin@ubuntu:~$ sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install postfix mailutils

/etc/postfix/main.cf

/etc/postfix/main.cf を確認します。

デフォルト値

デフォルト値は下記の通りです。

myadmin@ubuntu:~$ grep -v -e '^\s*#' -e '^\s*$' /etc/postfix/main.cf | expand | tr -s [:space:] | sed 's/^\s/    /g'
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 3.6
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level = may
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, ubuntu, localhost.localdomain, , localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

設定値

設定例は下記の通りです。デフォルトの状態でもローカル MTA として動作可能ではあります。

myadmin@ubuntu:~$ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
myadmin@ubuntu:~$ sudo tee /etc/postfix/main.cf <<"EOF"
smtpd_banner = $myhostname
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 3.6
smtpd_tls_cert_file = /etc/my-ssl/certs/si1230.com.crt
smtpd_tls_key_file = /etc/my-ssl/private/si1230.com.key
smtpd_tls_security_level = may
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks defer_unauth_destination
myhostname = ubuntu.si1230.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all
mydomain = si1230.com
mua_client_restrictions =
mua_helo_restrictions =
mua_sender_restrictions =
EOF

変更箇所の設定値の説明は以下の通りです。

設定項目設定値説明
smtpd_banner$myhostnameセキュリティ観点から最小の情報にしています。SMTP の仕様上、$myhostname の設定は必要となるようですが、何かの文字列があれば一応問題ないようです。
smtpd_tls_cert_file/etc/my-ssl/certs/si1230.com.crtこちらで作成した証明書を指定しています。本稿の目的はローカル MTA であるため、あまり関係しませんが、便宜上設定を変更しています。
smtpd_tls_key_file/etc/my-ssl/private/si1230.com.keyこちらで作成した秘密鍵を指定しています。説明は証明書の内容と同じです。
smtpd_relay_restrictionspermit_mynetworks defer_unauth_destinationpermit_sasl_authenticated は不要な設定であるため、削除しています。
myhostnameubuntu.si1230.comホスト名を指定しています。
mydestination$myhostname, localhost必要最小限の設定に変更しています。
mynetworks127.0.0.0/8 [::1]/128必要最小限の設定に変更しています。
inet_interfacesloopback-onlyループバックネットワークインターフェースのみでメールを受け取ります。
mydomainsi1230.comドメイン名を指定しています。
mua_client_restrictionsnonepostconf の実行時に警告が出るため、設定しています。
mua_helo_restrictionsnone同上
mua_sender_restrictionsnone同上
変更箇所の説明

設定の有効化

設定を有効化します。

myadmin@ubuntu:~$ sudo systemctl restart postfix.service && systemctl status postfix.service

メールの送信方法

mail コマンドでの送信例は下記の通りです。mail コマンドは Postfix の myorigin = $myhostname は参照されず username@hostname となります。

myadmin@ubuntu:~$ echo "Email sending test (body)" | mail -s "Email sending test (title)" myadmin@si1230.com

目次に戻る

Ubuntu 22.04 Postfix ローカル MTA 設定

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る