We have a client who insisted on having their Rails app set up with Oracle 
DB on a Red Hat Enterprise Linux server behind their VPN. This is not a 
setup we are very familiar with as we generally run DigitalOcean droplets 
with Ubuntu and use MySQL/PostgreSQL. Needless to say, this has caused a 
lot of problems, including the latest mystery that we've yet to solve. We 
have this app running on an Ubuntu staging server where everything works 
fine, but the copy running on the RHEL server will not deliver emails 
through ActionMailer.

We use Postmark as our delivery service, and so far we have ruled out: 
Postmark, the VPN, firewalls, the Postmark gem, and the Mail gem. I've 
written several test scripts to test each layer, and the failure is at the 
ActionMailer level. Here are the tests:

require 'postmark'

client = Postmark::ApiClient.new(ENV['API_TOKEN'])

client.deliver(
  from: 'Foo Bar <f...@bar.com>',
  to: 'Foo Bar <f...@bar.com>',
  subject: 'Testing Postmark',
  text_body: 'We want to know if Postmark works on the server'
)

# => Success. We received the email

api_token = 
FooBar::Application.config.action_mailer.postmark_settings[:api_key]

message = Mail.new do
  from    "Foo Bar <f...@bar.com>"
  to      "Foo Bar <f...@bar.com>"
  subject "Testing Mail+Postmark"
  body    "Testing the Mail gem."
end

message.delivery_method Mail::Postmark, {:api_key => api_token}
message.deliver

# => Success. We received the email

class TestActionMailer < ActionMailer::Base
  default from: 'f...@bar.com'

  def test_mail
    mail(
      to: 'f...@bar.com',
      subject: 'Test ActionMailer',
      body: 'Testing ActionMailer'
    )
  end
end

TestActionMailer.test_mail.deliver

# => On Ubuntu: Success. On RHEL: Silent Failure

There are no errors or anything. The app behaves exactly as though the 
email has been delivered, however, there are no emails received. We've 
wasted several days trying different things and we still can't figure it 
out.

Another possibly relevant detail is that when we initially set the server 
up, SELinux was giving Apache+Passenger trouble, so we set SELinux to 
permissive mode and then it worked. I don't know what else to try. Why 
would the Mail gem work but ActionMailer silently fail on only one 
particular machine?

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/f8ac5741-ffe5-4e3c-accc-3c3024841c56%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to