diff options
author | Robin Houston <robin.houston@gmail.com> | 2011-09-07 12:56:50 +0100 |
---|---|---|
committer | Robin Houston <robin.houston@gmail.com> | 2011-09-07 12:56:50 +0100 |
commit | 599330ac8f985768933236a2d761e9396735fdbb (patch) | |
tree | 584b88ed2620af10e83125e8cadf05cd051ee1e2 /script/handle-mail-replies | |
parent | 8978e9d23082732074cf447416625e1979d6f598 (diff) |
New script to handle mail replies
Add a new script to handle email replies sent in response to track
messages. At the moment this script just forwards the mail on to
the email address specified in the config variable FORWARD_NONBOUNCE_RESPONSES_TO.
Later it will handle bounces, too.
Diffstat (limited to 'script/handle-mail-replies')
-rwxr-xr-x | script/handle-mail-replies | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/script/handle-mail-replies b/script/handle-mail-replies new file mode 100755 index 000000000..e4faeef90 --- /dev/null +++ b/script/handle-mail-replies @@ -0,0 +1,26 @@ +#!/usr/bin/ruby + +# Handle email responses sent to us. +# +# This script is invoked as a pipe command, i.e. with the raw email message on stdin. +# - If a message is identified as a permanent bounce, the user is marked as having a +# bounced address, and will not be sent any more messages. +# - If a message is identified as an out-of-office autoreply, it is discarded. +# - Any other messages are forwarded to config.get("FORWARD_NONBOUNCE_RESPONSES_TO") + + +# We want to avoid loading rails unless we need it, so we start by just loading the +# config file ourselves. +alaveteli_dir = File.join(File.dirname(__FILE__), '..') +$:.push(File.join(alaveteli_dir, "commonlib", "rblib")) +load "config.rb" +MySociety::Config.set_file(File.join(alaveteli_dir, 'config', 'general'), true) +MySociety::Config.load_default + +message = $stdin.read + +forward_non_bounces_to = MySociety::Config.get("FORWARD_NONBOUNCE_RESPONSES_TO", "user-support@localhost") +IO.popen("/usr/sbin/sendmail -i #{forward_non_bounces_to}", "w") do |f| + f.write(message); + f.close; +end |