Ruby on rails 使用谷歌的审计API监控谷歌应用程序电子邮件

Ruby on rails 使用谷歌的审计API监控谷歌应用程序电子邮件,ruby-on-rails,monitor,google-email-audit-api,Ruby On Rails,Monitor,Google Email Audit Api,我需要让一些使用google apps gmail的管理员用户能够监控他们的员工的电子邮件。您是否使用过谷歌的审计API来实现这一点 我希望有一种方法让管理员只需点击一个查看我的用户电子邮件,但事实并非如此 如果重要的话,应用程序是rails应用程序。这封电子邮件完全是通过谷歌应用程序通过谷歌邮件发送的。任何这样做过的人,如果有任何建议,都会很有帮助 使现代化这个500分! 我正在使用RubyonRails在heroku上托管一个应用程序。电子邮件完全由google apps standard托

我需要让一些使用google apps gmail的管理员用户能够监控他们的员工的电子邮件。您是否使用过谷歌的审计API来实现这一点

我希望有一种方法让管理员只需点击一个查看我的用户电子邮件,但事实并非如此

如果重要的话,应用程序是rails应用程序。这封电子邮件完全是通过谷歌应用程序通过谷歌邮件发送的。任何这样做过的人,如果有任何建议,都会很有帮助

使现代化这个500分!
我正在使用RubyonRails在heroku上托管一个应用程序。电子邮件完全由google apps standard托管,而非business,因此我们必须升级,DNS由zerigo托管,如果您使用heroku,您已经知道zerigo。

好吧,我没有计划扩展gem:,但以下是一些可用于基于google的google Audit API的代码。我只写了一个create\u monitor\u 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
我的建议是创建一个核心电子邮件地址,将所有电子邮件监视器发送到该地址,这样您的管理员的收件箱就不会与其他人的邮件相撞。然后在Rails应用程序中,使用Net::IMAP从主电子邮件帐户下载所需的邮件。i、 例如,您可以创建一个链接,上面写着查看Joe的电子邮件,该方法执行如下操作:

auditor = Audit.new
auditor.store_at = 'this-username'
auditor.clientlogin(username, password)
render :success if auditor.create_monitor_on('email-address@my-domain.com')
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

然后,您可以将这些消息放在您的视图中,或者将它们全部发送到一封批量电子邮件中,或者您想做的任何事情。

对于500分,您应该为我定制一个gem;jk!谢谢你,我会看看的。哈哈,我对这个主意很感兴趣。让我知道我上面添加的要点是否有用。@Sam为所有的重写感到抱歉,我认为上面的代码现在可能更有用。你在这方面做了很多工作。谢谢。我将在周一晚上开始,我们将看到它的进展!所以你的代码确实很有用。我正在等待谷歌应用程序和审计api的升级。我将发布我为创建监视器所做的实际工作,这些工作基本上来自您+1