
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
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.
Ş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.
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
Yorum yapabilmek için giriş yapmalısınız.
4 replies on “Active Directory Bilgileriyle Group Policy Object (GPO) Kullanarak Ücretsiz Outlook İmza Eklenmesi”
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
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.
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 ?
Merhaba,
scripti notepad ile açıp farklı kaydet seçeneğinde encoding olarak UTF-8 seçip denermisiniz