KsI-wiki online documents

Ruby-mail-filter

Материал из Ksimute

Перейти к: навигация, поиск

Задача следующая: Падает много почты от роботов (nagios, jira, bacula etc.) надо разложить по папкам на IMAP сервере (ну если папок нет - посоздавать) Ruby недавно изучть начал. Собственно язык понравился. Простой, понятный, и все что нужно уже есть.


 #!/usr/bin/ruby
 require 'net/imap'
 
 @imap = Net::IMAP.new('MY-IMAP-HOST.com',port='993',ssl='true')
 @imap.login('sergey@mydomain.com', 'megasecurepassword')
 
 
 def imapFilter (fromSender,destFolder)
 
    begin
  @imap.select(destFolder)
   rescue => e
     begin
       p "Folder not found; creating..."
       @imap.create(destFolder)
       @imap.select(destFolder)
     rescue => ee
       p "Error: could not create folder: #{e}"
       next
     end
     end
 
      @imap.select('INBOX')
      @imap.search(["FROM",fromSender,"NOT", "DELETED"]).each do |message_id|
      @imap.copy(message_id,destFolder)
      @imap.store(message_id, "+FLAGS", [:Deleted])
     end
 
 end
 imapFilter("tickets@serverbeach.com","Peer1")
 imapFilter("noreply@jira.MYDOMAIN.com","Jira")
 imapFilter("nagios@nagios2-1","Nagios")
 
 
 @imap.expunge
 @imap.logout()
 @imap.disconnect()