初始化提交,包含完整的邮件系统代码

This commit is contained in:
huangzhenpc
2025-02-25 19:50:00 +08:00
commit aeffc4f8b8
52 changed files with 6673 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
"""
生产环境配置文件
此文件包含在生产环境中运行邮箱系统的优化设置
部署时请重命名为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)