This is part of Early Gnutella
LimeWire Anti-Spam Technology
There are three well-known techniques for eliminating Gnutella spam:
- IP Filtering: ignore packets from certain hosts (pongs and query replies). Also deny incoming connections from these hosts.
- Keyword filtering: ignore packets containing certain undesirable words, e.g., .exe or .vbs (queries and query replies)
- Duplicate filtering: ignore duplicate packets, or very similar packets, that come within any given time frame (all packets, though this currently is only implemented for queries and pings).
These techniques can be applied on two different levels:
- Personal filtering: ignore what I see in the search monitor and results window, but pass them on to other users. Currently if any file in a query reply is considered spam, all the files are considered spam. This could change in the future.
- Route filtering: ignore spam completely. Do not pass on to other users. Do not display.
LimeWire currently supports the following policies:
- IP filtering on the route level
- Keyword filtering on the personal level. Rationale: we don't want to censor what others can see.
- Duplicate filtering on the route level.
- Adult filtering: this is just a simple way of setting up keyword filtering on the personal level without having to type in dirty words.
- VBS filtering: similar to adult filtering, but with "vbs" (Visual Basic script extension) entered instead.
- HTML filtering: similar to adult filtering, but with "htm" entered instead. Rationale: most HTML files on gnet are spam right now. Hopefully this will change.
- Greedy query filtering: a kind of keyword filtering technique looking for queries that are bound to have lots of results, e.g., a .mp3. Applied on the route level.
The policies are implemented in an extremely flexible manner and can be mixed and matched as necessary.

