Falaremos sobre como criar uma regra no Outlook para exigir que toda mensagem enviada tenha uma classificação no assunto, mas mantendo a simplicidade ao máximo para o usuário.

O mesmo princípio pode ser usado para criar uma regra que só permita mensagens serem enviadas após um certo padrão estabelecido (por exemplo, usar a classificação nativa do Outlook, no lugar de adicionar no assunto, como vamos demonstrar).

Vamos deixar algumas parte em cinza, para que você altere conforme sua realidade.

Explicação

Vamos criar uma tela de classificação da mensagem, para que quando o usuário envie um e-mail tenha que adicionar no assunto da mensagem uma das categorias PUBLICA, INTERNA, RESTRITA ou CONFIDENCIAL.

Gerar um Certificado

É importante não permitir que o Outlook execute qualquer tipo de macro não assinada, por isso vamos assinar digitalmente nosso macro.

Em nosso exemplo vamos criar um certificado auto assinado, para não necessitar de uma autoridade externa (caso você possua uma autoridade, recomendamos gerar por lá), para gerar o certificado autoassinado, execute o comando %programfiles%\Microsoft Office\Office16\SELFCERT.EXE e, na tela de criação do certificado, digite o nome Outlook e clique em OK.

Exportar o Certificado

Agora, para podermos distribuirmos o certificado via GPO, vamos exportar esse certificado. Para isso, abra o Microsoft Management Console (execute o comando mmc.exe para isso). No console, adicione o snap-in (clique em File, Add/Remove Snap-in) de Certificados, quando a tela de qual tipo de certificado irá gerencia, selecione o de usuário (e clique em Finish).

Dentro da console de certificados, expanda os certificados pessoais (Certificates Current User, Personal, Certificates), exporte o certificado Outlook que criamos (botão direito sobre o certificado Outlook, escolha All Tasks, Export) do tipo DER. Para esse post, vamos salvar em C:\Temp\Certificado-Outlook.cer

Criando uma Regra no Outlook

Abra o Outlook, pressione ALT+F11, dentro do Microsoft Visual Basic for Applications, para criar o script para verificar se no assunto consta uma classificação da mensagem e (caso não tenha) adicionar a classificação da mensagem no assunto, localize e abra (no menu esquerdo) ThisOutlookSession, dentro coloque o seguinte conteúdo:

Public categoria As String
Public ValidaCategoria As Boolean
Public CancelaValidacao As Boolean
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
   On Error Resume Next
   Me.ValidaCategoria = False
   Me.CancelaValidacao = False
     If ((InStr(UCase(Item.Subject), "[PUBLICA]")) + (InStr(UCase(Item.Subject), "[INTERNA]")) + (InStr(UCase(Item.Subject), "[RESTRITA]")) + (InStr(UCase(Item.Subject), "[CONFIDENCIAL]")) = 0) Then
         While Me.Valida <> True
               UserForm1.Show
               Cancel = Me.CancelaValidacao
          Wend
          Item.Subject = ThisOutlookSession.categoria & Item.Subject
     End If
End Sub

Dica: Se você copiar e colar o código, verifique se as aspas não vão ficar diferentes, normalmente é necessário alterá-las.

Agora vamos criar uma tela gráfica para o usuário classificar a mensagem, para isso clique no menu (superior) Inserir e insira um UserForm, confirme que o nome dele ficou como UserForm1. Agora, com o form aberto, adicione a visualização da caixa de ferramentas (caso já não esteja), clicando no menu (superior) Exibir e clicando com Caixa de Ferramentas.

Na caixa de ferramentas, adicione no seu Form:

  • Um botão de opção, nele coloque nas duas propriedades (Name) e Caption como PUBLICA
  • Um botão de opção, nele coloque nas duas propriedades (Name) e Caption como INTERNA
  • Um botão de opção, nele coloque nas duas propriedades (Name) e Caption como RESTRITA
  • Um botão de opção, nele coloque duas propriedades (Name) e Caption como CONFIDENCIAL
  • Um botão de comando, nele coloque duas propriedades (Name) e Caption como Enviar

