GCP連携SendGridで SMTP Settings の Forward Bounce Messages を有効にすると、配送できなかった時にSendGridがエラーメールを作って送ってくれるようになるが、そのエラーメールを Thunderbird で見ると、時刻が9時間ズレている。
問題のメールの Date ヘッダこんな感じ。
Date: Mon, 23 Nov 2020 07:18:17 UTC
最後のタイムゾーン「UTC」は一見正しそうだが、RFC 5322 を見ると間違ってるようにも見える。
zone = (FWS ( "+" / "-" ) 4DIGIT) / obs-zone
obs-zone = "UT" / "GMT" / ; Universal Time
; North American UT
; offsets
"EST" / "EDT" / ; Eastern: - 5/ - 4
"CST" / "CDT" / ; Central: - 6/ - 5
"MST" / "MDT" / ; Mountain: - 7/ - 6
"PST" / "PDT" / ; Pacific: - 8/ - 7
;
正しい書式はたぶんこっち。(最後はUTCじゃなくて+0000)
Date: Mon, 23 Nov 2020 07:18:17 +0000
SendGridに確認して本当に間違っているなら修正してもらうのが正しいのか?
ただGmailではズレる問題は発生しないようなので、Thunderbirdもズレないようになっててもよさそうな気もする。「パースエラーでタイムゾーン不明だけどUTCとみなして処理する」とか?
でもどっちも面倒なので、とりあえず自ドメインのメールサーバー(エックスサーバー)で受け取った時に「SendGridから届いたエラーメールのDateヘッダを修正する」対処にした。 .mailfilter / xfilter あたりが使えたのでこんな感じ。
if (/^Return-Path:.+no-reply@sendgrid\.net/:h)
{
xfilter "sed -re 's/^(Date:.+:[0-9]{2} )UTC/\1+0000/'"
}