mail 添加域名

pull/199/head
midoks 3 years ago
parent 33faf1e54c
commit 372dbc8995
  1. 80
      plugins/mail/index.py

@ -5,7 +5,20 @@ import io
import os
import time
from datetime import datetime
try:
import dns.resolver
except:
if os.path.exists(os.getcwd() + '/bin'):
mw.mw(os.getcwd() + '/bin/pip install dnspython')
else:
mw.execShell('pip install dnspython')
import dns.resolver
sys.path.append(os.getcwd() + "/class/core")
import mw
app_debug = False
@ -52,7 +65,7 @@ def status():
return 'start'
def pSqliteDb(dbname='domain'):
def M(dbname='domain'):
file = getServerDir() + '/postfixadmin.db'
name = 'mail'
if not os.path.exists(file):
@ -72,9 +85,74 @@ def pSqliteDb(dbname='domain'):
return conn
def __check_a(hostname):
key = '{0}:{1}'.format(hostname, 'A')
now = int(time.time())
value = ""
error_ip = ""
ipaddress = mw.getLocalIp()
if not ipaddress:
return False, {"status": 0, "v_time": now, "value": error_ip}
try:
resolver = dns.resolver.Resolver()
resolver.timeout = 1
try:
result = resolver.resolve(hostname, 'A')
except:
result = resolver.query(hostname, 'A')
for i in result.response.answer:
for j in i.items:
error_ip = j
if str(j).strip() in ipaddress:
value = str(j).strip()
if value:
return True, {"status": 1, "v_time": now, "value": value}
return False, {"status": 0, "v_time": now, "value": error_ip}
except Exception as e:
raise e
return False, {"status": 0, "v_time": now, "value": error_ip}
def addDomain():
args = getArgs()
if 'domain' not in args:
return mw.returnJson(False, '请传入域名')
domain = args['domain']
a_record = args['a_record']
if not a_record.endswith(domain):
return mw.returnJson(False, 'A记录 [{}] 不属于该域名'.format(a_record))
if not mw.isDebugMode():
check = __check_a(a_record)
if not check[0]:
return mw.returnJson(False, 'A记录解析失败<br>域名:{}<br>IP:{}'.format(a_record, check[1]['value']))
if M('domain').where("domain=?", (domain,)).count() > 0:
return mw.returnJson(False, '该域名已存在')
cur_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
try:
M('domain').add('domain,a_record,created',
(domain, a_record, cur_time))
except:
return mw.returnJson(False, '邮局没有初始化成功!<br>'
'请尝试重新初始化,<br>'
'如果以下端口没访问将无法初始化 <br>port 25 [outbound direction]<br> '
'你可以尝试执行以下命令测试端口是否开启:<br><br> [ telnet gmail-smtp-in.l.google.com 25 ] <br> ')
# 在虚拟用户家目录创建对应域名的目录
if os.path.exists('/www/vmail'):
if not os.path.exists('/www/vmail/{0}'.format(domain)):
os.makedirs('/www/vmail/{0}'.format(domain))
mw.execShell('chown -R vmail:mail /www/vmail/{0}'.format(domain))
return mw.returnJson(False, 'OK')

Loading…
Cancel
Save