mail/app/config.py
deeily 5024bf9a8d init: full mail stack — phases 0..8 (web client, admin, IMAP/SMTP,
sieve, search, sessions, dramatiq, deploy/install, ELK, monitoring)
2026-04-29 16:30:43 +03:00

54 lines
1.8 KiB
Python

import os
from pathlib import Path
from dotenv import load_dotenv
BASE_DIR = Path(__file__).resolve().parent.parent
load_dotenv(BASE_DIR / ".env")
def _bool(name: str, default: bool = False) -> bool:
v = os.getenv(name)
if v is None:
return default
return v.lower() in ("1", "true", "yes", "on")
class Config:
SECRET_KEY = os.getenv("FLASK_SECRET_KEY", "dev-secret-change-me")
SQLALCHEMY_DATABASE_URI = os.getenv(
"DATABASE_URL", "postgresql+psycopg://mail:mail@localhost:5432/mail"
)
SQLALCHEMY_TRACK_MODIFICATIONS = False
REDIS_URL = os.getenv("REDIS_URL", "redis://localhost:6379/0")
MEILI_URL = os.getenv("MEILI_URL", "http://localhost:7700")
MEILI_KEY = os.getenv("MEILI_KEY", "masterKey")
MAIL_SERVER_HOSTNAME = os.getenv("MAIL_SERVER_HOSTNAME", "mail.local")
MAIL_SERVER_IP = os.getenv("MAIL_SERVER_IP", "127.0.0.1")
IMAP_HOST = os.getenv("IMAP_HOST", "127.0.0.1")
IMAP_PORT = int(os.getenv("IMAP_PORT", "143"))
IMAP_PASSWORD = os.getenv("IMAP_PASSWORD", "")
SMTP_HOST = os.getenv("SMTP_HOST", "127.0.0.1")
SMTP_PORT = int(os.getenv("SMTP_PORT", "587"))
SEND_DEFER_SECONDS = int(os.getenv("SEND_DEFER_SECONDS", "30"))
DEFAULT_QUOTA_MB = int(os.getenv("DEFAULT_QUOTA_MB", "20480"))
TRASH_RETENTION_DAYS = int(os.getenv("TRASH_RETENTION_DAYS", "30"))
ELK_HOST = os.getenv("ELK_HOST", "")
ELK_PORT = int(os.getenv("ELK_PORT", "5140"))
ELK_PROTO = os.getenv("ELK_PROTO", "tcp")
TZ = os.getenv("TZ", "Europe/Moscow")
LOCALE = os.getenv("LOCALE", "ru_RU.UTF-8")
USE_MOCK_MAIL = _bool("USE_MOCK_MAIL", True)
# Comma-separated list of admin emails. Admins see /admin/* and the «Сервер» flyout.
ADMINS = os.getenv(
"ADMINS",
"admin@mail.local,admin@tempmail.kimchitogo.rest",
)