Files
copymailrpi/sql/schema.sql
Jules 0be1b9119a init: projet complet copymail pour Raspberry Pi
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>
2026-05-04 09:36:35 +02:00

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;