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

2.5 KiB

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

# 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