Active-Directory-Bilgileriyle-Group-Policy-Object-GPO-Kullanarak-Ucretsiz-Outlook-imza-Eklenmesi

Mail gönderirken altına gönderen kişinin bilgilerinin yer aldığı imza uygulamasını artık kullanmayan yoktur herhalde. Normal şartlarda her kullanıcı Outlook yazılımında kendine özel bir Mail İmzası tasarlayarak kullanabilmektedir. Öte yandan mail imza kullanımının yaygınlaşmasıyla birlikte Exchange kullanılan altyapılar için bu işi merkezi olarak yöneten CodeTwo, Exclaimer gibi ücretli profesyonel yazılımlar satılmaya başlamıştır.

Bu uygulamalar Exchange Mail sunucusu üzerine kurulmakta ve kullanıcı Outlook’da kendine Mail imzası hazırlamamış olsa bile mail trafiği mail sunucusundan geçerken Transport Servisinde bu yazılımlar mailin body kısmına o kullanıcı için tanımlanan mail imzasını mailin altına otomatik ekler. Bu yöntemde kullanıcı Mobilden, Outlookdan, OWA dan nerden gönderirse göndersin mail imzası sunucuda mailin altına eklenir. Bu yöntem kullanışlıdır ancak yüksek lisans maliyetlerine sahiptir.

Peki kullanıcıların outlook’ da kendilerinin hazırlayarak kullandıkları mail imza larını tüm bilgisayarlara belirleyeceğimiz formatta ayarlarsak en azından Outlook kullanılarak gönderilen maillerde imza standardımızı kullanmış olabiliriz.

Başlayalım…

Outlook’ da elle bir mail imzası tanımlandığında Outlook o imzayı html,txt ve rtf olarak 3 farklı formatta %AppData%\Microsoft\Signatures\ klasörü altına kaydeder. Bizim yapmamız gereken ise GPO ile tüm kullanıcıların Active Directorydeki Kullanıcı hesabındaki bilgileri kullanarak html, txt ve rtf formatında mail imza dosyalarını oluşturtup %AppData%\Microsoft\Signatures\ klasörüne kaydettirmek ve Outlook’un bizim belirlediğimiz bu İmza dosyalarını kullanmasını sağlamak.

Bu hususta Technet Gallery de farklı scriptler de gördüm ancak denemedim. Birazdan paylaşacağım scripti Erciyes Üniversitesinde Uzman olarak görevli arkadaşım Ayhan KOÇ ile hazırladık. Bu scriptin sonunda oluşacak Outlook imzası aşağıdaki formatta olacak. Ancak scriptin içindeki HTML taglarını değiştirerek  güncelleme yapabilirsiniz.

Technetdeki Scriptler için tıklayınız

Örnek Outlook İmza

Kullanacağımız Script Aşağıdadır. Bu kodları outlookimza.vbs olarak kaydedip GPO da kullanıcılarınıza Logon Script olarak uygulayınız. Logon scriptin Nasil uygulanacağını “Group Policy Object (GPO) ile Firefox Sertifika Yüklenmesi Nasil Yapılır?” isimli yazımda anlatmıştım.

'Option Explicit
On Error Resume Next

   Dim strSigName
   Dim strFullName, strTitle, strCompany, strTel, strFax, strEmail, strWeb, strCorpEmail
   Dim boolUpdateStyle
'==========================================================================
' Genel Bilgiler
'==========================================================================

'  Name signature
   strSigName  = "astronur"
'  If signature exists, overwrite (true) or leave alone (false)?
   boolUpdateStyle = true

'==========================================================================
' Kullanıcı Bilgilerinin AD den Okunması
'==========================================================================
   Dim objSysInfo, objUser

   Set objSysInfo = CreateObject("ADSystemInfo")
   Set objUser    = GetObject("LDAP://" & objSysInfo.Username)
   Set WshShell = WScript.CreateObject("WScript.Shell")
'==========================================================================
' Değişkenlerin Tanımlanması
'==========================================================================   
   strFullName   = objUser.displayname
   strTitle      = objUser.title
   strCompany    = objuser.company
   strTel        = objuser.telephoneNumber
   strFax        = objuser.facsimiletelephonenumber
   strWeb        = objuser.wwwhomepage
   strOffice     = Objuser.physicalDeliveryOfficeName
   strdepartment = Objuser.department
   strDahili     = Objuser.ipPhone
  
'==========================================================================
' Dahili Telefon var ise Telefon Numarasının yanına / ile birlikte yazılacak
'==========================================================================  
   If Len(strDahili)>0 Then strTel= strTel & " / " & strDahili End If 
   
   Set objUser    = Nothing
   Set objSysInfo = Nothing
   
'==========================================================================
' İmza Klasörü Belirleme
'==========================================================================
   Dim objShell
   Set objShell = CreateObject("WScript.Shell")
   strSigFolder = ObjShell.ExpandEnvironmentStrings("%appdata%") & "\Microsoft\Signatures\"
   Set objShell = Nothing


