>Sounds tedious if it’s the former
Thankfully it isn't.
To set a catchall with sendmail, add a line to /etc/mail/virtusertable like so:
@domain.tld <emailaddress>
And if I decide to block a
particular address, which I've only had to do with addresses set up for specific sites (which I've then decided sends me too many emails -- I've yet to receive spam that's not from the site in question), add a line to /etc/mail/access like so:
To:<specificsite>@domain.tld error:5.1.1:"550 User unknown"
And that can be temporarily (or permanently) reversed by commenting it out. I imagine it's something similar for postfix, qmail, exim, etc.
Edit: I'd add that I make extensive use of folders/filters to handle email as well, so unless I don't want to use a site/service any more, I'll usually create a filter unless I don't want any more contact with a specific entity -- then it's "user unknown" for that email address.