zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【GWS】SMTPサーバー:smtp.gmail.com を利用したメール送信

【概要】

1)自前で運用しているツール(BitwardenとかMattermostとか)のシステムメール送信を、サーバ腹持ちのSMTPサーバ(Postfixとか)ではなくsmtp.gmail.comを利用して送信したい。
2)送信時のfromアドレスがGWSのユーザ名になってしまうので、no-reply@からの送信としたい。

【やったこと】

1)アプリパスワードの作成

SMTPを利用するGoogleアカウント(hogehoge@example.com)にて
[Google アカウントを管理]-[セキュリティ]-[アプリパスワード]で
サービス名を入力して「生成」→16桁の文字列が得られます。
メール送信だけであれば、

で送信可能ですが、このまま使うとメール送信時にhogehoge@example.comからの送信となってしまう(※)ため、よくあるno-reply@example.comからの送信とするため以下の作業を追加で行いました。

※各アプリケーションのシステムメールの設定でReplyToAddressなどにno-reply@example.comを設定すると、メールヘッダのX-Google-Original-From にno-reply@example.comが入って届くようになりますが、この時点ではメールのFromはhogehoge@example.comのままです。

2)GWS管理アカウントでSMTP利用ユーザに対し「予備のメールアドレス」を追加

AdminユーザでGoogleWorkspaceを開き、「予備のメールアドレスを追加」
でユーザー(今回はhogehoge@example.com)を指定して続行

今回は予備のメールとして
no-reply@example.com
を登録。

3)SMTP利用ユーザ自身のアカウントに予備のメールアドレスを「他のメールアドレスを追加」として追加する

ユーザー(hogehoge@example.com)のGmailの設定ページに行き、
「アカウント」タブのところで[他のメールアドレスを追加]として上記で追加した
no-reply@example.com
を追加します(この時名前はブランクとしています。また「エイリアスとして扱います」はONのままとします)

これで送信されたメールのFromがno-reply@example.comとなりました。

[アプリケーション側設定例]

■Bitwarden
global.override.env

globalSettings__mail__replyToEmail=no-reply@example.com
globalSettings__mail__smtp__host=smtp.gmail.com
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__username=hogehoge@example.com
globalSettings__mail__smtp__password=<アプリパスワード>

■Mattermost
config.json

"FeedbackEmail": "no-reply@example.com",
"ReplyToAddress": "no-reply@example.com",
"FeedbackOrganization": "",
"EnableSMTPAuth": true,
"SMTPUsername": "hogehoge@example.com",
"SMTPPassword": "<アプリパスワード>",
"SMTPServer": "smtp.gmail.com",
"SMTPPort": "587",
"SMTPServerTimeout": 10,
"ConnectionSecurity": "STARTTLS",

■事後的なメリット

hotehoge@example.comアカウントのGmail[送信済み]に各種システムメールの送信ログがまとめて入るため、管理が簡単になりました。