Set "Maximum messages per customer (0=unlimited)" to 1 and it should only send to the user once. If you set it to 30 days before then it'll send at 29, 28, 27, etc.. as you're allowing up to 30 days before expiration. To stop this you maybe able to set "But do not send message if it's later than" to "29 days before" so it only sends to 30 day users.