'==========================================================================
' İmza Dosyalarının Tanımlanması
'==========================================================================
   Dim objFSO, objFile
   Set objFSO   = CreateObject("Scripting.FileSystemObject")

   If Not (objFSO.FolderExists(strSigFolder)) Then
      Call objFSO.CreateFolder(strSigFolder)
   End If

   strHTMFile = strSigFolder & strSigName & ".htm"
   strRTFFile = strSigFolder & strSigName & ".rtf"
   strTXTFile = strSigFolder & strSigName & ".txt"
 
'Eğer Kullanıcı Bilgileri Domain Controller dan okunabiliyor ise
 if Len(strFullName)>0 then
 
'==========================================================================
' HTM Dosyası Oluştur / Bu bölümü kendi tasarımıza göre düzenleyiniz.
'==========================================================================
'chr(47) = /
   Err.Clear
   Set objFile = objFSO.CreateTextFile(strHTMFile, boolUpdateStyle, True)
   If Err.Number = 0 Then
      objFile.Write "<html> <head> <title> <" & Chr(47) & "title> <" & Chr(47) & "head> <body>"&vbCrLf
	  objFile.Write "<meta http-equiv="&"" & """" & "Content-Type" & """" & " content="&"""" & "text/html; charset=iso-8859-9" &""""&">"
	  objFile.Write "<table><tr> "&vbCrLf
	  objFile.Write "<td width=""76""><img src=""http://www.astronur.com/astronurlogo.png""><" & Chr(47) & "td>"&vbCrLf
	  objFile.Write "<td style=""padding-right:1px; ; background-color:#d1d1d1;""><" & Chr(47) & "td>"&vbCrLf
	  objFile.Write "<td width=""450"" text-align=""left"">"&vbCrLf
	  objFile.Write "<table><tr><td>"&vbCrLf
	  objFile.Write "<font style=""font-size:13px; color:#F48325; font-family:Calibri;"" ><b>"& strFullName & "<" & Chr(47) & "b><" & Chr(47) & "font><br"& Chr(47) &">"&vbCrLf
	  If strTitle <> "_" Then
	  objFile.Write "<font style=""font-size:13px; color:black; font-family:Calibri;"" >" & strTitle & "<" & Chr(47) & "font><br"& Chr(47) &">"&vbCrLf
	  End If
	  If strdepartment <> "" Then
	  objFile.Write "<font style=""font-size:12px; color:black; font-family:Calibri;"" >" & strdepartment  & "<" & Chr(47) & "font><br"& Chr(47) &">"&vbCrLf
	  End If
	  If Len(strTel)>0 Then
	  objFile.Write "<font style=""font-size:12px; color:black; font-family:Calibri;"" >" & strTel  & "<" & Chr(47) & "font><br"& Chr(47) &">"&vbCrLf
      End If
	  If Len(strOffice)>0 Then
	  objFile.Write "<font style=""font-size:12px; color:black; font-family:Calibri;"" >" & strOffice  & "<" & Chr(47) & "font><br"& Chr(47) &">"&vbCrLf
	  End If
	  objFile.Write "<"& Chr(47) &"td><"& Chr(47) & "tr><"& Chr(47) &"table>"&vbCrLf
	  objFile.Write "<"& Chr(47) &"td>"&vbCrLf
	  objFile.Write "<"& Chr(47) &"tr><"& Chr(47) &"table>"&vbCrLf
      objFile.Write "<" & Chr(47) & "body> <" & Chr(47) & "html> "&vbCrLf
      objFile.close
   End If


'==========================================================================
' TXT Dosyası Oluştur
'==========================================================================
   Err.Clear
   Set objFile = objFSO.CreateTextFile(strTXTFile, boolUpdateStyle, True)
   If Err.Number = 0 Then
      objFile.Write strFullName &vbCrLf
      objFile.Write strTitle &vbCrLf
      objFile.Write strdepartment &vbCrLf
      objFile.Write strTel &vbCrLf
	  objFile.Write strOffice &vbCrLf
	  objFile.Write strCompany &vbCrLf
      objFile.close
   End If


'==========================================================================
' RTF Dosyası Oluştur
'==========================================================================
   Err.Clear
   Set objFile = objFSO.CreateTextFile(strRTFFile, boolUpdateStyle, False)
   If Err.Number = 0 Then
      objfile.write "{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\froman\fprq2\fcharset2 Webdings;}}" &vbCrLF
      objfile.write "{\colortbl;\red031\green073\blue125;\red0\green0\blue255;\red0\green128\blue0;}" &vbCrLF
      objfile.write "{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\sb100\sa100\cf1\lang2057\f0\fs20 " & strFullName & "\line "&vbCrLf & "\line "&strTitle & "\line "&strdepartment & "\line "&strTel & "\line "&strOffice & "\line "&strCompany
      'objfile.write strTitle & "\line " & strCompany & "\line T: " & strTel & "   F: " & strFax & "\line E: "&vbCrLf
      'objfile.write "{\field{\*\fldinst{HYPERLINK ""mailto:" & strEmail & """}}{\fldrslt{\ul " & strEmail & "}}}\ulnone\f0\fs20    "&vbCrLf
      'objfile.write "{\field{\*\fldinst{HYPERLINK """ & strWeb & """}}{\fldrslt{\ul " & strWeb & "}}}\ulnone\f0\fs20\par" &vbCrLF
      'objfile.write "\cf3\f1\fs36 P\fs20  \f0 Please consider the environment - do you really need to print this email?\par" &vbCrLF
      objfile.write "\pard\cf1\lang1033\par" &vbCrLF
      objfile.write "}" &vbCrLF
      objFile.close
   End If


