# Projet copymail ## Description Système de réception et distribution automatique de pièces jointes par email. Tourne sur Raspberry Pi OS (Debian Bookworm). Remplace une solution Synology existante. ## Concept 1. Un email avec PJ arrive sur le serveur mail 2. Le processeur (cron 1 min) extrait les PJ 3. Les fichiers sont déposés dans le share SMB du compte destinataire 4. L'interface web permet de consulter l'historique et gérer les comptes ## Stack - **OS** : Raspberry Pi OS Lite (Bookworm / Debian 12) - **Web** : Nginx + PHP 8.2-FPM + MariaDB - **Mail** : Postfix (SMTP) + Dovecot (IMAP) — virtual mailboxes - **Partage fichiers** : Samba (un share par compte) - **Traitement** : PHP CLI via cron, lib `zbateson/mail-mime-parser` ## Infrastructure - App déployée dans `/opt/copymail/` - Mails stockés dans `/var/mail/vhosts///Maildir/` - Fichiers extraits dans `/srv/copymail//` - Config BDD : `/opt/copymail/config.php` (généré par install.sh) ## Installation ```bash # Variables optionnelles (sinon valeurs par défaut) export COPYMAIL_DOMAIN="mail.mondomaine.fr" export COPYMAIL_HOSTNAME="raspberrypi" export COPYMAIL_ADMIN_PASS="monmotdepasse" sudo bash install.sh ``` ## Comptes mail Créés via l'interface web `/admin/accounts.php`. Chaque compte crée automatiquement : - Boîte mail `user@domain` - Dossier Maildir - Share Samba `\\serveur\user` ## Structure fichiers ``` /opt/copymail/ ├── install.sh ├── config.php ← généré à l'install (BDD credentials) ├── sql/schema.sql ├── web/ ← webroot Nginx │ ├── index.php ← visionneuse mails │ ├── login.php / logout.php │ ├── admin/ │ │ ├── index.php ← dashboard statut services │ │ ├── domain.php ← config domaine + ports │ │ └── accounts.php ← gestion comptes │ ├── mail/download.php │ ├── api/ │ └── includes/ ← db.php, auth.php, layout.php ├── processor/ │ ├── process_mail.php ← script cron extraction PJ │ └── composer.json └── scripts/ ├── create_account.sh ├── delete_account.sh └── apply_config.sh ← régénère configs + reload services ``` ## Notes - Basé sur une ancienne version PHP (artek-mail-script) qui tournait sur Synology - Réécriture complète en PHP 8.2, PDO, Bootstrap 5 - Plus d'injections SQL : toutes les requêtes utilisent des prepared statements