Friday, December 7, 2012

Google Apps: Setup Send-as alias (GMail setting) berdasarkan Nickname (CPanel)


By-default, Nickname atau alias yang di-set pada Google Apps Control Panel hanya berfungsi untuk menerima email. Seperti pada contoh gambar berikut:
user eddy[at]sadaweb[dot]com, selain bisa menerima dari  eddy[at]sadaweb[dot]com, juga bisa menerima email dari eddy.mulyono[at]sadaweb[dot]com dan masuk pada Mailbox yang sama.

Sedangkan apabila user juga ingin mengirim email menggunakan Nickname/Alias yang dia miliki, maka dia harus melakukan langkah-langkah tambahan yang harus dilakukan dari halaman Setting GMail sebagai mana yang dijelaskan pada tutorial berikut.

Apabila Anda adalah seorang Administrator Google Apps yang tidak mau membebani end-user untuk melakukan langkah-langkah tambahan tersebut, Anda bisa memanfaatkan Provisioning API dan Email Settings API untuk mengotomatisasi proses ini.

Authorize API dengan OAuth 2.0

#Generate Client ID dan Client Secret dari https://code.google.com/apis/console/
CLIENT_ID = 'xxxxxxxxxxxx.apps.googleusercontent.com' 
CLIENT_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
#Scope untuk Provisioning API (User dan Alias) dan Email Setting API
SCOPE = 'https://apps-apis.google.com/a/feeds/user/ https://apps-apis.google.com/a/feeds/alias/ https://apps-apis.google.com/a/feeds/emailsettings/2.0/'
USER_AGENT = 'GApps-Alias2SendAs/0.1'
#Diawal kosong, namun apabila sudah generate bisa langsung di hard-code disini suapaya tidak melakukan Authorize berulang-ulang
REFRESH_TOKEN = ''

def genenrate_oauth_token():
  global REFRESH_TOKEN
  token = gdata.gauth.OAuth2Token(
          client_id=CLIENT_ID, client_secret=CLIENT_SECRET,
          scope=SCOPE, user_agent=USER_AGENT,
          refresh_token=REFRESH_TOKEN)
  if (REFRESH_TOKEN == ''):
    uri = token.generate_authorize_url()
    print 'Please visit this URL to authorize the application:'
    print uri
    code = raw_input('What is the verification code? ').strip()
    code
    token.get_access_token(code)
    #cache to config
    print 'Refresh token: ' + token.refresh_token
    REFRESH_TOKEN = token.refresh_token
  
  return token

Retrieve Nickname menggunakan Provisioning API

import gdata.apps.multidomain.client;
...
def retrieve_alias(email):
  username = email[:email.find('@')]
  domain = email[email.find('@')+1:]
  multiDomainClient = gdata.apps.multidomain.client.MultiDomainProvisioningClient(domain=domain)
  token = genenrate_oauth_token()  
  token.authorize(multiDomainClient)
  multiDomainClient.ssl = True
  response = multiDomainClient.RetrieveAllUserAliases(email)
  for entry in response.entry:    
    print 'Email: %s, Alias: %s' % (entry.GetUserEmail(), entry.GetAliasEmail())

Setup Send-As menggunakan Email Settings API

import gdata.apps.emailsettings.client
...
def create_sendas(email, alias):
  username = email[:email.find('@')]
  domain = email[email.find('@')+1:]
  client = gdata.apps.emailsettings.client.EmailSettingsClient(domain=domain)
  token = genenrate_oauth_token()  
  token.authorize(client)
  client.ssl = True
  response = client.CreateSendAs(username=username, name=alias, address=alias, make_default=False)
Download full source code: http://goo.gl/wCVOd


Sample code ini akan sangat bermanfaat bagi Anda yang memaksimalkan fungsi Alias/Nickname untuk semua user Google Apps do Organisasi Anda. Contoh yang pernah saya temui, ada suatu institusi yang mengharuskan user-user mereka Login ke Google Apps menggunakan Nomor Induk atau ID, yang sulit diingat sebagai alamat email. Sehingga mereka juga setup Nickname yang menggunakan nama user, yang tentu saja lebih mudah diingat.

Semoga bermanfaat!

No comments:

Post a Comment