'==========================================================================
' Tidy-up
'==========================================================================
   set objFile = Nothing
   set objFSO  = Nothing
   
end if

Bu kod yığınında değiştirmeniz gereken alanları aşağıya yazıyorum.

12. Satır : imzanızın adını girin.

81. satır : Logonuzu yayınladığınız URL adresini değiştirin.

71-107 arası satırlar : html tag ları kendinize göre düzenleyebilirsiniz.

Scripti düzenledik ve kullanıcılara GPO ile uyguladık. Böylece %AppData%\Microsoft\Signatures\ klasörü altında astronur.html, astronur.txt ve astronur.rtf dosyaları oluşturuldu. Ancak Kullanıcı Outlook içinde kendisi de farklı isimle imza oluşturdu ise halen o imzayı kullanmaya devam edecektir. Sıradaki adımımız bu ayarında değiştirilmesidir.

Outlook hangi imza dosyasını kullanacağı bilgisini registry de aşağıdaki alanda tutar.

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\MailSettings\NewSignature

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\MailSettings\ReplySignature

Buradaki kırmızılı değişken Office Versiyonuna göre değişmektedir.

Şimdi NewSignature ve ReplySignature için değer olarak imza dosyamızın adı olan astronur ifadesini clientlere set etmemiz gerekmektedir. Bu ifade scriptin 12. satırında belirlediğimiz isimdir.

GPO uygulandıktan sonra Regisrty aşağıdaki gibi olmalıdır.

Outlook İmza registry Ekranı

Şimdi Sıra GPO ile registry değerini set etmekte.

GPO düzenleme ekranında “User Configuration\Preferences\Windows Settings\Registry” alanına sağ tıklayıp “New Registry Item” seçip aşağıdaki gibi dolduralım.

GPO ile Registry Item eklenmesi

KeyPath kısmına \Software\Microsoft\Office\16.0\Common\MailSettings\ yazalım. Resimde tam görünmüyor.

Burada kırmızı ile yazılı 16.0 Office 2016 için geçerlidir.

Eğer tüm bilgisayarlarınızda ofis versiyonu aynı ise tek bir Registry Item oluşturup o versiyon için geçerli değeri (15.0/14.0) kullanabilirsiniz. Farklı ise Item Level Targeting ile ayrıştırmanız gerekmektedir. Item Level Targeting Kullanımını bir başka yazıda yazmayı planlıyorum.

Bu yöntem ile Domainde olan, Outlook kullanan kullanıcılarınıza sizin belirlediğiniz standartta ve Active Directory bilgileri ile mail imza kullanmaya zorlayabilrsiniz. Ancak mobil cihazdan yada OWA dan gönderilen maillerde yine imza olmayacaktır.

OWA için de imza zorlaması yapılabiliyor Exchange Powershell kullanarak bunu da ayrı bir yazıda yazmayı planlıyorum.

Konu ile ilgili yorum bölümünden yazabilirsiniz.

Leave a Reply Cevabı iptal et

4 replies on “Active Directory Bilgileriyle Group Policy Object (GPO) Kullanarak Ücretsiz Outlook İmza Eklenmesi”

  • Erdinç
    Kasım 29, 2019 at 4:46 pm

    Merhabalar,

    Öncelikle paylaşımınız için teşekkür ederim . Bunu yaptıktan sonra GPo basmadan önce Nasil test edebilirim ?

    Teşekkürleri

    • Ocak 18, 2020 at 11:50 pm

      Bu işlemi uygulayacağınız kullanıcı hesaplarını farklı bir ou ya koyun yada gpo yu sadece o kullanıcılara uygulanacak şekilde ayarlayın.

  • Muhammed
    Haziran 29, 2020 at 2:04 pm

    Bu İşlemde Türkçe karakter sorunu oluşuyor bunu Nasil çözebiliriz.
    charset=iso-8859-9 düzenliyorum buratı utf-8 yapıyorum yine olmuyor yardımcı olabilir misiniz ?

  • Temmuz 10, 2020 at 10:21 am

    Merhaba,
    scripti notepad ile açıp farklı kaydet seçeneğinde encoding olarak UTF-8 seçip denermisiniz

Instagram

[instagram-feed num=6 cols=6 showfollow=false showheader=false showbutton=false showfollow=false]