PostfixからGmail経由でメールを送信するための設定メモ

Linux
Linux
スポンサーリンク

Linux サーバーからメールを送信したい場合に、よく標準でインストールされているメールサーバーソフトの Postfix から Gmail を経由させて(これを「リレー」といいます)メールを送信するのが手軽で便利です。Gmail を経由させるには認証が必要なのですが、ここ最近 Gmail すなわち Google アカウントのセキュリティが強化されているため、以前のように単純なパスワード認証ではなく「アプリパスワード」を使った認証が必要になります。そこで今回は、Postfix から Gmail 経由でメールを送信するための設定手順をまとめてみました。

Gmail のアプリパスワードの生成

Gmail のアプリパスワードは、2段階認証を設定していないと作成できません。

もし2段階認証を設定していない場合は、Googleアカウントの管理画面 にて「セキュリティ> 2段階認証プロセス」をクリックして2段階認証を設定してください。

Googleアカウントの2段階認証プロセス

2段階認証の設定が終わったら、Google アカウントの管理画面 にて「セキュリティ> アプリパスワード」をクリックします。(2段階認証が設定されていないとアプリパスワードは表示されません)

Googleアカウントのアプリパスワード

パスワードなどで本人確認を行います。

Googleアカウントの本人確認

アプリを選択で「メール」を選択します。

アプリパスワードのアプリを選択

デバイスを選択で「その他(名前を入力)」を選択します。

アプリパスワードのデバイスを選択

適当なデバイス名を入力して「生成」をクリックします。

アプリパスワードのデバイス名の入力

アプリパスワードが生成されます。4文字ごとにスペースが入って見えますが、実際には連続した16文字のパスワードです。

使い方にも書いてありますが、アプリパスワードを使えば Googleアカウントへの完全なアクセス権が付与されますので、通常のパスワードと同様に慎重に管理しましょう。使い方には「アプリパスワードをメモしないように」と書いてありますが、このアプリパスワードを Postfix に設定するため安全な方法で控えておいてください。

生成されたアプリパスワード

アプリパスワードはいつでも削除、生成することができます。

アプリパスワードの管理画面

Postfix → Gmail リレー設定

続いて、Postfix から Gmail を経由(リレー)させてメールを送信できるように設定します。

・生成したアプリパスワードを元に、GmailのSMTP認証情報ファイルを作成します。
sudo vi /etc/postfix/gmail

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

例えば Gmailのアドレスが「sample@gmail.com」アプリパスワードが「abcdefghijklmnop」の場合、GmailのSMTP認証情報ファイルは以下のようになります。
/etc/postfix/gmail の例

[smtp.gmail.com]:587 sample@gmail.com:abcdefghijklmnop

アプリパスワードが書かれていますので、オーナーのみアクセスできるようにパーミッションを設定しておきます。

sudo chmod 600 /etc/postfix/gmail

Postfix用のDBファイルを生成します。

postmap /etc/postfix/gmail

・Postfixの設定ファイルの最終行に以下の設定を追加します。
sudo vi /etc/postfix/main.cf

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

追加した設定を反映させます。(Postfix が起動していない場合はエラーになります)

sudo systemctl reload postfix

Postfix が起動していない場合は、以下のコマンドを実行して Postfix を起動し、自動起動を設定します。

sudo systemctl enable --now postfix

メールが送信できることを確認します。「example@example.com」が送信先のメールアドレスになります。ご自分のメールアドレスなどに書き換えてください。

echo test | mail -s "test mail" example@example.com

RHEL9 や CentOS9 には mail コマンドがありません。その場合は sendmail コマンドでメールを送信してください。

echo test | sendmail example@example.com

送信されたメールの送信元は、アプリパスワードを生成した Gmail のアドレスになります。

おわりに

メールの送信件数が多い場合や、サーバー上で稼働する Webサービスのユーザーなどに大切なメールを送信する場合は、SendGrid などのメール配信サービスの導入をオススメします。

コメント

タイトルとURLをコピーしました