I solve this problem by having asterisk prescreen all incoming calls. An IVR prompt requires you to press a combination of numbers before it actually rings any phones. A white and black list for caller ID data are used to bypass or simply play line disconnected tones and hang up.
It's the only reason I still have a POTS line. I never give out my cell.
This seems like such a sensible solution. Is there no hardware/firmware combination for the naive user so that they can program a single POTS line to require callers to dial in programmed access digits before they are cut through to the user's home telephone system?
Understanding is always the understanding of a smaller problem in relation to a bigger problem. -- P.D. Ouspensky