action mailer settings and dkim signing

I am trying to figure out why this block of code in my environments/production.rb file is causing the dkim signing to break. I have email being sent from a rake task with my UserMailer class. It is derived from Devise::Mailer. If I have the action_mailer configuration block within the “config.after_initialize” the dkim signature does not go through. If I don’t have that line “after_initialize” the signature goes through. Can someone shed some light on this for me?

Here’s the code for my UserMailer class and the production.rb file.


require “#{Rails.root}/app/helpers/user_helper”
include UserHelper

class UserMailer < Devise::Mailer
helper :application # gives access to all helpers defined within application_helper.
include Devise::Controllers::UrlHelpers # Optional. eg. confirmation_url
default from: “Save The Sparkles”,
reply_to: “




config.action_mailer.asset_host = ‘

config.action_mailer.default_url_options = { host: ‘’ }
config.after_initialize do
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: ‘’,
port: 587,
domain: ‘’,
user_name: ENV[‘AWS_SES_USER’],
password: ENV[‘AWS_SES_PASS’],
authentication: :login,
enable_starttls_auto: true


The documentation for Rails::Railtie::Configuration describes after_initialize as the “last configurable block to run, called after frameworks initialize”. ActionMailer’s own initialization routine copies the values from config.action_mailer before the code above sets them. So the behavior you’ve described makes sense.

A better question is, why is having after_initialize here important? What’s the intent?

–Matt Jones