(Descargo de responsabilidad: no soy programador de ruby)
Creo que este es un comportamiento particularmente desagradable en la biblioteca de correo que está utilizando Discourse. Aquí está la función header_value:
Por lo que puedo decir, @message.header[name] está llamando a este método:
https://www.rubydoc.info/github/mikel/mail/Mail%2FHeader:[]
Según RFC, muchos campos pueden aparecer más de una vez, devolveremos una cadena del valor si solo hay un encabezado, o si hay más de un encabezado coincidente, devolveremos una matriz de valores en el orden en que aparecen en el encabezado, ordenados de arriba a abajo.
Discourse establece automáticamente un encabezado Precedence, por lo que, dado que usted también está agregando uno a través de la configuración email_custom_headers, ahora hay dos encabezados Precedence, y @message.header["Precedence"] está devolviendo una matriz en lugar de una cadena.
Creo que este error se activará cada vez que email_custom_headers contenga un encabezado que ya existe en el objeto del mensaje.