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

