120 lines
4.2 KiB
Python
120 lines
4.2 KiB
Python
|
|
#!/usr/bin/env python
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
"""
|
|||
|
|
邮件系统配置文件示例
|
|||
|
|
复制此文件为 config.py 并根据实际情况修改配置
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import os
|
|||
|
|
import logging
|
|||
|
|
from datetime import timedelta
|
|||
|
|
|
|||
|
|
# 基础配置
|
|||
|
|
DEBUG = True # 是否启用调试模式
|
|||
|
|
SECRET_KEY = "请替换为随机生成的安全密钥" # Flask应用密钥
|
|||
|
|
TESTING = False # 是否为测试环境
|
|||
|
|
|
|||
|
|
# 目录配置
|
|||
|
|
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
|||
|
|
TEMP_DIR = os.path.join(BASE_DIR, "temp") # 临时文件目录
|
|||
|
|
UPLOAD_DIR = os.path.join(BASE_DIR, "uploads") # 上传文件目录
|
|||
|
|
ATTACHMENT_DIR = os.path.join(BASE_DIR, "attachments") # 邮件附件存储目录
|
|||
|
|
EMAIL_STORAGE_DIR = os.path.join(BASE_DIR, "emails") # 原始邮件存储目录
|
|||
|
|
|
|||
|
|
# 确保目录存在
|
|||
|
|
for dir_path in [TEMP_DIR, UPLOAD_DIR, ATTACHMENT_DIR, EMAIL_STORAGE_DIR]:
|
|||
|
|
os.makedirs(dir_path, exist_ok=True)
|
|||
|
|
|
|||
|
|
# 数据库配置
|
|||
|
|
# SQLite配置示例
|
|||
|
|
DB_TYPE = "sqlite"
|
|||
|
|
DB_PATH = os.path.join(BASE_DIR, "email_system.db")
|
|||
|
|
SQLALCHEMY_DATABASE_URI = f"sqlite:///{DB_PATH}"
|
|||
|
|
|
|||
|
|
# MySQL配置示例 (取消注释并修改配置以使用MySQL)
|
|||
|
|
# DB_TYPE = "mysql"
|
|||
|
|
# MYSQL_HOST = "localhost"
|
|||
|
|
# MYSQL_PORT = 3306
|
|||
|
|
# MYSQL_USER = "emailsystem"
|
|||
|
|
# MYSQL_PASSWORD = "your_password"
|
|||
|
|
# MYSQL_DB = "emailsystem"
|
|||
|
|
# SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}"
|
|||
|
|
|
|||
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|||
|
|
SQLALCHEMY_ECHO = False # 是否显示SQL语句 (调试用)
|
|||
|
|
|
|||
|
|
# SMTP服务器配置
|
|||
|
|
SMTP_HOST = "0.0.0.0" # SMTP服务器地址
|
|||
|
|
SMTP_PORT = 25 # SMTP服务器端口
|
|||
|
|
SMTP_SSL_PORT = 465 # SMTP SSL端口 (如需启用)
|
|||
|
|
SMTP_USE_SSL = False # 是否启用SSL
|
|||
|
|
SMTP_USERNAME = None # SMTP用户名 (如需认证)
|
|||
|
|
SMTP_PASSWORD = None # SMTP密码 (如需认证)
|
|||
|
|
SMTP_MAX_MESSAGE_SIZE = 20 * 1024 * 1024 # 最大邮件大小 (20MB)
|
|||
|
|
SMTP_TIMEOUT = 60 # SMTP超时时间 (秒)
|
|||
|
|
|
|||
|
|
# API配置
|
|||
|
|
API_PREFIX = "/api" # API前缀
|
|||
|
|
API_DEFAULT_LIMIT = 10 # 默认分页大小
|
|||
|
|
API_MAX_LIMIT = 100 # 最大分页大小
|
|||
|
|
API_RATE_LIMIT = "60/minute" # API速率限制
|
|||
|
|
API_VERSION = "1.0.0" # API版本
|
|||
|
|
|
|||
|
|
# 监控和日志配置
|
|||
|
|
LOG_LEVEL = logging.INFO # 日志级别
|
|||
|
|
LOG_FILE = os.path.join(BASE_DIR, "email_system.log") # 日志文件路径
|
|||
|
|
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" # 日志格式
|
|||
|
|
LOG_MAX_SIZE = 10 * 1024 * 1024 # 日志文件最大大小 (10MB)
|
|||
|
|
LOG_BACKUP_COUNT = 5 # 日志文件备份数
|
|||
|
|
|
|||
|
|
# Web界面配置
|
|||
|
|
WEB_HOST = "0.0.0.0" # Web服务器地址
|
|||
|
|
WEB_PORT = 5000 # Web服务器端口
|
|||
|
|
WEB_USE_SSL = False # 是否启用SSL
|
|||
|
|
WEB_SSL_CERT = None # SSL证书路径
|
|||
|
|
WEB_SSL_KEY = None # SSL密钥路径
|
|||
|
|
|
|||
|
|
# 邮件系统配置
|
|||
|
|
ALLOWED_DOMAINS = ["example.com", "test.com"] # 允许接收的域名列表
|
|||
|
|
AUTO_CREATE_DOMAIN = True # 是否自动创建域名
|
|||
|
|
AUTO_CREATE_MAILBOX = True # 是否自动创建邮箱
|
|||
|
|
DEFAULT_ENCODING = "utf-8" # 默认编码
|
|||
|
|
|
|||
|
|
# 缓存配置
|
|||
|
|
CACHE_TYPE = "simple" # 缓存类型 (simple, redis, memcached等)
|
|||
|
|
CACHE_DEFAULT_TIMEOUT = 300 # 缓存默认超时时间 (秒)
|
|||
|
|
|
|||
|
|
# Redis配置 (如使用Redis缓存)
|
|||
|
|
# REDIS_HOST = "localhost"
|
|||
|
|
# REDIS_PORT = 6379
|
|||
|
|
# REDIS_PASSWORD = None
|
|||
|
|
# REDIS_DB = 0
|
|||
|
|
|
|||
|
|
# 验证码提取配置
|
|||
|
|
VERIFICATION_CODE_PATTERNS = [
|
|||
|
|
r"验证码[::\s]*([0-9]{4,6})", # 中文验证码格式
|
|||
|
|
r"verification code[::\s]*([0-9]{4,6})", # 英文验证码格式
|
|||
|
|
r"code[::\s]*([0-9a-zA-Z]{4,8})", # 通用验证码格式
|
|||
|
|
r"([0-9]{6})" # 纯数字验证码
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 邮件清理配置
|
|||
|
|
EMAIL_RETENTION_DAYS = 30 # 邮件保留天数
|
|||
|
|
EMAIL_CLEANUP_INTERVAL = 60 * 60 * 24 # 邮件清理间隔 (秒)
|
|||
|
|
ATTACHMENT_MAX_SIZE = 50 * 1024 * 1024 # 附件最大大小 (50MB)
|
|||
|
|
|
|||
|
|
# 安全配置
|
|||
|
|
TRUSTED_HOSTS = ["localhost", "127.0.0.1"] # 信任的主机列表
|
|||
|
|
CORS_ORIGINS = ["http://localhost:3000", "http://localhost:5000"] # CORS允许的源
|
|||
|
|
JWT_SECRET_KEY = "请替换为随机生成的JWT密钥" # JWT密钥
|
|||
|
|
JWT_ACCESS_TOKEN_EXPIRES = timedelta(hours=1) # JWT访问令牌过期时间
|
|||
|
|
JWT_REFRESH_TOKEN_EXPIRES = timedelta(days=30) # JWT刷新令牌过期时间
|
|||
|
|
|
|||
|
|
# 性能配置
|
|||
|
|
WORKER_PROCESSES = os.cpu_count() or 4 # 工作进程数
|
|||
|
|
WORKER_THREADS = 2 # 每个进程的线程数
|
|||
|
|
MAX_REQUESTS = 1000 # 每个工作进程处理的最大请求数
|
|||
|
|
|
|||
|
|
# 自定义配置
|
|||
|
|
# 在此处添加您的自定义配置
|