TIdMessage в Indy 10 преднамеренно пропускает заголовок «Message-Id» при кодировании электронной почты в сокет или TStream. Вам нужно будет использовать свойство TIdMessage.ExtraHeaders, например:
IdMessage1.MsgId := ...';
IdMessage.ExtraHeaders.Values['Message-Id'] := IdMessage1.MsgId;
EDIT:
В качестве продолжения этого - TIdMessage
теперь обновлено с логическими изменениями в том, как он обрабатывает заголовки "Message-ID" и "In-Reply-To":
http://indyproject.org/sockets/blogs/changelog/20160912.aspx
Свойство TIdMessage.MsgId
теперь генерирует заголовок «Message-ID» независимо от того, сохраняется ли электронное письмо, передается ли оно в потоковом режиме или передается. Поэтому вам больше не нужно использовать свойство ExtraHeaders
.