http://www.perlmonks.org?node_id=699493

SouthFulcrum has asked for the wisdom of the Perl Monks concerning the following question:

I’m looking for ethics suggestions and an answer to a Perl question.

I’m developing a Web-based CMS for non-profits using Catalyst. Non-profits really like e-newsletters. I’ve developed an integrated e-newsletter app, but I don’t want to allow users to implement it before I’ve made good faith efforts to ensure they can’t add people w/o subscriber confirmation.

Currently, here’s what I got:
An individual can visit a site and “Subscribe” or “Unsubscribe” via a one-field form.

If a visitor chooses to subscribe, s/he will receive a message saying “subscription req...to receive... was sent from IP....on date...link to confirm...sorry if you didn’t make this req, just do nothing.”

A visitor who chooses to “Unsubscribe” will receive a confirmation message; former subscriber does not have to do anything.

Requested from IP, request date/time, confirm date/time and unsubscribe date/time are all recorded in the database.

For actual sending, the app makes proper queries to generate a list of currently confirmed subscribers. And, of course, there would be a proper footer about how to unsubscribe.

Should I retain anything else?

A site owner can add subscribers through the site’s backend administration app. Each subscriber, by default, will get the same confirmation message described above. The user who invited the person will be recorded in the database, as well as “date_invited” and “ip_invited_from”.

Currently, I’m considering whether to allow site owners to invite people w/o sending a confirmation message. It would use some JavaScript warnings to stress the point that s/he should generally avoid it, and force the user to state why a confirmation message isn’t needed, such as when migrating a previously established list, like Yahoo! Groups, Mailman, etc. The reason would be logged in the database. Again, should I retain anything else here? Or is this just a bad idea?

Finally, a Perl-specific question: any suggestions on how to parse a mail log (Postfix, in particular) to show if messages are bouncing, and why? I just don’t feel good about directing people though a script to show that s/he looked at the newsletter. I’m thinking that Mail::Procmail is looking good. I assume Parse::Syslog::Mail is good, but the docs seem to be sparse.