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:
71
memoire.md
Normal file
71
memoire.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# 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/<domain>/<user>/Maildir/`
|
||||
- Fichiers extraits dans `/srv/copymail/<user>/`
|
||||
- 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
|
||||
Reference in New Issue
Block a user