2023年6月17日土曜日

PostfixからGmailを経由してメール送信する手順

以前、OP25B (Outbound Port 25 Blocking)環境におけるPostfixから外部にメール送信を行う手順を記載した。

自宅検証環境は、上記手順にてインターネットサービスプロバイダーのメールサーバを経由して、監視通知メールなどの送信を行っている。しかし、最近は原因が不明だが、多くのメールがロストするという事象が発生しており、メール通知が正常にされないとう状況となっていた。

そこで、Gmailを経由してメールを送信する方針に切り替えることにした。本記事では、自宅のPostfixからGmailを経由してメール送信するための設定手順を記載する。

設定手順

1. Gmailアカウントの管理画面に移動

Googleのアカウントにログインした状態で、ホーム画面から右上のメニューを開き、「アカウント」を選択しアカウント管理画面を表示する。


2. Gmailの2段階認証プロセスを有効にする

アカウント管理画面の右メニューから、「セキュリティ」を選択し、2段階認証プロセスが有効になっていることを確認する。もし有効になっていない場合は、アプリパスワードの作成ができないため、有効化をすること(2段階認証プロセスの有効化手順は、本記事では割愛する)。

3. Gmailのアプリパスワードを作成

2段階認証プロセスが「セキュリティ」を選択し、「2段階認証プロセス」の設定画面に移動する。
※画面遷移時にパスワード確認を求められる。

「2段階認証プロセス」の設定画面の一番下に「アプリパスワード」が存在するので選択する。

「アプリパスワード」画面では、「アプリを選択」で「その他 (名前を入力)」を選択する。名前はあくまでも識別に用いるものであるため任意の名称で問題ないが、今回はPostfixという名前を付けた。

作成後、パスワードが表示されるので、メモ帳などで控えておくこと。

4. main.cfを設定

設定変更箇所を以下に抜粋する。GmailのSMTP接続先としてsmtp.gmail.comを指定し、SASL認証を有効化する。

# 受信許可ネットワークの設定
mynetworks = 127.0.0.0/8, 192.168.0.0/16

# 受付インタフェースを修正
inet_interfaces = all
inet_protocols = ipv4

# メールのリレー先サーバを指定
relayhost = [smtp.gmail.com]:587

# SMTP認証設定 (最下行に追加)
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_password
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain,login

5. パスワードファイルを作成

SASL認証に用いる認証情報をsmtp_passwordファイルに記載する。本ファイルは、以下の構文で記載する。

[smtp.gmail.com]:587 <Gmailアドレス>:<アプリパスワード>

以下記載例となる。

[smtp.gmail.com]:587 hoge@gmail.com:XXXXXXXX

パスワード情報が含まれるため、rootのみ読み書きできるように権限設定を行ったのち、postmapコマンドでhash化したDBファイルを作成する。

# chmod 600 /etc/postfix/smtp_password
# postmap /etc/postfix/smtp_password
# ls -l /etc/postfix/smtp_password*
-rw------- 1 root root    58  8月 16 06:12 /etc/postfix/smtp_password
-rw------- 1 root root 12288  8月 16 06:12 /etc/postfix/smtp_password.db

6. Postfixの設定反映

最後にPostfixを再起動し、設定を反映する。

# systemctl restart postfix

7, 動作確認

構築したPostfixからGmailを経由してメールが送信できることを動作確認してみよう。

今回はcurlを使って、以下のように送信テストを行った。

( echo "helo test.local"
echo "mail from: <zabbix@test.local>"
echo "rcpt to: <hoge@gmail.com>"
echo "data"
echo "From: zabbix@test.local"
echo "To: hoge@gmail.com"
echo "Subject: test mail"
echo "テストメール"
echo ""
echo "."
echo "quit"
) | curl -v telnet://[メールサーバのIPアドレス]:[ポート番号]

実際受け取ったメールは以下の通り。

本設定にて送信されたメールは、FromのアドレスがGmailのアドレスに変換される点に注意すること。変換前のFromアドレスは、メールのX-Google-Original-Fromというヘッダーに記載されるため、メールのソースを見れば確認可能となる。

メールのソース抜粋

From: hoge@gmail.com
X-Google-Original-From: <zabbix@test.local>
To: <宛先アドレス>

以上で、自宅のPostfixからGmailを経由してメール送信するための設定手順は完了となる。

0 件のコメント:

コメントを投稿

人気の投稿