We are using an outgoing gateway to handle outgoing mails sents by our SmarterMail server.
I checked the log of our gateway by curiosity, and we have thousands of:
Jul 25 01:07:04 mta-gw haraka: [INFO] [-] [core] [outbound] Sending email as a transaction
Jul 25 01:07:04 mta-gw haraka: [INFO] [-] [core] [outbound] Adding missing Message-Id header
Jul 25 01:07:04 mta-gw haraka: [INFO] [-] [core] [outbound] Processing delivery for domain: xyzabc.com
That would make me think that when a mail is sent from a mail client,via SmarterMail's SMTP, if the message-id header is not generated by the mail client, SmarterMail won't add one.
Hopefully here our gateway adds one if it's missing so we don't have the message-id issue with Gmail.
It looks like Gmail recently reviewed their antispam checks and they are being more agressive on missing/non rfc compliant headers, also duplicate headers.
There is some discussions about it on the mailop mailing list:
For example it looks like Windows 10 mail app doesn't add the message-id header, so when relayed through SmarterMail they will likely missing a message-id.
The RFC though doesn't say that message-id is required but "SHOULD" be added. So somewhere Gmail is not following the RFC on this point by forcing mail to contain a message-id
On the other side it wouldn't hurt to add it if it's missing. Most of the MTA seems to do this according to some ppl