Skip to content

Permit symbols when loading mail_room.yml

What does this MR do?

The YAML.safe_load changes made by !58042 (merged) broke the diagnostic rake task gitlab:incoming_email:check due to use of symbols for keys inside the ERB template file config/mail_room.yml.

This change adds an exclusion permitting loading of Symbol classes when parsing the YAML syntax for this specific file.

Fixes #331683 (closed)

Screenshots (strongly suggested)

Error without the fix:

Checking Incoming Email ... 
Incoming Email: ... Checking Reply by email ... 
IMAP server credentials are correct? ... Exception: Tried to load unspecified class: Symbol 

Manual rails console test verifying the change:

irb(main):019:0> YAML.safe_load(ERB.new(File.read("/opt/gitlab/embedded/service/gitlab-rails/config/mail_room.yml")).result)
Traceback (most recent call last):
        1: from (irb):19
Psych::DisallowedClass (Tried to load unspecified class: Symbol)

irb(main):021:0> YAML.safe_load(ERB.new(File.read("/opt/gitlab/embedded/service/gitlab-rails/config/mail_room.yml")).result, [Symbol])
=> {:mailboxes=>[{:host=>"gitlab.example.com", :port=>143, :ssl=>false, :start_tls=>false, :email=>"incoming", :password=>"[REDACTED]", :idle_timeout=>60, :logger=>{:log_path=>"/var/log/gitlab/mailroom/mail_room_json.log"}, :name=>"inbox", :delete_after_delivery=>true, :expunge_deleted=>true, :inbox_method=>"imap", :delivery_method=>"sidekiq", :delivery_options=>{:redis_url=>"unix:/var/opt/gitlab/redis/redis.socket", :namespace=>"resque:gitlab", :queue=>"email_receiver", :worker=>"EmailReceiverWorker"}, :arbitration_method=>"redis", :arbitration_options=>{:redis_url=>"unix:/var/opt/gitlab/redis/redis.socket", :namespace=>"mail_room:gitlab"}}]}

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Edited by Harsh Chouraria

Merge request reports