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 => "アプリパスワード"

と記述すればよい。または、安全性の低いアプリからの接続を許可すると解除され再度リレーの認証が開始される