Use sub-addressing [1]
So, if you signup on example.com, and your email is "foo@bar.com" you give them "foo+example-com@bar.com" or whatever format works for your mailbox provider/software.
If you wanted to go one step further, a filter could be configured to look at the sub-address component, and compare it with the sender's domain and mark it as spam if there isn't a match.
1. https://en.wikipedia.org/wiki/Email_address#Sub-addressing