Cent OS 9 で Postfixの設定

少し試したいことがあり、久しぶりにCent OS stream 9のシステムでPostfixを設定を試みたところ
かなり久しぶりの設定で忘れていることも多かったので備忘録替わりに書いておきます。

一般のメールアドレスにメールを送る場合、プロバイダ側でOutbound Port 25 Blockingの
設定が行われていたり、発信元不明なメールは拒否する設定になっています。
自前のメールサーバからメールを送信する際にはgoogle等のSubmission Portが使用可能な
外部smtpサーバを経由するように設定が必要です。

postfixのインストール

$ sudo dnf install  postfix

すでに sendmailなどが入っている場合は

$ sudo alternatives --config mta

で postfixを優先するように設定が必要です。

設定ファイルの書き換え

/etc/postfix/main.cf が設定ファイルです。

Server World様の設定を参考に以下の部分までを設定

以下は一部引用です。

# 95行目 : コメント解除してホスト名を指定
myhostname = mail.srv.world

# 102行目 : コメント解除してドメイン名を指定
mydomain = srv.world

# 118行目 : コメント解除
myorigin = $mydomain

# 135行目 : 変更
inet_interfaces = all

# 138行目 : もし IPv4 のみをリスンする場合は変更
inet_protocols = ipv4

# 183行目 : 追記
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 283行目 : コメント解除して自ネットワークを追記
mynetworks = 127.0.0.0/8, 192.168.1.0/24

# 438行目 : コメント解除して Maildir 形式へ移行
home_mailbox = Maildir/

disable_vrfy_command = yes

この後ろにさらに以下の設定を追加します。
smtp.gmail.com にメールを転送します。

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
smtp_sasl_mechanism_filter = plain

ここまで追記したら 保存しておきます。

gmail上でアプリ用パスワードを生成する

googleアカウントのセキュリティ設定 にて以下の部分を設定します。

  • 2段階認証を有効
  • アプリパスワードの追加

アプリパスワードでは アプリの選択 > メール  デバイスの選択 > host名 を指定します。

ホスト名は

hostname

コマンドにて確認できます。
またホスト名の変更は

sudo  hostnamectl set-hostname (希望のホスト名)

にて可能です。

設定すると、16桁のパスワードが生成されるので控えておきます。

パスワード情報

SASL(Simple Authentication and Security Layer)を使用します。

sudo dnf install cyrus-sasl-plain

パスワードファイルを作成します。
main.cfに追記した /etc/postfix/saslpass にパスワードを書き込みます。

sudo vi /etc/postfix/saslpass

先頭行に

[smtp.gmail.com]:587 ユーザ名@gmail.com:先ほど生成した16桁パスワード

を書き込み保存します。

またファイルの permissionを設定します。

sudo chown root:root /etc/postfix/saslpass
sudo chmod 600 /etc/postfix/saslpass
sudo postmap /etc/postfix/saslpass

postfix の起動

systemctl enable --now postfix
sudo firewall-cmd --add-service=smtp
sudo firewall-cmd --runtime-to-permanent

テスト送信

sendmail hoge@hoge.com \
From: hiroumauma@foo.jp \
To: hige@hoge.com \
Subject: test \
test test \
.

googleのアドレスから相手にメールが届いていれば成功です。

お疲れ様でした

postfixなどと連携したWEBアプリケーション等からのメール通知が可能になります。

コメントを追加する