Использование API аудита Google для мониторинга электронной почты приложений Google - PullRequest
3 голосов
/ 23 марта 2011

Мне нужно, чтобы некоторые пользователи-администраторы, использующие приложения gmail, могли отслеживать электронную почту своих сотрудников. Использовали ли вы Google Audit API для этого.

Я бы хотел, чтобы администраторы могли просто щелкнуть мышью, чтобы просмотреть электронную почту моих пользователей, но это не так.

Если это имеет значение, приложение является приложением rails. Электронная почта полностью отправляется на почту Google через приложения Google. Любой, кто сделал этот любой совет, был бы полезен.

Обновление! 500 очков за это!

Я использую ruby ​​на рельсах, где размещаю приложение на heroku. Электронная почта полностью размещена в стандартном приложении Google, а не в бизнесе, поэтому нам придется обновлять ее, а DNS - с нуля, который вы уже знаете, если используете heroku.

1 Ответ

8 голосов
/ 28 марта 2011

Что ж, я не планировал расширять gdata-ruby-util gem :), но вот некоторый код, который можно использовать для API аудита Google на основе документации Google . Я только написал create_monitor_on метод, но остальные довольно легко получить.

Дайте мне знать, если он работает или нуждается в каких-либо изменениях, и я обновлю его здесь:

    class Audit < GData::Client::Base

      attr_accessor :store_at

      def initialize(options = {})
        options[:clientlogin_service] ||= 'apps'
        options[:authsub_scope] ||= 'https://apps-apis.google.com/a/feeds/compliance/audit/' 
        super(options)
      end

      def create_monitor_on(email_address)
        user_name, domain_name = email_address.split('@')
        entry = <<-EOF
        <atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
        <apps:property name='destUserName' value='#{@store_at}'/>
        <apps:property name='beginDate' value=''/>
        <apps:property name='endDate' value='2019-06-30 23:20'/>
        <apps:property name='incomingEmailMonitorLevel' value='FULL_MESSAGE'/>
        <apps:property name='outgoingEmailMonitorLevel' value='FULL_MESSAGE'/>
        <apps:property name='draftMonitorLevel' value='FULL_MESSAGE'/>
        <apps:property name='chatMonitorLevel' value='FULL_MESSAGE'/>
        </atom:entry>
        EOF

        return true if post('https://apps-apis.google.com/a/feeds/compliance/audit/mail/monitor/'+domain_name+'/'+user_name, entry).status_code == 201
        false
      end   
   end

Затем используйте его в другом месте, как это:

auditor = Audit.new
auditor.store_at = 'this-username'
auditor.clientlogin(username, password)
render :success if auditor.create_monitor_on('email-address@my-domain.com')

Я предлагаю создать один основной адрес электронной почты, на который отправляются все мониторы электронной почты, чтобы входящие почтовые ящики ваших администраторов не забивались чужой почтой. Затем в своем приложении Rails используйте Net :: IMAP, чтобы загрузить нужные сообщения из этой основной учетной записи электронной почты. то есть, вы можете создать ссылку с надписью «Просмотр электронной почты Джо», и метод делает что-то вроде этого:

require 'net/imap'

imap = Net::IMAP.new('imap.gmail.com', 993, true)
imap.login('this-username@my-domain.com', password)
imap.select('INBOX')

messages = []
imap.search(["TO", "joe@email.com").each do |msg_id|
  msg = imap.fetch(msg_id, "(UID RFC822.SIZE ENVELOPE BODY[TEXT])")[0]
  body = msg.attr["BODY[TEXT]"]
  env = imap.fetch(msg_id, "ENVELOPE")[0].attr["ENVELOPE"]
  messages << {:subject => env.subject, :from => env.from[0].name, :body => body }
end

imap.logout
imap.disconnect

Затем вы можете поместить эти сообщения в ваше представление - или отправить их все в одном массовом электронном письме, или как вы хотите.

...