diff options
author | Peter Palfrader <peter@palfrader.org> | 2006-05-21 00:11:51 +0000 |
---|---|---|
committer | weasel <weasel@bc3d92e2-beff-0310-a7cd-cc87d7ac0ede> | 2006-05-21 00:11:51 +0000 |
commit | cc3f4406f24009819ade28b440f9e6b767b9139b (patch) | |
tree | 2a083dc0ecca39ac4de0d4c69e936cf5a05f02a4 | |
parent | a04e88267c59ff3e5b9202a272ba9c81ed8e8133 (diff) |
Add oft listmod stuff
git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@98 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede
-rwxr-xr-x | spamassassin/oftc-listmod-learn-mail | 51 | ||||
-rwxr-xr-x | spamassassin/oftc-listmod-process-outbox | 21 |
2 files changed, 72 insertions, 0 deletions
diff --git a/spamassassin/oftc-listmod-learn-mail b/spamassassin/oftc-listmod-learn-mail new file mode 100755 index 0000000..d8074f9 --- /dev/null +++ b/spamassassin/oftc-listmod-learn-mail @@ -0,0 +1,51 @@ +#!/usr/bin/ruby + +SPAMIN="mail/spam-learn" +SPAMOUT="mail/spam-learned" +HAMIN="mail/ham-learn" +HAMOUT="mail/ham-learned" + +$verbose = 0 +if ARGV[0] == "-v" + $verbose = 1 +end + +def check_maildir(d) + throw "#{d} is not a maildir" unless FileTest.directory?(d) + throw "#{d} is not a maildir" unless FileTest.directory?(d+"/new") + throw "#{d} is not a maildir" unless FileTest.directory?(d+"/cur") + throw "#{d} is not a maildir" unless FileTest.directory?(d+"/tmp") + true +end + +def move(filename, to) + basename = File.basename(filename) + component = File.basename( File.dirname(filename) ) + throw "Bad component '#{component}' in filename '#{filename}'." unless %w{cur new tmp}.include?(component) + File.link(filename, to+"/"+component+"/"+basename) + File.unlink(filename) +end + +check_maildir SPAMIN +check_maildir SPAMOUT +check_maildir HAMIN +check_maildir HAMOUT + +Dir[SPAMIN+"/new/*"].each do |filename| + puts "learning #{filename}" if $verbose > 0 + if system("sudo -H -u amavis sa-learn --spam < #{filename} > /dev/null") + puts "moving #{filename}" if $verbose > 0 + move(filename, SPAMOUT) + else + STDERR.puts "Learning of #{filename} failed." + end +end +Dir[HAMIN+"/new/*"].each do |filename| + puts "learning #{filename}" if $verbose > 0 + if system("sudo -H -u amavis sa-learn --ham < #{filename} > /dev/null") + puts "moving #{filename}" if $verbose > 0 + move(filename, HAMOUT) + else + STDERR.puts "Learning of #{filename} failed." + end +end diff --git a/spamassassin/oftc-listmod-process-outbox b/spamassassin/oftc-listmod-process-outbox new file mode 100755 index 0000000..032c88b --- /dev/null +++ b/spamassassin/oftc-listmod-process-outbox @@ -0,0 +1,21 @@ +#!/usr/bin/ruby + +OUTBOX="mail/outbox" + +def check_maildir(d) + throw "#{d} is not a maildir" unless FileTest.directory?(d) + throw "#{d} is not a maildir" unless FileTest.directory?(d+"/new") + throw "#{d} is not a maildir" unless FileTest.directory?(d+"/cur") + throw "#{d} is not a maildir" unless FileTest.directory?(d+"/tmp") + true +end + +check_maildir OUTBOX + +Dir[OUTBOX+"/new/*"].each do |filename| + if system("/usr/sbin/sendmail -t -oi < #{filename}") + File.unlink(filename) + else + STDERR.puts "Mailing of #{filename} failed." + end +end |