Email or messaging on top of IPFS?

Has IPMail this been discussed yet? I cannot find any thread on it, so here are my thoughts:

With the introduction of pubsub, instant messaging could be introduced with IPFS. The following issues would need to be resolved, however:

Addressing, profiles, user preferences…

People would need an address or handle. How could that be done? It could just be a file with the public key, which contains information about the user, how would one guarantee unique handles? Maybe using IPNS?

This however leads to the next problem


How would one find users? Say we use IPNS, would it be possible to simply scan it for entries starting with “@”?

Once users know of each other, how to handle…


Depending on the user’s preferences, they would allow messages from untrusted (or not), but how would the delivery look like? Maybe writing the message under /@<to>/@<from>/<timestamp> with the encrypted contents of the message.

That brings us to the next issue


Under the proposed scheme, everybody would know who’s communicating with who and at what time, but not what was said. Only slightly better than email. A better form of message might have to be chosen


How would one enforce the preference of who can message who? One always has to consider the amount of fun the hacker called 4chan could have writing a script that dumps the entire contents of their clop folder into your mailbox…

This could be resolved by the client simply ignoring files deposited in the mail coming from unknown people.

Furthermore, would simply encrypting the message be enough? If multiple people send the same message to a user, it would have the same hash. Would a salt need to be used?

Group chats

I assume groups chats could just be a different destination, say an address prefixed by # containing a file with information about the members of the group. That however leads us again to privacy. Not everybody should know who belongs to which group, but how to keep that information private?
An eventual solution might be encryption using all the public keys of the people in the group. That leads us however to

Group admin rights

How would one enforce for example that only the admin may change the group name, members and super spiffy group image? Would one have to go through the whole file history, following who was given the right to change the file and only accept pointers/versions (signed by those members) to the file?

Backwards compatibility

How would one create an email address usable by other email services? I suppose an IPMail gate could be done. The problem with gates however is that one must design the protocol well enough to allow people not to trust the gate, yet still use it. Since email is inherently insecure, that point could however be moot and all non IPFS email should be considered insecure.

I look forward to your input.

P.S I can’t add tags, sorry…