Настройка базы данных

Madmail теперь поддерживает GORM, что позволяет использовать различные базы данных и автоматическую миграцию (Auto Migration).

Важно: SQLite используется по умолчанию, но для высокой масштабируемости рекомендуется использовать PostgreSQL.

SQLite (по умолчанию)

Самая простая настройка для быстрого развертывания. Файл базы данных хранится по указанному пути.

storage.imapsql local_mail {
    driver sqlite3
    dsn ./madmail.db
}

PostgreSQL

Чтобы использовать PostgreSQL, сначала создайте базу данных на вашем сервере (вы можете использовать docker-compose.yml из этого проекта).

Пример конфигурации в madmail.conf:

storage.imapsql local_mail {
    driver postgres
    dsn "host=localhost user=test password=test dbname=test port=5432 sslmode=disable"
}

Учетные данные по умолчанию в Docker:

MySQL

Чтобы использовать MySQL, используйте следующий формат DSN:

storage.imapsql local_mail {
    dsn "user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
}

Кэши в памяти и данные на диске

Для производительности сервер может хранить в RAM копию строк учётных данных (auth.pass_table) и агрегаты квот (storage.imapsql). Источник истины — файлы базы данных.

Если вы меняете БД через CLI (madmail creds, madmail accounts, madmail imap-acct и т.д.) при работающем демоне, один раз вызовите Admin API POST /admin/cache/reload, чтобы процесс перечитал таблицы, либо перезапустите сервис.

Миграция

Сервис автоматически создает или обновляет необходимые таблицы при первом запуске. Нет необходимости выполнять SQL-команды вручную для создания таблиц quotas или contacts.