Files
copymailrpi/memoire.md
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

72 lines
2.5 KiB
Markdown

# 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