AlmaLinux9.2にメールサーバのPostfixをインストール

さくらのVPSにAlmaLinux9.2をインストールした覚書です。

今回は、メールサーバである Postfix をインストールします。

メールサーバとしては、PostfixのほかにSendmailが有名どころとしてありますが、CentOS 7 以降でSendmailが非推奨になったため、メールサーバと言えばPostfix一択、のような状況です。

なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。

環境

実施日2023-09-08
サーバさくらのVPS 2G
OSAlmaLinux9.2
cat /etc/redhat-release
AlmaLinux release 9.2 (Turquoise Kodkod)

Postfixのインストール

dnfからインストールします。

dnf install postfix

確認

MTAの設定を確認

alternatives --display mta

バージョン

postconf |grep mail_version
postfix: fatal: parameter inet_interfaces: no local interface found for ::1

バージョンを確認したとき、エラーが出なければ良いのですが、今回は▲のように fatal が出てます。

fatal ・・・(省略)・・・ for ::1
なので、「::1」 IPv6 が無効っぽいです。

vi /etc/postfix/main.cf
inet_interfaces = localhost

localhost に設定されている場合は、hosts から切り替えます。

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
# ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

::1 に # を付けて無効にします。

# バージョン
postconf |grep mail_version
mail_version = 3.5.9
milter_macro_v = $mail_name $mail_version

自動起動設定と手動起動

# 起動する
systemctl start postfix

# 再起動する
systemctl restart postfix

# 停止する
systemctl stop postfix

# 自動起動に登録する
systemctl enable postfix

# 自動起動の状態を確認する
systemctl is-enabled postfix

設定変更

SMTPUTF8を無効にする

SMTPUTF8は送信先のメールサーバにもSMTPUTF8が対応していることを求めます。
つまり受け手側がSMTPUTF8に対応していないとメール送信に失敗します。
SMTPUTF8に対応する必要が無い場合は無効にしておく方法もあります。

vi /etc/postfix/main.cf

ファイルの末尾に下記を追記

smtputf8_enable = no

これで終わり?

サーバの使用目的として、メール通知のためにメールを送信するだけの場合はここまでで完了です。

例えば、OS(CRONなど)から発行されるメールが届くようにする、PHPなどプログラムからメールを送信する、です。

また、外部のパケットフィルタ機能もしくはfirewalldなどで、外部からメール送信に使うポート(SMTPなど)が塞がれていることは確認しておきます。

トラブル対応

postdrop: warning: unable to look up public/pickup: No such file or directory

PHPからメールを送信しようとしたら次のエラーが発生しました。

postdrop: warning: unable to look up public/pickup: No such file or directory
# 手動起動
systemctl start postfix

# 自動起動設定
systemctl enable postfix

postfix を起動するのを忘れてたようです。
ついでに自動起動に設定しておきます。