This is a simple extension that provides a set of "Communication Preferences" custom fields for each contact. Email, Phone and Mail(Post) are provided.
The fields are provided as "Yes/No" fields so that when placed on a form (eg. a profile) the user must explicitly set one or the other. When they are updated the corresponding "Do not" fields on the contact record are updated accordingly.
Note that "Phone" incorporates both the "Do not Phone" and "Do not SMS" flags.