email_in_authserv_id が設定されており、受信メールに結果なし(Authentication-Results: mx.example.com``; none`、RFC 8601 §2.2 の「no-result」形式)の一致する Authentication-Results ヘッダーが含まれている場合、投稿の作成が以下のエラーで失敗します:
NoMethodError: undefined method 'each' for nil
lib/email/authentication_results.rb:45:in 'block in Email::AuthenticationResults#calc_dmarc'
投稿は失われ、送信者には拒絶メールが送信されません。
原因: parse_header において、authres_payload の no_result 分岐が一致するため、resinfo_val は nil となり、parsed_resinfo は割り当てられません。結果として { authserv_id: "mx.example.com", resinfo: nil } となり、calc_dmarc が result[:resinfo].each を呼び出します。
発生条件: 一部の MTA は、チェックを実行しなかった場合に no-result 形式を追加します。例えば rspamd は、local_addrs からの未認証メール(ネットワーク内部から中継されたメールなど)に対してこれを行います。クラッシュは投稿が作成された場合(Email::Receiver#create_post → auth_res_action)のみ発生します。例えば見知らぬ人からのメールなど、以前に拒絶されたメールはそこには到達しません。
再現方法 (rails コンソール):
SiteSetting.email_in_authserv_id = "mx.example.com"
Email::AuthenticationResults.new(["mx.example.com; none"]).verdict
# => NoMethodError: undefined method 'each' for nil
修正提案: calc_dmarc 内で Array(result[:resinfo]).each do |resinfo| とするか、parse_header 内で parsed_resinfo = [] を設定してください。これにより、no-result ヘッダーはグレーとしてカウントされ、その意味と一致します。
ESR v2026.7.3 で確認され、同じ行は main にもまだ存在します。