Как пропустить проверку SPF в геме griddler-sendgrid?

Я использую gem 'griddler' с gem 'griddler-sendgrid' в своем приложении ruby ​​on rails для входящей почты.

На промежуточном сервере он работает нормально, но возникает проблема с рабочим сервером. В моей конфигурации нет проблем, я подтвердил это sendgrid support, Они сказали мне использовать только DKIM validation и удалить SPF check из проверок.

Я проверил оба камня для этого, но не нашел ничего подходящего для этого.

Вот мои детали конфигурации драгоценного камня:

рубин '2.2.3'

драгоценный камень "рельсы", "4.1.2"

gem 'griddler', '1.4.0'

gem 'griddler-sendgrid', '1.0.0'

Может кто-нибудь предложить мне, как я могу пропустить проверку проверки SPF в gem 'griddler-sendgrid'?

Заранее спасибо!

1 ответ

Пробовал получать emails_controller.rb с github?

https://github.com/thoughtbot/griddler

"исправить ArgumentError с помощью verify_authenticity_token в Rails API"

я добавил protect_from_forgery with: :null_session

Я думаю, что null_session должен использоваться в контроллерах API без использования для сессии. Он обеспечивает пустой сеанс во время запроса.

https://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html

В папке контроллеров griddler добавьте новый файл из github Griddler или попробуйте код ниже.

/controllers/griddler/emails_controller.rb

class Griddler::EmailsController < ActionController::Base

  skip_before_action :verify_authenticity_token, raise: false
  protect_from_forgery with: :null_session

  def create
    normalized_params.each do |p|
      process_email email_class.new(p)
    end

    head :ok
  end

  private

  delegate :processor_class, :email_class, :processor_method, :email_service, to: :griddler_configuration

  private :processor_class, :email_class, :processor_method, :email_service

  def normalized_params
    Array.wrap(email_service.normalize_params(params))
  end

  def process_email(email)
    processor_class.new(email).public_send(processor_method)
  end

  def griddler_configuration
    Griddler.configuration
  end
end

Не полностью уверен в целом решении, но надеюсь, что это поможет получить больше направления.

Другие вопросы по тегам