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