I think the existing catalog pricing and shopping cart rule should have better control for what kind of customers can use, in addition to customer groups.
It’ll be a good start to add 2 checkboxes when create the sale rule: one is “if customer must login”, the other is “if customer is subscribed to email newsletter”. The first one I may be able to achieve by not include “not logged in” as group. But the 2nd one is more complicated.
I’ve been thinking about alternatives like create a newsletter group, so when customer is subscribed, add them in, and remove if they unsubscribe. But it will creates other problems and not an easy solution either. It will make life easier if there’s a checkbox for email subscribers.