Last active 1712838313

With Zammad 6.2 existing configurations for Email channels and i-doit by default have ssl verification disabled. This code snippet activates SSL verification. This change ONLY affects existing, update installations.

Revision d4899695c3daf2a109ca8eb402ffecc31ddd83ab

enforce_ssl_verify_true.rb Raw
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
5Channel.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
7end.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 'verify-external-smtp-sending@discard.zammad.org',
26 'Zammad Probe Outbound',
27 )
28 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]}"
29
30 if outbound_result[:result] == 'ok'
31 c.options['outbound'][:options][:ssl_verify] = true
32 c.save!
33 else
34 puts " - DEBUG - response: #{outbound_result[:message]}; human message: #{outbound_result[:message_human]}; possibly invalid fields: #{outbound_result[:invalid_field]}"
35 c.reload
36 end
37 end
38end; nil
39
40# Enable SSL certificate verification for i-doit integration
41# (MAY break i-doit functionality if certificates are invalid!)
42
43config = Setting.get('idoit_config')
44unless config.blank? ; then Setting.set('idoit_config', config.merge('verify_ssl' => true)) end
45
optional_enable_es_ssl_verification.rb Raw
1# Side note: Elasticsearch has an option to verify SSL as well. This might be an edge case.
2# By default these certificates are self-signed and thus you may not want to run this at all
3Setting.set('es_ssl_verify', true)