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.