mdserver-web/plugins/mail/mail_init.py

70 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding:utf-8
import sys
import io
import os
import time
import re
sys.path.append(os.getcwd() + "/class/core")
import mw
app_debug = False
if mw.isAppleSystem():
app_debug = True
class mail_init:
def __init__(self):
self.logfile = '/tmp/mail_init.log'
def check_env(self):
data = {}
data['HostName'] = self.check_hostname()
data['Postfix-install'] = {"status": True, "msg": "Postfix已经安装"} if os.path.exists(
'/usr/sbin/postfix') else {"status": False, "msg": "Postfix未安装,请点击修复按钮"}
data['Dovecot-install'] = {"status": True, "msg": "Deovecot已经安装"} if os.path.exists(
'/usr/sbin/dovecot') else {"status": False, "msg": "Dovecot未安装,请点击修复按钮"}
data['Postfix-Version'] = self.check_postfix_ver()
data['Redis-install'] = {"status": True, "msg": "Redis已经安装"} if os.path.exists(
'/www/server/redis/src/redis-server') else {"status": False, "msg": "请到软件商店内安装Redis"}
data['Redis-Passwd'] = self.check_redis_passwd(data['Redis-install'])
data['Rspamd-install'] = {"status": True, "msg": "Rspamd已经安装"} if os.path.exists(
'/usr/bin/rspamd') else {"status": False, "msg": "Rspamd未安装,请点击修复按钮"}
data['Sqlite-support'] = self.check_sqlite()
data['SElinux'] = {"status": True, "msg": "SElinux已经禁用"} if not 'enforcing' in mw.execShell(
'getenforce')[0].lower() else {"status": False, "msg": "请先禁用SElinux"}
return data
def check_hostname(self):
import socket
rep = '^(?!:\/\/)(?=.{1,255}$)((.{1,63}\.){1,127}(?![0-9]*$)[a-z0-9-]+\.?)$'
hostname = socket.gethostname()
if re.search(rep, hostname):
return mw.returnData(True, 'success')
return mw.returnData(False, '你的主机名 ({}) 不合规定, 需要是完整域名'
'你可以通过以下命令修复你的主机名 '
'在ssh终端执行 \'hostnamectl set-hostname --static mail.example.com\''.format(hostname))
def check_postfix_ver(self):
postfix_version = mw.execShell(
r"postconf mail_version|sed -r 's/.* ([0-9\.]+)$/\1/'")[0].strip()
if postfix_version.startswith('3'):
return mw.returnData(True, postfix_version)
else:
return mw.returnData(False, "当前版本不支持或Postfix没有安装成功{}".format(postfix_version))
def check_redis_passwd(self, redis_install):
redis_conf = mw.readFile('/www/server/redis/redis.conf')
if redis_install['status']:
if re.search('\n\s*requirepass', redis_conf):
return mw.returnData(True, "Redis已经设置密码")
return mw.returnData(False, "请到Redis管理器设置密码")
def check_sqlite(self):
if not mw.execShell('postconf -m | grep sqlite')[0].strip():
return mw.returnData(False, "Postfix不支持Sqlite")
return mw.returnData(True, "Postfix已支持Sqlite")