This is a very interesting topic, specially regarding our architecture.
HD wallets can help to generate ‘n’ specific new keys, and derivate some specific to some user.
It would be possible to implement a handshake mechanism, where using theirs public chat keys they exchange dedicated keys to each other.
This handshake can happen from time to time, by request or automatically, increasing a nonce in the derivance of HD key for that specific user.
Having the root hd wallet key, the user can decrypt all history from all users it interacted.
I think this can be the default behavior, and once using ENS usernames would be very powerful UX for this authenticated channel!
For mailserver it should not make any difference.