How would you derive the address? Something like event.pubkey = publicKey(KDF(messageKey))? I imagine "mailbox address" would need to be the signer's public key so others can't spam the mailbox.
Keychat's receiving addresses are created using the DH ratchet; each time the DH ratchet turns, the receiving address is updated accordingly. Are you referring to the scenario where, after two people have used a receiving address, others send spam messages to that user's receiving address? Once there is a new address, the chatting parties no longer monitor the previously used receiving address. Additionally, Keychat uses ecash sat postage stamps.