Right now on PropertyChat and ZooChat I am filtering new user registrations based on the originating country of the registration request. Anyone registering from a small list of pre-approved countries is automatically approved, and there is a small list of automatically rejected countries as well.
Anyone else registering gets held for moderation. I look for certain flags which indicate they may not be legitimate. For example, the country their registration IP address is from not matching the location they state. Sometimes this is the result of genuine users using anonymous proxies, but other times it is an indication of spammers.
For people I'm not sure about, my policy right now is to leave them in the moderation queue for up to 30 days - if they contact me asking when their account will be approved, I generally automatically approve it. This also allows me to re-check their IP address a few days after they've registered to see if there are any spam source reports against them from other sites.
If I'm leaning towards approving them, I'll check after a few days whether they have accessed the site at any point since the initial registration. If they have - I'll approve them straight away. If they haven't ever accessed the site again, after 30 days I reject their account.
It's a rather manual process and lead more by instinct than anything else (and spammers do still slip through occasionally), but it's working quite well for us right now. At this point in time, I have 29 users in the approval queue on PropertyChat while ZooChat has only 1.
While I'm still running XF1.5, this hasn't been an issue - but I did note with concern the merged approval queue in XF2.0 and had thought I would need to address this because of the extended period that users end up in the queue.
However, this is certainly an edge case and I suspect I would be better off with some custom development (which I haven't looked into yet) or perhaps just changing my approach.
I did think that perhaps I could add a new user_state
along the lines of "pending_approval" which allows me to separate out those list of users who I'm not yet sure about into a new UI. I haven't yet investigated the ramifications of doing that.