İmkansız denen şeyler çoğunlukla denenmemiş olanlardır.
Jim Goodvin
Delicious StumbleUpon Digg Twitter Facebook

Courier E-Posta Sunucusu İçin Hesap Ekleme Yardımcısı

Yazan : admin Tarih : September 3, 2008-1:22 am Etiketler : ,

Courier kullanıyorsanız, alan adı ve bu alan adı altına e-posta hesabı eklemek için konsolla epey uğraşmanız gerekiyor. Bu süreyi kısaltmak için Python ile yazılan aşağıdaki kodları kullanabilirsiniz. Gerçi web üzerinde courier bu tür işlemler için bir yardımcı araç sunmakta ancak pek uğraşmak istemedim. Bu şekilde daha basit ve en azından geri planda ne yapıldığını biliyorum. Şimdilik sadece ekleme işlemi yapılıyor.

 
#-*- coding: utf-8 -*-
 
import os
import sys
import glob
 
courier_global_home 	= "/home/postahesaplari"
courier_global_uid 	= 1004
courier_global_gid 	= 1004
courier_global_uid_name = "postahesaplari"
courier_global_gid_name = "postahesaplari"
courier_global_quota	= 10485760
 
def courier_add_domain(domain):
	print "Courier : %s ekleniyor..." %(domain)
	os.system("echo %s >> /etc/courier/hosteddomains/webadmin"
		%(domain))
	os.system("echo %s >> /etc/courier/esmtpacceptmailfor.dir/webadmin"
		%(domain))
	os.system("makehosteddomains")
	os.system("makesmtpaccess")
	os.system("mkdir %s/%s"
		%(courier_global_home,domain))
	courier_add_account(domain,"postmaster")
	print "Courier : %s eklendi." %(domain)
 
def courier_delete_domain(domain):
	print "Courier : %s siliniyor..." %(domain)
 
	domains = ""
	for i in open("/etc/courier/hosteddomains/webadmin","r"):
		if not i.replace("\n","")==domain:
			domains = "%s%s\n" %(domains,i.replace("\n",""))
	open("/etc/courier/hosteddomains/webadmin","w").write(domains)
	domains = ""
	for i in open("/etc/courier/esmtpacceptmailfor.dir/webadmin","r"):
		if not i.replace("\n","")==domain:
			domains = "%s%s\n" %(domains,i.replace("\n",""))
	open("/etc/courier/esmtpacceptmailfor.dir/webadmin","w").write(domains)
	os.system("makehosteddomains")
	os.system("makesmtpaccess")
 
	for i in glob.glob("%s/%s/*" %(courier_global_home,domain)):
		courier_delete_account(domain,i.split("/")[len(i.split("/"))-1])
	os.system("rm -Rf %s/%s" %(courier_global_home,domain))
 
	print "Courier : %s silindi." %(domain)
 
def courier_add_account(domain,account,name="",quota=-1):
	print "Courier : %s@%s ekleniyor..." %(account,domain)
	if quota==-1:
		quota = courier_global_quota
	os.system("userdb \"%s@%s\" set home=%s/%s/%s uid=%s gid=%s name=\"%s\" quota=%s"
		%(account,domain,courier_global_home,domain,account,courier_global_uid,courier_global_gid,name,quota))
	print "Courier : %s@%s parolasini giriniz." %(account,domain)
	os.system("userdbpw | userdb \"%s@%s\" set systempw"
		%(account,domain))
	os.system("makeuserdb")
	os.system("mkdir %s/%s/%s"
		%(courier_global_home,domain,account))
	os.system("maildirmake %s/%s/%s/Maildir"
		%(courier_global_home,domain,account))
	os.system("chown -R %s:%s %s/%s/%s"
		%(courier_global_uid_name,courier_global_gid_name,courier_global_home,domain,account))
	print "Courier : %s@%s eklendi." %(account,domain)
 
def courier_delete_account(domain,account):
	print "Courier : %s@%s siliniyor..." %(account,domain)
	os.system("userdb \"%s@%s\" del"
		%(account,domain))
	os.system("rm -Rf %s/%s/%s"
		%(courier_global_home,domain,account))
	os.system("makeuserdb")
	print "Courier : %s@%s silindi." %(account,domain)
 
if __name__=="__main__":
	mod 	= None
	domain 	= None
	account	= None
	name	= ""
	quota	= -1
 
	if "--mod" in sys.argv:
		mod 	= sys.argv[sys.argv.index("--mod")+1]
	if "--domain" in sys.argv:
		domain 	= sys.argv[sys.argv.index("--domain")+1]
	if "--account" in sys.argv:
		account = sys.argv[sys.argv.index("--account")+1]
	if "--name" in sys.argv:
		name	= sys.argv[sys.argv.index("--name")+1]
	if "--quota" in sys.argv:
		quota	= sys.argv[sys.argv.index("--quota")+1]
 
	if mod=="add_domain":
		courier_add_domain(domain)
 
	elif mod=="add_account":
		courier_add_account(domain,account,name,quota)
 
	elif mod=="delete_domain":
		courier_delete_domain(domain)
 
	elif mod=="delete_account":
		courier_delete_account(domain,account)
 

Alan adı ekleme işlemi:

 
# python courier.py --mod add_domain --domain alanadi.com
 

E-Posta hesabı ekleme işlemi:

 
# python courier.py --mod add_account --domain alanadi.com --account info
 

Alan adi silme işlemi:

 
# python courier.py --mod delete_domain --domain alanadi.com
 

E-Posta hesabı silme işlemi:

 
# python courier.py --mod delete_account --domain alanadi.com --account info
 

Kolay, GAE ve Django kullanarak yazılan uygulamaların grafiksel ortamda çalıştırılabilmesini ve yönetilebilmesini sağlar.

http://kolay.googlecode.com
Günümüzde bir çok site ya da e-posta servisine üye olmamız gerekebiliyor. Tüm bu üyeliklerde aynı şifreyi kullanmak güvenlik açısından ne yazık ki bir risk oluşturmakta. Ayrıca tüm bu şifreleri akılda tutmak büyük çaba gerektirirken, bunları bir yere not etmekte birilerinin eline geçmesine fırsat vermektedir.

Hatırlat programı ile şifrelerinizi kategorilendirerek kayıt altında tutabilirsiniz. Verileriniz kaydedilirken sizin belirlediğiniz bir anahtar vasıtasıyla gizlendiği için birileri veritabanına erişse bile bunu çözmesi epey güç olacak.

İşletim sistemi değişikliklerinde ya da yeni sistem kurulumunda, programdaki yedekleme/geri yükleme özelliğini kullanarak bilgilerinizi taşıyabileceksiniz (Bu özellik henüz projeye dahil edilmemiştir).

http://hatirlat.googlecode.com
Yapılacak işlerle ilgili küçük notlar almanızı sağlar.

http://notal.googlecode.com