| 1 | # Enables existing Email channels to verify SSL certificates
|
| 2 | # (Below command PROBES inbound and outbound and only activates ssl verification if true!)
|
| 3 | # Has been enhanced with the help of rolfschmidt
|
| 4 |
|
| 5 | Channel.where(area: 'Email::Account', active: true).all.select do |c|
|
| 6 | c.options.dig('inbound', 'options', 'ssl_verify') == false || c.options.dig('outbound', 'options', 'ssl_verify') == false
|
| 7 | end.each do |c|
|
| 8 | if %[imap smtp pop3].include?(c.options.dig('inbound', 'adapter')) && c.options.dig('inbound', 'options', 'ssl_verify') == false
|
| 9 | c.options['inbound']['options']['ssl_verify'] = true
|
| 10 | inbound_result = EmailHelper::Probe.inbound(c.options['inbound'])
|
| 11 | puts "INBOUND | channel #{c.id} (#{c.options.dig('inbound', 'options', 'host')}, #{c.options.dig('inbound', 'options', 'user')}) | try SSL verify true, RESULT: #{inbound_result[:result]}"
|
| 12 |
|
| 13 | if inbound_result[:result] == 'ok'
|
| 14 | c.options['inbound'][:options][:ssl_verify] = true
|
| 15 | c.save!
|
| 16 | else
|
| 17 | puts " - DEBUG - response: #{inbound_result[:message]}; human message: #{inbound_result[:message_human]}; possibly invalid fields: #{inbound_result[:invalid_field]}"
|
| 18 | c.reload
|
| 19 | end
|
| 20 | end
|
| 21 | if %[imap smtp pop3].include?(c.options.dig('inbound', 'adapter')) && c.options.dig('outbound', 'options', 'ssl_verify') == false
|
| 22 | c.options['outbound']['options']['ssl_verify'] = true
|
| 23 | outbound_result = EmailHelper::Probe.outbound(
|
| 24 | c.options['outbound'],
|
| 25 | EmailAddress.where(channel_id: c.id).first.email,
|
| 26 | )
|
| 27 | puts "OUTBOUND | channel #{c.id} (#{c.options.dig('outbound', 'options', 'host')}, #{c.options.dig('outbound', 'options', 'user')}) | try SSL verify true, RESULT: #{outbound_result[:result]}"
|
| 28 |
|
| 29 | if outbound_result[:result] == 'ok'
|
| 30 | c.options['outbound'][:options][:ssl_verify] = true
|
| 31 | c.save!
|
| 32 | else
|
| 33 | puts " - DEBUG - response: #{outbound_result[:message]}; human message: #{outbound_result[:message_human]}; possibly invalid fields: #{outbound_result[:invalid_field]}"
|
| 34 | c.reload
|
| 35 | end
|
| 36 | end
|
| 37 | end; nil
|
| 38 |
|