In the less than three weeks I have been a member, I have encountered two "people" that have joined and then started posting their crap to thread after thread after thread. I quickly reported them both times and, not surprisingly, the spammer continued making a lot of posts for some time afterward. That is NOT a criticism of the moderators since it simply takes time for any report to the moderators to actually reach a moderator and for the mod to review the situation and act. So, really, I am not complaining about any lack of response from the moderators at all.
What I am suggesting, though, is that methods of further throttle this kind of activity be adopted, even though I know that achieving a balance so that legitimate users don't get caught up in the trap is going to be easier said than done. I'm sure that you have considered approaches before and I wouldn't be surprised if what I throw out hasn't already been considered and found wanting. But, who knows, maybe I will say something that will spark an idea that will work great.
First off, why do I think it is a problem worth even addressing? In other words, isn't it reasonably easy to simply ignore two to five people a month doing this sort of stuff? Yes and no. Each spammer that does it contaminates a lot of threads, both ones that I monitor (am subscribed to) and ones that I've perhaps read but have not subscribed but am interested in how the discussion goes. I also regularly check to see which threads have recent activity in case a thread I've never looked pops up and is worth looking at. A spammer wreaks havoc with all of this and the effects last for a few days after the spammer is canned.
Frankly, I don't know what these 'people' think they are accomplishing. Does this kind of crap actually produce enough business or traffic or whatever to be worthwhile? But that is neither here nor there.
So what might be done about it?
I don't know that I have a real good answer. I don't want to limit how many posts can be made per day, because any limit that would be effective would really hamper the more active folks. Limiting how many can be made per minute might be effective, but the spammer can slow down the rate to escape the filter and still throw a huge number of posts in an hour or so. I think the best thing would be to have a pretty quick throttle that might work something like this:
If a person makes a third post within a minute time span, then they have to start dealing with the funky graphical letters on subsequent posts as long as they continue to post more than, say, one post every five minutes (and aren't allowed to make more than one post in a two minute window). If they continue at that rate for more than, say, ten minutes, then their posting access is blocked until a moderator reviews the situation and takes action. But if they go for an hour with at least five minutes between posts, then they are automatically reset to normal.
Another way that would probably be effective is to compare the post that someone makes to the last post they made if that post was within the last hour and, if they are identical, then block further posts until a moderator reviews. Or perhaps you require three identical posts in an hour. You might only apply the rule to posters with fewer than a hundred posts.
Someone that knows these rules could certainly craft a bot to skirt them and still be really annoying, but it would require that they research the rules and craft the bot, which is probably sufficiently bothersome to make the effort not worth it. They want easy targets and low hanging fruit.
Another idea would be to use a "posting credits" that might work something like this: Each person has a posting credit balance that maxes out at, say, 1000. Each time a person makes a post, it costs them some credits to do so, with the cost being inversely proportional to the amount of time since their last post. Perhaps the cost is 100 credit-minutes so that someone that posts only a minute after making another posts loses 100 credits while someone that has waited ten minutes since their last post only loses 10 credits. On the other hand, someone that is using a bot to post every thirty seconds would lose 200 credits and exhaust their balance after just six posts (first one wouldn't have much, if any, cost) and no one would be allowed to post anything within 6 seconds of their prior post. It's hard to imagine a human attempting a second post in only six seconds or trying to make multiple legitimate posts with under a minute between them. Someone that is posting once every five minutes could make fifty posts without having a problem. To make the system recover, you can have it so that if they have waited more than 100 minutes since their last post, they now get credits at the flat rate of 1 credit/minute, meaning even someone that has exhausted their credit balance and can't make posts will have their full credit allowance restored in just under 17 hours.
If someone attempts to post when they don't have any credits, you can give them a message telling them to attempt posting their message again two hours. If they have a positive balance, just not enough to make the post, you might go ahead and accept the post and give them a zero balance and throw up a message saying that, due to too many posts in too short a time, they will not be allowed to make another post for two hours.
I don't know if the site has someone that is comfortable digging into the vBulletin code or not. I'm a member of another site where the forum founder was a big time PHP guy and he would add enhancements in an amazingly short time. I don't know how much control the standard code allows the admin.
What I am suggesting, though, is that methods of further throttle this kind of activity be adopted, even though I know that achieving a balance so that legitimate users don't get caught up in the trap is going to be easier said than done. I'm sure that you have considered approaches before and I wouldn't be surprised if what I throw out hasn't already been considered and found wanting. But, who knows, maybe I will say something that will spark an idea that will work great.
First off, why do I think it is a problem worth even addressing? In other words, isn't it reasonably easy to simply ignore two to five people a month doing this sort of stuff? Yes and no. Each spammer that does it contaminates a lot of threads, both ones that I monitor (am subscribed to) and ones that I've perhaps read but have not subscribed but am interested in how the discussion goes. I also regularly check to see which threads have recent activity in case a thread I've never looked pops up and is worth looking at. A spammer wreaks havoc with all of this and the effects last for a few days after the spammer is canned.
Frankly, I don't know what these 'people' think they are accomplishing. Does this kind of crap actually produce enough business or traffic or whatever to be worthwhile? But that is neither here nor there.
So what might be done about it?
I don't know that I have a real good answer. I don't want to limit how many posts can be made per day, because any limit that would be effective would really hamper the more active folks. Limiting how many can be made per minute might be effective, but the spammer can slow down the rate to escape the filter and still throw a huge number of posts in an hour or so. I think the best thing would be to have a pretty quick throttle that might work something like this:
If a person makes a third post within a minute time span, then they have to start dealing with the funky graphical letters on subsequent posts as long as they continue to post more than, say, one post every five minutes (and aren't allowed to make more than one post in a two minute window). If they continue at that rate for more than, say, ten minutes, then their posting access is blocked until a moderator reviews the situation and takes action. But if they go for an hour with at least five minutes between posts, then they are automatically reset to normal.
Another way that would probably be effective is to compare the post that someone makes to the last post they made if that post was within the last hour and, if they are identical, then block further posts until a moderator reviews. Or perhaps you require three identical posts in an hour. You might only apply the rule to posters with fewer than a hundred posts.
Someone that knows these rules could certainly craft a bot to skirt them and still be really annoying, but it would require that they research the rules and craft the bot, which is probably sufficiently bothersome to make the effort not worth it. They want easy targets and low hanging fruit.
Another idea would be to use a "posting credits" that might work something like this: Each person has a posting credit balance that maxes out at, say, 1000. Each time a person makes a post, it costs them some credits to do so, with the cost being inversely proportional to the amount of time since their last post. Perhaps the cost is 100 credit-minutes so that someone that posts only a minute after making another posts loses 100 credits while someone that has waited ten minutes since their last post only loses 10 credits. On the other hand, someone that is using a bot to post every thirty seconds would lose 200 credits and exhaust their balance after just six posts (first one wouldn't have much, if any, cost) and no one would be allowed to post anything within 6 seconds of their prior post. It's hard to imagine a human attempting a second post in only six seconds or trying to make multiple legitimate posts with under a minute between them. Someone that is posting once every five minutes could make fifty posts without having a problem. To make the system recover, you can have it so that if they have waited more than 100 minutes since their last post, they now get credits at the flat rate of 1 credit/minute, meaning even someone that has exhausted their credit balance and can't make posts will have their full credit allowance restored in just under 17 hours.
If someone attempts to post when they don't have any credits, you can give them a message telling them to attempt posting their message again two hours. If they have a positive balance, just not enough to make the post, you might go ahead and accept the post and give them a zero balance and throw up a message saying that, due to too many posts in too short a time, they will not be allowed to make another post for two hours.
I don't know if the site has someone that is comfortable digging into the vBulletin code or not. I'm a member of another site where the forum founder was a big time PHP guy and he would add enhancements in an amazingly short time. I don't know how much control the standard code allows the admin.