Jani Nikula [off-list ref] wrote:
From the RFC nitpicking department, msg-id is allowed to contain CFWS
(comments and folding white space) outside the angle brackets, which
means you could have RFC compliant Message-ID header field:
Message-ID:
[off-list ref]
or
Message-ID: (comment)
[off-list ref]
or even worse, really.
The moral of the story is that you should always offload the header
parsing to some tool or library designed to do that.
It's a bit much for common cases with git-send-email and
reasonable MUAs, I think. I don't know if formail is commonly
installed, nowadays...
Fwiw, the code running lore uses something like this:
/^Message-ID:[ \t]*([^\n]*\r?\n # 1st line
# continuation lines:
(?:[^:\n]*?[ \t]+[^\n]*\r?\n)*)
/ismx
I'm fine with this non-trivial regexp being included with
GPL-2.0 code; but it could be too big for a one-liner *shrug*
... And <([^>]+)>/s to extract Message-IDs, but ISTR the code
behind lore doesn't handle spaces inside <> properly, but I'm
not sure if there's enough valid, non-spam messages with them...