Don't filter by content, filter by graph connections. If the user doesn't have prior authorization to contact, just drop the message. Everyone can set their delivery limit to n connections. It gets hard for spammers to gain trust into the social graph. They are rare limited by the real people they can fool.

If you follow an interesting fool that keeps following bots or spammers you can just black list connections through them. That way you get to keep your friend but be immune to his foolish recommendations.

Reply to this note

Please Login to reply.

Discussion

That sounds good but it's not really possible to implement. If you're following 1000 people and each of these follow 1000 people you would have to connect to relays and say: "give me replies to note x only authored by one of these 1000000 pubkeys", which would cause the relay to burn and die.

Other way around. You just ask for the replies and it just sends the ones it hasn't filtered for being out of network, your client can keep an updated white-list to do one last step of filtering.

For DMs, (which haven't gotten spammy for me yet..) the sender can send it with a permission slip signed by the recipient. Any relay seeing a message without the signed permission gets dropped. Distribution of said permission is admittedly a problem. But you might be able to chain it. I send permission to my follows to message me up to n=3 then their follows can request it and send it along with the intermediaries permission to contact. Kind of like tls cert chains I guess.

That kinda works, but it's very inefficient. You may end up downloading thousands of spam messages.

This is what I'm doing in Nostur and its been working great so far