diff options
Diffstat (limited to 'spamassassin')
-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 |