Clique duas vezes sobre um dos botões, para ir para o código desse formulário, na tela do código apague tudo e deixe da seguinte forma:

Public opcaoclasse As String
Private Sub PUBLICA_Click()
     ThisOutlookSession.categoria = "[PUBLICA] - "
End Sub
Private Sub INTERNA_Click()
     ThisOutlookSession.categoria = "[INTERNA] - "
End Sub
Private Sub RESTRITA_Click()
     ThisOutlookSession.categoria = "[RESTRITA] - "
End Sub 
Private Sub CONFIDENCIAL_Click()
     ThisOutlookSession.categoria = "[CONFIDENCIAL] - "
End Sub
Private Sub Enviar_Click()
     If (ThisOutlookSession.categoria =  <> "") Then
         ThisOutlookSession.ValidaCategoria = True
         Unload UserForm1
     End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     If CloseMode = vbFormControlMenu Then
         ThisOutlookSession.categoria = ""
         ThisOutlookSession.ValidaCategoria = True
         ThisOutlookSession.CancelaValidacao = True
     End If
End Sub

Dica: Se você copiar e colar o código, verifique se as aspas não vão ficar diferentes, normalmente é necessário alterá-las.

Salve, mantenha o Microsoft Visual Basic for Applications aberto, vá no Outlook, tente mandar uma mensagem de teste sem colocar classificação na mensagem e veja se o formulário aparece exigindo a classificação.

Assinando Digitalmente a Macro

Para a Macro poder ser distribuída vamos assiná-la digitalmente. Para isso, no Microsoft Visual Basic for Applications, clique no menu superior Tools e escolha Digital Signature. Clique em Choose e escolha o certificado Outlook, que criamos.

Para distribuirmos, precisaremos copiar o arquivo %appdata%\Microsoft\Outlook\VbaProject.OTM para C:\Temp\VbaProject.OTM

Distribuindo a Macro para todos os computadores, via Política

Copie o arquivo C:\Temp\VbaProject.OTM para o compartilhamento Netlogon do seu AD

Em nosso exemplo vamos criar uma única política tanto para USUARIO, quanto para COMPUTADOR (para simplificar a implementação), para isso:

Crie uma GPO com nome Outlook – Subject Classification e link ela na OU onde estão os USUARIOS e link também onde estão os COMPUTADORES que deverão usar esse regra, edite essa GPO e:

Para instalar o certificado, vá em Computer Configuration, Policies, Windows Settings, Security Settings, Public Keys Policies e importe o certificado Certificado-Outlook.cer em:
Trusted Root Certification Authorities
Trusted Publishers
Para copiar a macro, localize o caminho User Configuration, Preferences, Windows Settings, Files. Clique com o botão direito sobre Files e escolha New -> File. Na tela seguinte configure da seguinte forma:
– Em Action, deixe como Replace
– Em Source file(s), deixe como \\SEUDOMINIO.COM\netlogon\VbaProject.OTM
– Em Destination File, deixe como %appdata%\Microsoft\Outlook\VbaProject.OTM

Testando a distribuição

Lembrando que esse teste precisa ser feito em um COMPUTADOR que está em uma OU onde a GPO está “linkada” E em um USUARIO que também está em uma OU onde a GPO está habilita.

No computador cliente, abra o CMD e execute o comando gpudate /force
Ao final, verifique se o certificado está instalado e se o arquivo %appdata%\Microsoft\Outlook\VbaProject.OTM existe.

Fontes/Referências

http://www.outlookcode.com/article.aspx?id=28
http://www.gmayor.com/create_and_employ_a_digital_cert.htm
https://www.remkoweijnen.nl/blog/2011/01/12/self-signing-word-macros/

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria