Stack: Nginx + PHP 8.2 + MariaDB + Postfix + Dovecot + Samba - install.sh: script installation automatisé pour RPi OS Bookworm - Interface web: visionneuse mails + admin (comptes, domaine, dashboard) - Chaque compte mail génère automatiquement un share Samba - Processeur cron: extraction pièces jointes via zbateson/mail-mime-parser - Zéro injection SQL (PDO + prepared statements) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
64 lines
2.0 KiB
SQL
64 lines
2.0 KiB
SQL
-- copymail schema
|
|
-- MySQL/MariaDB
|
|
|
|
CREATE DATABASE IF NOT EXISTS copymail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
USE copymail;
|
|
|
|
CREATE TABLE IF NOT EXISTS config (
|
|
`key` VARCHAR(100) PRIMARY KEY,
|
|
value TEXT NOT NULL,
|
|
updated_at DATETIME DEFAULT NOW() ON UPDATE NOW()
|
|
);
|
|
|
|
INSERT INTO config (`key`, value) VALUES
|
|
('domain', 'mail.local'),
|
|
('hostname', 'raspberrypi'),
|
|
('smtp_port', '25'),
|
|
('submission_port','587'),
|
|
('imap_port', '143'),
|
|
('imaps_port', '993'),
|
|
('smb_workgroup', 'WORKGROUP'),
|
|
('install_done', '0')
|
|
ON DUPLICATE KEY UPDATE `key` = `key`;
|
|
|
|
CREATE TABLE IF NOT EXISTS accounts (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(64) NOT NULL UNIQUE,
|
|
email VARCHAR(200) NOT NULL UNIQUE,
|
|
display_name VARCHAR(100),
|
|
smb_path VARCHAR(255) NOT NULL,
|
|
active TINYINT(1) NOT NULL DEFAULT 1,
|
|
created_at DATETIME DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS source_file (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
account_id INT,
|
|
title VARCHAR(255),
|
|
sender VARCHAR(255),
|
|
file_name VARCHAR(255) NOT NULL,
|
|
date_processing DATETIME DEFAULT NOW(),
|
|
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS files (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
source_file_id INT,
|
|
file_name VARCHAR(255) NOT NULL,
|
|
path VARCHAR(500) NOT NULL,
|
|
FOREIGN KEY (source_file_id) REFERENCES source_file(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS admin_users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(64) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
created_at DATETIME DEFAULT NOW()
|
|
);
|
|
|
|
-- Mot de passe par défaut: admin / copymail2024
|
|
-- SHA-256 de "copymail2024"
|
|
INSERT INTO admin_users (username, password) VALUES
|
|
('admin', '$2y$12$placeholder_replaced_by_install_sh')
|
|
ON DUPLICATE KEY UPDATE username = username;
|