""" 生产环境配置文件 此文件包含在生产环境中运行邮箱系统的优化设置 部署时请重命名为local_settings.py """ import platform import os import logging from logging.handlers import RotatingFileHandler import multiprocessing # 基础配置 IS_PRODUCTION = True LOG_LEVEL = 'INFO' # 可选: DEBUG, INFO, WARNING, ERROR, CRITICAL # SMTP服务器配置 SMTP_HOST = '0.0.0.0' # 监听所有网络接口 SMTP_PORT = 25 # 标准SMTP端口 # 如果ISP阻止了25端口,可以使用备用端口 # SMTP_PORT = 587 # 备用端口 # 性能优化 # 自动根据CPU核心数调整工作线程数 CPU_COUNT = multiprocessing.cpu_count() WORKER_THREADS = max(2, min(CPU_COUNT * 2, 8)) # 至少2个线程,最多8个线程 # 邮件处理优化 MAX_EMAIL_SIZE = 25 * 1024 * 1024 # 25MB,单个邮件最大大小 EMAIL_BATCH_SIZE = 50 # 批处理邮件数量 EMAIL_RETENTION_DAYS = 30 # 邮件保留天数,超过此天数的邮件将被自动清理 # 存储路径配置 MAIL_STORAGE_PATH = os.path.join(os.getcwd(), 'email_data') LOG_FILE = os.path.join(os.getcwd(), 'logs', 'email_system.log') # 安全设置 ENABLE_RATE_LIMITING = True # 启用API请求限流 API_RATE_LIMIT = '120/minute' # 每分钟最大请求数 ENABLE_IP_WHITELIST = False # 是否启用IP白名单 IP_WHITELIST = ['127.0.0.1'] # 允许访问API的IP列表 # 垃圾邮件过滤设置 ENABLE_SPAM_FILTER = True # 启用简单的垃圾邮件过滤 SPAM_KEYWORDS = ['casino', 'lottery', 'viagra', 'prescription', 'winner', 'prize', 'bitcoin'] MAX_RECIPIENTS_PER_EMAIL = 50 # 单封邮件最大收件人数量 # 邮件域名白名单(只接收这些域名的邮件,空列表表示接收所有) DOMAIN_WHITELIST = [] # 日志配置 def setup_logging(): """配置系统日志""" log_dir = os.path.dirname(LOG_FILE) if not os.path.exists(log_dir): os.makedirs(log_dir) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 文件处理器 - 使用循环日志文件,最大10MB,保留10个备份 file_handler = RotatingFileHandler( LOG_FILE, maxBytes=10*1024*1024, backupCount=10 ) file_handler.setFormatter(formatter) file_handler.setLevel(getattr(logging, LOG_LEVEL)) # 控制台处理器 console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) console_handler.setLevel(getattr(logging, LOG_LEVEL)) # 配置根日志记录器 root_logger = logging.getLogger() root_logger.setLevel(getattr(logging, LOG_LEVEL)) root_logger.addHandler(file_handler) root_logger.addHandler(console_handler) logging.info("生产环境日志系统初始化完成") # 自动清理功能 ENABLE_AUTO_CLEANUP = True # 启用自动清理 CLEANUP_INTERVAL_HOURS = 24 # 每24小时运行一次清理 # 监控设置 ENABLE_MONITORING = True # 启用系统监控 MONITOR_INTERVAL_MINUTES = 5 # 监控间隔(分钟) # 在应用启动时设置日志 try: setup_logging() logging.info("已加载生产环境配置") except Exception as e: print(f"日志设置失败: {str(e)}") # 系统启动时记录配置信息 if IS_PRODUCTION: logging.info(f"SMTP服务器配置: {SMTP_HOST}:{SMTP_PORT}") logging.info(f"工作线程数: {WORKER_THREADS}") logging.info(f"邮件存储路径: {MAIL_STORAGE_PATH}") logging.info(f"日志级别: {LOG_LEVEL}") # 创建必要的目录 os.makedirs(MAIL_STORAGE_PATH, exist_ok=True) os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)