summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xspamassassin/oftc-listmod-learn-mail51
-rwxr-xr-xspamassassin/oftc-listmod-process-outbox21
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