Advertisement
Guest User

Untitled

a guest
Jul 30th, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.03 KB | None | 0 0
  1. # the place where we save Mail to
  2. $mhome="/home/mh/MD/"
  3.  
  4.  
  5. $ffilters=Array.new
  6. $tcfilters=Array.new
  7. $whitelist=Array.new
  8.  
  9. # whitelist: generate using following command
  10. #cat .aliases | sed 's/.*<//g;s/>//g' | grep -v "alias fs fs" | awk '{x=$0;gsub(/\./,"\\.",x);print "$whitelist.push(/"x"/)"}'
  11.  
  12. $whitelist.push(/.*@.*\.franken\.de/)
  13.  
  14.  
  15. # defining rules $ffilters contains filters from
  16. # $tcfilters contains filters to or cc
  17.  
  18.  
  19. eusers= Proc.new do |adr,name,hdr,msg,agent|
  20. if adr =~ /enlightenment-users@lists\.sourceforge\.net/
  21. agent.save($mhome ".mls.e-users/")
  22. end
  23. end
  24. $tcfilters.push(eusers)
  25.  
  26. linuxThinkpad = Proc.new do |adr,name,hdr,msg,agent|
  27. puts adr
  28. if adr =~ /linux-thinkpad@linux-thinkpad\.org/
  29. agent.save($mhome ".mls.thinkpad/")
  30. end
  31. end
  32. $tcfilters.push(linuxThinkpad)
  33.  
  34. bugtraq = Proc.new do |adr,name,hdr,msg,agent|
  35. if adr =~ /bugtraq@securityfocus\.com/
  36. agent.save($mhome ".mls.bugtraq/")
  37. end
  38. end
  39. $tcfilters.push(bugtraq)
  40.  
  41. fwsec = Proc.new do |adr,name,hdr,msg,agent|
  42. if adr =~ /firewalls@securityfocus\.com/
  43. agent.save($mhome ".mls.fwsec/")
  44. end
  45. end
  46. $tcfilters.push(fwsec)
  47.  
  48. screenusers = Proc.new do |adr,name,hdr,msg,agent|
  49. if adr =~ /screen-users@gnu\.org/
  50. agent.save($mhome ".mls.screen-users/")
  51. end
  52. end
  53. $tcfilters.push(screenusers)
  54.  
  55. vim = Proc.new do |adr,name,hdr,msg,agent|
  56. if adr =~ /vim@vim\.org/
  57. agent.save($mhome ".mls.vim/")
  58. end
  59. end
  60. $tcfilters.push(vim)
  61.  
  62.  
  63.  
  64. dqa= Proc.new do |adr,name,hdr,msg,agent|
  65. if adr =~ /debian-qa@lists\.debian\.org/
  66. agent.save($mhome ".debian.dqa/")
  67. end
  68. end
  69. $tcfilters.push(dqa)
  70.  
  71. dsa = Proc.new do |adr,name,hdr,msg,agent|
  72. if adr =~ /debian-security-announce@lists\.debian\.org/
  73. agent.save($mhome ".debian.dsa/")
  74. end
  75. end
  76. $tcfilters.push(dsa)
  77.  
  78. debianLaptop = Proc.new do |adr,name,hdr,msg,agent|
  79. if adr =~ /debian-laptop@lists\.debian\.org/
  80. agent.save($mhome ".debian.debianlaptop/")
  81. end
  82. end
  83. $tcfilters.push(debianLaptop)
  84.  
  85. debfw = Proc.new do |adr,name,hdr,msg,agent|
  86. if adr =~ /debian-firewall@lists\.debian\.org/
  87. agent.save($mhome ".debian.debfw/")
  88. end
  89. end
  90. $tcfilters.push(debfw)
  91.  
  92. dwn = Proc.new do |adr,name,hdr,msg,agent|
  93. if adr =~ /debian-news@lists\.debian\.org/
  94. agent.save($mhome ".debian.dwn/")
  95. end
  96. end
  97. $tcfilters.push(dwn)
  98.  
  99. # fs stuff .......
  100.  
  101. fsinbox = Proc.new do |adr,name,hdr,msg,agent|
  102. if adr =~ /mh@fs\.cs\.fhm\.edu/ or
  103. adr =~ /mh@fachschaft\.informatik\.fh-muenchen\.de/
  104. agent.save($mhome ".fs.fsinbox/")
  105. end
  106. end
  107. $tcfilters.push(fsinbox)
  108.  
  109. fsroot = Proc.new do |adr,name,hdr,msg,agent|
  110. if adr =~ /root@fs\.cs\.fhm\.edu/ or
  111. adr =~ /(root|logcheck)@(ws5\.|)fachschaft\.informatik\.fh-muenchen\.de/ or
  112. adr =~ /-admin@fs\.cs\.fhm\.edu/
  113. agent.save($mhome ".fs.fsroot/")
  114. end
  115. end
  116. $ffilters.push(fsroot)
  117.  
  118. fsinfo = Proc.new do |adr,name,hdr,msg,agent|
  119. if adr =~ /info@fs\.cs\.fhm\.edu/ or
  120. adr =~ /info@fachschaft\.informatik\.fh-muenchen\.de/ or
  121. adr =~ /fachschaft@fs\.cs\.fhm\.edu/ or
  122. adr =~ /fachschaft@fachschaft\.informatik\.fh-muenchen\.de/ or
  123. adr =~ /webmaster@fs\.cs\.fhm\.edu/ or
  124. adr =~ /webmaster@fachschaft\.informatik\.fh-muenchen\.de/ or
  125. adr =~ /root@fs\.cs\.fhm\.edu/ or
  126. adr =~ /root@fachschaft\.informatik\.fh-muenchen\.de/ or
  127. adr =~ /admins@fs\.cs\.fhm\.edu/ or
  128. adr =~ /admin@fs\.cs\.fhm\.edu/
  129. agent.save($mhome ".fs.fs-info/")
  130. end
  131. end
  132. $tcfilters.push(fsinfo)
  133.  
  134. fsintern = Proc.new do |adr,name,hdr,msg,agent|
  135. if adr =~ /fs07intern@fs\.cs\.fhm\.edu/i or
  136. adr =~ /fs07intern@fachschaft\.informatik\.fh-muenchen\.de/i
  137. agent.save($mhome ".fs.fsintern/")
  138. end
  139. end
  140. $tcfilters.push(fsintern)
  141.  
  142. fshc = Proc.new do |adr,name,hdr,msg,agent|
  143. if adr =~ /hardcore@fs\.cs\.fhm\.edu/ or
  144. adr =~ /hardcore@fachschaft\.informatik\.fh-muenchen\.de/
  145. agent.save($mhome ".fs.fshc/")
  146. end
  147. end
  148. $tcfilters.push(fshc)
  149.  
  150.  
  151. newshub = Proc.new do |adr,name,hdr,msg,agent|
  152. if adr =~ /newshub@sol\.cs\.fhm\.edu/
  153. agent.save($mhome ".fs.newshub/")
  154. end
  155. end
  156. $ffilters.push(newshub)
  157.  
  158. cluster = Proc.new do |adr,name,hdr,msg,agent|
  159. if adr =~ /root@class\.informatik\.fh-muenchen\.de/
  160. agent.save($mhome ".fs.cluster/")
  161. end
  162. end
  163. $ffilters.push(cluster)
  164.  
  165. clusterintern = Proc.new do |adr,name,hdr,msg,agent|
  166. if adr =~ /cluster-intern@fs\.cs\.fhm\.edu/
  167. agent.save($mhome ".fs.cluster/")
  168. end
  169. end
  170. $tcfilters.push(clusterintern)
  171.  
  172. rootalla = Proc.new do |adr,name,hdr,msg,agent|
  173. if adr =~ /(root|logcheck)@alla\.franken\.de/
  174. agent.save($mhome ".root.root-alla/")
  175. end
  176. end
  177. $ffilters.push(rootalla)
  178.  
  179. rootnew = Proc.new do |adr,name,hdr,msg,agent|
  180. if adr =~ /(root|logcheck)@gate\.franken\.de/
  181. agent.save($mhome ".root.root-new/")
  182. end
  183. end
  184. $ffilters.push(rootnew)
  185.  
  186. jobhub = Proc.new do |adr,name,hdr,msg,agent|
  187. if adr =~ /jobhub@sol\.cs\.fhm\.edu/
  188. agent.save($mhome ".fs.jobhub/")
  189. end
  190. end
  191. $ffilters.push(jobhub)
  192.  
  193.  
  194. def main
  195.  
  196. if not agent.message().header.field?("from") or agent.message().header.from()[0].nil?
  197. agent.save($mhome ".rejected/",true)
  198. agent.log(0,"Mail was rejected cause of no from field!")
  199. agent.reject("No valid from found, rejecting delivery")
  200. end
  201. adr=agent.message().header.from()[0].address()
  202.  
  203. @wflag=false
  204. $whitelist.each do|wadr|
  205. @wflag = true if adr =~ wadr
  206. end
  207.  
  208. # run each message through sa if sender not in whitelist
  209. agent.log(0,"processing message from " adr)
  210. agent.filter("/usr/bin/spamassassin") if not @wflag
  211. # get message and message header
  212. msg=agent.message()
  213. hdr=msg.header
  214. if hdr.match?("X-Spam-Flag:","yes")
  215. agent.save($mhome ".spam/")
  216. #agent.save($mhome "spam",true)
  217. #agent.reject("Message flagged as spam")
  218. end
  219.  
  220. froms = hdr.from()
  221. tos = hdr.to()
  222. ccs = hdr.cc()
  223. froms.each do |from|
  224. adr=from.address()
  225. name=from.name()
  226. $ffilters.each do |toCall|
  227. toCall.call(adr,name,hdr,msg,agent)
  228. end
  229. end
  230. tos.each do |to|
  231. adr=to.address()
  232. name=to.name()
  233. $tcfilters.each do |toCall|
  234. toCall.call(adr,name,hdr,msg,agent)
  235. end
  236. end
  237. ccs.each do |to|
  238. adr=to.address()
  239. name=to.name()
  240. $tcfilters.each do |toCall|
  241. toCall.call(adr,name,hdr,msg,agent)
  242. end
  243. end
  244. agent.save("/home/mh/MD/")
  245. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement