Madmail теперь поддерживает GORM, что позволяет использовать различные базы данных и автоматическую миграцию (Auto Migration).
Важно: SQLite используется по умолчанию, но для высокой масштабируемости рекомендуется использовать PostgreSQL.
Самая простая настройка для быстрого развертывания. Файл базы данных хранится по указанному пути.
storage.imapsql local_mail {
driver sqlite3
dsn ./madmail.db
}
Чтобы использовать 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:
testtesttestЧтобы использовать 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.