Linux サーバーからメールを送信したい場合に、よく標準でインストールされているメールサーバーソフトの Postfix から Gmail を経由させて(これを「リレー」といいます)メールを送信するのが手軽で便利です。Gmail を経由させるには認証が必要なのですが、ここ最近 Gmail すなわち Google アカウントのセキュリティが強化されているため、以前のように単純なパスワード認証ではなく「アプリパスワード」を使った認証が必要になります。そこで今回は、Postfix から Gmail 経由でメールを送信するための設定手順をまとめてみました。
Gmail のアプリパスワードの生成
Gmail のアプリパスワードは、2段階認証を設定していないと作成できません。
もし2段階認証を設定していない場合は、Googleアカウントの管理画面 にて「セキュリティ> 2段階認証プロセス」をクリックして2段階認証を設定してください。
2段階認証の設定が終わったら、Google アカウントの管理画面 にて「セキュリティ> アプリパスワード」をクリックします。(2段階認証が設定されていないとアプリパスワードは表示されません)
パスワードなどで本人確認を行います。
アプリを選択で「メール」を選択します。
デバイスを選択で「その他(名前を入力)」を選択します。
適当なデバイス名を入力して「生成」をクリックします。
アプリパスワードが生成されます。4文字ごとにスペースが入って見えますが、実際には連続した16文字のパスワードです。
使い方にも書いてありますが、アプリパスワードを使えば Googleアカウントへの完全なアクセス権が付与されますので、通常のパスワードと同様に慎重に管理しましょう。使い方には「アプリパスワードをメモしないように」と書いてありますが、このアプリパスワードを Postfix に設定するため安全な方法で控えておいてください。
アプリパスワードはいつでも削除、生成することができます。
Postfix → Gmail リレー設定
続いて、Postfix から Gmail を経由(リレー)させてメールを送信できるように設定します。
・生成したアプリパスワードを元に、GmailのSMTP認証情報ファイルを作成します。
sudo vi /etc/postfix/gmail
例えば Gmailのアドレスが「sample@gmail.com」アプリパスワードが「abcdefghijklmnop」の場合、GmailのSMTP認証情報ファイルは以下のようになります。
/etc/postfix/gmail の例
アプリパスワードが書かれていますので、オーナーのみアクセスできるようにパーミッションを設定しておきます。
Postfix用のDBファイルを生成します。
・Postfixの設定ファイルの最終行に以下の設定を追加します。
sudo vi /etc/postfix/main.cf
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 が起動していない場合はエラーになります)
Postfix が起動していない場合は、以下のコマンドを実行して Postfix を起動し、自動起動を設定します。
メールが送信できることを確認します。「example@example.com」が送信先のメールアドレスになります。ご自分のメールアドレスなどに書き換えてください。
RHEL9 や CentOS9 には mail コマンドがありません。その場合は sendmail コマンドでメールを送信してください。
送信されたメールの送信元は、アプリパスワードを生成した Gmail のアドレスになります。
おわりに
メールの送信件数が多い場合や、サーバー上で稼働する Webサービスのユーザーなどに大切なメールを送信する場合は、SendGrid などのメール配信サービスの導入をオススメします。
コメント