Wishful thinking. The law in Canada, to my understanding, says that if you have conducted business with someone, then it's fair game for them to contact you with offers for some period of time (either 6 months or 12; I can't remember which.) Spam is defined as unsolicited bulk mail. If you bought something or subscribed to a site or whatever, then it's not unsolicited regardless of any opt-in or opt-out mechanism. The "do not call" registry of phone numbers similarly only applies to unsolicited callers; companies you've done business with can spam you with calls if you give them your phone number.
For these throwaway subscribes and transactional e-mails, I use an e-mail of them form <user>.<pin>@<mydomain>. When my mail server receives mail for this pattern, it changes it to <user>@<mydomain>, and bypasses all filters. Thus I'm sure to get important transactional e-mail. From time to time, and when I start seeing spam, I simply change the value of <pin>, which is a global in my mail server's config file.
Some people have date-based approaches, which can work well. E.g. if it is March 2015, your mail server might recognize an e-mail of the form you.201503@yourdomain, and map it to you@yourdomain. When April comes around, it stops working.