database 1 will be required for counting post on threads, also, whether the threads are same or not will be decided according to the subject header. For a subject header "abc" we consider the following subjects as the same: Re: abc Fwd: abc abc We will strip the prefixes Re, Fwd off before adding them to database 1.
We already have code to do that kind of thing, if not in Mailman 3, in Mailman 2 (pipermail) and in HyperKitty. Make sure you consider existing implementations, possibly including those outside of Mailman if they do a better job.
With the help of Richard and Aurelien Bompard, I found a better way to group the threads, Hyperkitty currently use this mechanism to group their threads, we will use In-Reply-To header of the message to determine the thread instead of using subject-header, by this, user will not be able to bypass the throttling system by causing minor changes in the subject. By this, suppose the starting thread is "abc" and if the user replies to this thread even by using different name in subject like "def", then also it will fall under the same thread.
To get it done, we will have to decompose the database 1 into 2 parts, One mapping Message_IDs to Threads,we will need to keep one of these records for every message, not just every user/thread as someone may well reply to not the last post by a user. (we can let them expire after a given period of time) 1.user_id | msg_id | thread_id Second the users activity on a given thread, the second thus only needs one record per user-thread) 2.user_id | thread_id | count
One way to bypass this system is by composing new mail. This can also be avoided to an extent if we provide limit on the number of new threads one can start on the list.
Regards Aanand