railsでMTAをG Suite SMTPに
普通のGmailだと、fromアドレスがどうしてもgmailのリレー先のアカウントになってしまったので。
まずはじめにG Suiteの管理者アカウントが必要。管理者アカウントで SMTP リレー: Gmail 以外の送信メールを Google 経由にする - G Suite 管理者 ヘルプ のサイトの手順を済ませる。 自分の環境はherokuで固定IPがない状態だったので、
- TLS
- 任意のアドレス
に設定した。
rails側の設定は、config/environments/production.rbに
config.action_mailer.smtp_settings = { :enable_starttls_auto => true, :address => 'smtp-relay.gmail.com', :port => '587', :domain => 'サイトのドメイン', :authentication => 'plain', :user_name => "管理者のemal", #gmail.comドメインでなくてよい :password => "管理者のパスワード" }
としておけば良いが、認証のユーザはどうやらG Suite管理者でなくてはならない模様。これで一旦は接続してリレーが開始されるが、googleから「重大なセキュリティ通知:ログインをブロックしました」と管理者宛てに通知がくることがある。認証が急に弾かれるようなことがあったらこれを疑おう。
この場合は、メール内のボタンを押下してブロックを解除し、2段階認証のアプリパスワードを
/environments/production.rbに
:password => "アプリパスワード"
と記述すればよい。または、安全性の低いアプリからの接続を許可すると解除され再度リレーの認証が開始される