From 1adedc6343044fedee76aaf928efccd45d32e15f Mon Sep 17 00:00:00 2001 From: Adam Cooke Date: Fri, 28 Apr 2017 16:26:59 +0100 Subject: [PATCH] support for smtp relay hosts --- config/postal.defaults.yml | 6 ++++++ lib/postal/smtp_sender.rb | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/config/postal.defaults.yml b/config/postal.defaults.yml index 8655cc6..d8ee756 100644 --- a/config/postal.defaults.yml +++ b/config/postal.defaults.yml @@ -63,6 +63,12 @@ smtp_server: ports: - 2525 +smtp_relays: + - + hostname: + port: 25 + ssl_mode: Auto + dns: mx_records: - mx.postal.example.com diff --git a/lib/postal/smtp_sender.rb b/lib/postal/smtp_sender.rb index 242fde9..af9d3f0 100644 --- a/lib/postal/smtp_sender.rb +++ b/lib/postal/smtp_sender.rb @@ -19,6 +19,10 @@ module Postal hostname = server.hostname port = server.port || 25 ssl_mode = server.ssl_mode + elsif server.is_a?(Hash) + hostname = server[:hostname] + port = server[:port] || 25 + ssl_mode = server[:ssl_mode] || 'Auto' else hostname = server port = 25 @@ -193,7 +197,7 @@ module Postal private def servers - @options[:servers] || @servers ||= begin + @options[:servers] || self.class.relay_hosts || @servers ||= begin mx_servers = [] Resolv::DNS.open do |dns| dns.timeouts = [10,5] @@ -248,5 +252,20 @@ module Postal Postal.config.dns.helo_hostname || Postal.config.dns.smtp_server_hostname || "localhost" end + def self.relay_hosts + hosts = Postal.config.smtp_relays.map do |relay| + if relay['hostname'].present? + { + :hostname => relay['hostname'], + :port => relay['port'], + :ssl_mode => relay['ssl_mode'] + } + else + nil + end + end.compact + hosts.empty? ? nil : hosts + end + end end