Sha256: e01d8ccec9b65aa057198dd67e70fe5b08e0f0679a19de2fcc4d27b953dbb61f

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true
require 'osa/util/constants'
require 'public_suffix'
require 'osa/util/db'
require 'osa/util/context'

context = OSA::Context.new

continue = true

while continue
  mails = context.graph_client.mails(context.config.junk_folder_id)
  continue = false
  loop do
    break if mails.nil?
    mails['value'].each do |mail|
      email_address = mail['sender']['emailAddress']['address']
      next if email_address.nil?
      domain = PublicSuffix.domain(email_address.split('@', 2)[1])

      blacklisted = OSA::Blacklist.where(value: email_address).or(OSA::Blacklist.where(value: domain)).exists?
      if blacklisted
        puts "#{email_address} is blacklisted, reporting and deleting"
      else
        puts "Skipping mail from #{email_address}, its not blacklisted"
        next
      end

      continue = true

      puts "forwarding spam from #{email_address}"
      context.graph_client.forward_mail_as_attachment(mail['id'], context.config.spamcop_report_email)
      puts "deleting spam from #{email_address}"
      context.graph_client.delete_mail(mail['id'])
    end
    mails = mails.next
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
osa-0.1.1 lib/osa/scripts/scan_junk_folder.rb
osa-0.1.0 lib/osa/scripts/scan_junk_folder.rb