(Отказ от ответственности: я не программист Ruby)
Мне кажется, это особенно неприятное поведение в библиотеке mail, которую использует Discourse. Вот функция header_value:
Насколько я могу судить, @message.header[name] вызывает этот метод:
https://www.rubydoc.info/github/mikel/mail/Mail%2FHeader:[]
Согласно RFC, многие поля могут встречаться более одного раза; мы вернем строку со значением, если заголовок только один, или, если совпадающих заголовков больше одного, вернем массив значений в порядке их появления в заголовке сверху вниз.
Discourse автоматически устанавливает заголовок Precedence, поэтому, поскольку вы также добавляете его через настройку email_custom_headers, теперь есть два заголовка Precedence, и @message.header["Precedence"] возвращает массив вместо строки.
Мне кажется, эта ошибка будет возникать каждый раз, когда в email_custom_headers содержится заголовок, который уже есть в объекте сообщения.