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>
This commit is contained in:
63
sql/schema.sql
Normal file
63
sql/schema.sql
Normal file
@@ -0,0 +1,63 @@
|
||||
-- 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;
|
||||
Reference in New Issue
Block a user