Code in client.c implements single SMTP conversation. It doesn't close the message body descriptor out of carefulness: in case of extremely long MX records a single message body descriptor is re-used instead of obtaining new ones from the queue process potentially hundreds of times.
IMSG solves a different problem. I can't think of IMSG parallel of the above. However, it's perfectly possible that such protection is excessive. Best way to find out is to try attack smtpd with this protection disabled.
