Public feed #894225

Unnamed

public text v1 · immutable
Raw Edit
·published 2008-02-06 20:04 UTC
rendered paste body
class Parser
	def initialize(file)
		@file = File.open(file)
		@domains = Hash.new
	end

	def analyze
		@file.each do |line| 

			parts = line.split(/ /)
			message_id = parts[7]
			start_time = parts[8]
			end_time = parts[9]
			service = parts[10]
			
			case service
				when "RECV":
					info = Hash["Sender" => parts[11], "Recipient" => parts[12], "Action" => parts[13], "ReasonExtra" => parts[14]]
				when "SCAN":
					info = Hash["Encrypted" => parts[11], "Sender" => parts[12], "Recipient" => parts[13], "Score" => parts[14], "Action" => parts[15], "Reason" => parts[16], "ReasonExtra" => parts[17], "Subject" => parts[18]]
				when "SEND"
					info = Hash["Recipient" => "no@recipient.com", "Encrypted" => parts[11], "Action" => parts[12], "QueueID" => parts[13], "Response" => parts[14]]
				else
					info = Hash["Recipient" => "no@recipient.com"]
			
			end

			if !info["Recipient"].nil?
				recip_parts = info["Recipient"].split(/@/)
				domain = recip_parts[1]
				username = recip_parts[0]
				
				if @domains.has_key? domain
					if @domains[domain].has_key? username
						#puts "adding one"
						@domains[domain][username]+=1
					else
						#puts "Creating"
						@domains[domain][username] = 1
					end
				else
					#puts "creating domain"
					@domains[domain] = Hash[username => 1]
				end
			else
				puts line
				return
			end
			
		end
	end
	
	def output
		@domains.each_pair { |domain,value| 
			if !domain.nil?
				puts "#{domain}:#{domain.size}\n" 
				value.each_pair { |email,num_emails| puts "#{email}: #{num_emails}" }
				puts "\n\n"
			end
	}
	end
end

barracuda_parser = Parser.new('barracuda.log')
barracuda_parser.analyze
barracuda_parser.output

===========================
===========================

cugroup.com:11
cwb_sfj: 1


pgwc.gov.za:11
Bmachelm: 1


nextgenerationnow.com:21
sales: 3
jtoutant: 1


RetailFixture.com:17
RDeSalvo: 1


calmpjthealth.com:17
jjohnson: 2
kvesel: 42
jprice: 13
sogungbe: 1
svakos: 299
mgesner: 15
MGesner: 3
pebblier: 1
avesel: 1


rogansshoes.com:15
rogansshoes.comonline: 1
daverogan: 5
online: 6
tomrogand: 3
listonlinei: 2
johndavis: 9
patwolfnn: 1
eileenstrini: 1
patwolfn: 1
patwolf: 12
markrogan: 6
tomrogandd: 3
cheerandpom: 3
wolfonline: 6
tomrogan: 9
karlhanke: 4
dc: 2
donaldson: 7


fleetship.com:13
ish: 1


sgolaw.com:10
emery: 1