Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # the place where we save Mail to
- $mhome="/home/mh/MD/"
- $ffilters=Array.new
- $tcfilters=Array.new
- $whitelist=Array.new
- # whitelist: generate using following command
- #cat .aliases | sed 's/.*<//g;s/>//g' | grep -v "alias fs fs" | awk '{x=$0;gsub(/\./,"\\.",x);print "$whitelist.push(/"x"/)"}'
- $whitelist.push(/.*@.*\.franken\.de/)
- # defining rules $ffilters contains filters from
- # $tcfilters contains filters to or cc
- eusers= Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /enlightenment-users@lists\.sourceforge\.net/
- agent.save($mhome ".mls.e-users/")
- end
- end
- $tcfilters.push(eusers)
- linuxThinkpad = Proc.new do |adr,name,hdr,msg,agent|
- puts adr
- if adr =~ /linux-thinkpad@linux-thinkpad\.org/
- agent.save($mhome ".mls.thinkpad/")
- end
- end
- $tcfilters.push(linuxThinkpad)
- bugtraq = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /bugtraq@securityfocus\.com/
- agent.save($mhome ".mls.bugtraq/")
- end
- end
- $tcfilters.push(bugtraq)
- fwsec = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /firewalls@securityfocus\.com/
- agent.save($mhome ".mls.fwsec/")
- end
- end
- $tcfilters.push(fwsec)
- screenusers = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /screen-users@gnu\.org/
- agent.save($mhome ".mls.screen-users/")
- end
- end
- $tcfilters.push(screenusers)
- vim = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /vim@vim\.org/
- agent.save($mhome ".mls.vim/")
- end
- end
- $tcfilters.push(vim)
- dqa= Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /debian-qa@lists\.debian\.org/
- agent.save($mhome ".debian.dqa/")
- end
- end
- $tcfilters.push(dqa)
- dsa = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /debian-security-announce@lists\.debian\.org/
- agent.save($mhome ".debian.dsa/")
- end
- end
- $tcfilters.push(dsa)
- debianLaptop = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /debian-laptop@lists\.debian\.org/
- agent.save($mhome ".debian.debianlaptop/")
- end
- end
- $tcfilters.push(debianLaptop)
- debfw = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /debian-firewall@lists\.debian\.org/
- agent.save($mhome ".debian.debfw/")
- end
- end
- $tcfilters.push(debfw)
- dwn = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /debian-news@lists\.debian\.org/
- agent.save($mhome ".debian.dwn/")
- end
- end
- $tcfilters.push(dwn)
- # fs stuff .......
- fsinbox = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /mh@fs\.cs\.fhm\.edu/ or
- adr =~ /mh@fachschaft\.informatik\.fh-muenchen\.de/
- agent.save($mhome ".fs.fsinbox/")
- end
- end
- $tcfilters.push(fsinbox)
- fsroot = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /root@fs\.cs\.fhm\.edu/ or
- adr =~ /(root|logcheck)@(ws5\.|)fachschaft\.informatik\.fh-muenchen\.de/ or
- adr =~ /-admin@fs\.cs\.fhm\.edu/
- agent.save($mhome ".fs.fsroot/")
- end
- end
- $ffilters.push(fsroot)
- fsinfo = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /info@fs\.cs\.fhm\.edu/ or
- adr =~ /info@fachschaft\.informatik\.fh-muenchen\.de/ or
- adr =~ /fachschaft@fs\.cs\.fhm\.edu/ or
- adr =~ /fachschaft@fachschaft\.informatik\.fh-muenchen\.de/ or
- adr =~ /webmaster@fs\.cs\.fhm\.edu/ or
- adr =~ /webmaster@fachschaft\.informatik\.fh-muenchen\.de/ or
- adr =~ /root@fs\.cs\.fhm\.edu/ or
- adr =~ /root@fachschaft\.informatik\.fh-muenchen\.de/ or
- adr =~ /admins@fs\.cs\.fhm\.edu/ or
- adr =~ /admin@fs\.cs\.fhm\.edu/
- agent.save($mhome ".fs.fs-info/")
- end
- end
- $tcfilters.push(fsinfo)
- fsintern = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /fs07intern@fs\.cs\.fhm\.edu/i or
- adr =~ /fs07intern@fachschaft\.informatik\.fh-muenchen\.de/i
- agent.save($mhome ".fs.fsintern/")
- end
- end
- $tcfilters.push(fsintern)
- fshc = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /hardcore@fs\.cs\.fhm\.edu/ or
- adr =~ /hardcore@fachschaft\.informatik\.fh-muenchen\.de/
- agent.save($mhome ".fs.fshc/")
- end
- end
- $tcfilters.push(fshc)
- newshub = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /newshub@sol\.cs\.fhm\.edu/
- agent.save($mhome ".fs.newshub/")
- end
- end
- $ffilters.push(newshub)
- cluster = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /root@class\.informatik\.fh-muenchen\.de/
- agent.save($mhome ".fs.cluster/")
- end
- end
- $ffilters.push(cluster)
- clusterintern = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /cluster-intern@fs\.cs\.fhm\.edu/
- agent.save($mhome ".fs.cluster/")
- end
- end
- $tcfilters.push(clusterintern)
- rootalla = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /(root|logcheck)@alla\.franken\.de/
- agent.save($mhome ".root.root-alla/")
- end
- end
- $ffilters.push(rootalla)
- rootnew = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /(root|logcheck)@gate\.franken\.de/
- agent.save($mhome ".root.root-new/")
- end
- end
- $ffilters.push(rootnew)
- jobhub = Proc.new do |adr,name,hdr,msg,agent|
- if adr =~ /jobhub@sol\.cs\.fhm\.edu/
- agent.save($mhome ".fs.jobhub/")
- end
- end
- $ffilters.push(jobhub)
- def main
- if not agent.message().header.field?("from") or agent.message().header.from()[0].nil?
- agent.save($mhome ".rejected/",true)
- agent.log(0,"Mail was rejected cause of no from field!")
- agent.reject("No valid from found, rejecting delivery")
- end
- adr=agent.message().header.from()[0].address()
- @wflag=false
- $whitelist.each do|wadr|
- @wflag = true if adr =~ wadr
- end
- # run each message through sa if sender not in whitelist
- agent.log(0,"processing message from " adr)
- agent.filter("/usr/bin/spamassassin") if not @wflag
- # get message and message header
- msg=agent.message()
- hdr=msg.header
- if hdr.match?("X-Spam-Flag:","yes")
- agent.save($mhome ".spam/")
- #agent.save($mhome "spam",true)
- #agent.reject("Message flagged as spam")
- end
- froms = hdr.from()
- tos = hdr.to()
- ccs = hdr.cc()
- froms.each do |from|
- adr=from.address()
- name=from.name()
- $ffilters.each do |toCall|
- toCall.call(adr,name,hdr,msg,agent)
- end
- end
- tos.each do |to|
- adr=to.address()
- name=to.name()
- $tcfilters.each do |toCall|
- toCall.call(adr,name,hdr,msg,agent)
- end
- end
- ccs.each do |to|
- adr=to.address()
- name=to.name()
- $tcfilters.each do |toCall|
- toCall.call(adr,name,hdr,msg,agent)
- end
- end
- agent.save("/home/mh/MD/")
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement