-- IMAP-Postfach für das Ticketsystem: eingehende Mails werden abgerufen, bekannten Tickets/Kunden -- zugeordnet oder als neues Ticket angelegt; unbekannte Absender landen zur manuellen Zuordnung -- im Posteingang (siehe inbox_messages). CREATE TABLE imap_settings ( id TINYINT PRIMARY KEY DEFAULT 1, host VARCHAR(253) NULL, port SMALLINT UNSIGNED NOT NULL DEFAULT 993, secure_mode ENUM('tls','starttls') NOT NULL DEFAULT 'tls', username VARCHAR(200) NULL, secrets_enc TEXT NULL, folder VARCHAR(200) NOT NULL DEFAULT 'INBOX', enabled TINYINT(1) NOT NULL DEFAULT 0, last_uid BIGINT UNSIGNED NULL, last_checked_at DATETIME(3) NULL, last_error VARCHAR(500) NULL, updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), updated_by CHAR(36) NULL REFERENCES users(id), CONSTRAINT chk_imap_singleton CHECK (id = 1) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO imap_settings (id) VALUES (1); CREATE TABLE inbox_messages ( id CHAR(36) PRIMARY KEY, uid BIGINT UNSIGNED NOT NULL, message_id VARCHAR(998) NULL, from_email VARCHAR(254) NOT NULL, from_name VARCHAR(200) NULL, subject VARCHAR(500) NULL, body_text MEDIUMTEXT NULL, received_at DATETIME(3) NOT NULL, status ENUM('matched','created','unmatched','ignored') NOT NULL DEFAULT 'unmatched', ticket_id CHAR(36) NULL REFERENCES tickets(id), matched_user_id CHAR(36) NULL REFERENCES users(id), created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), UNIQUE KEY uk_inbox_uid (uid), KEY idx_inbox_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;