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:
Jules
2026-05-04 09:36:35 +02:00
commit 0be1b9119a
21 changed files with 1627 additions and 0 deletions

63
scripts/delete_account.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/bin/bash
# delete_account.sh <username>
set -e
USERNAME="$1"
if [[ -z "$USERNAME" ]]; then
echo "Usage: $0 <username>" >&2
exit 1
fi
DOMAIN=$(grep "^domain=" /opt/copymail/config.sh 2>/dev/null | cut -d= -f2)
[[ -z "$DOMAIN" ]] && DOMAIN=$(php -r "require '/opt/copymail/web/includes/db.php'; echo cfg('domain');")
MAILDIR="/var/mail/vhosts/${DOMAIN}/${USERNAME}"
SMBDIR="/srv/copymail/${USERNAME}"
DOVECOT_PASSWD="/etc/dovecot/users"
VMAILBOX="/etc/postfix/vmailbox"
# --- Supprime le Maildir ---
[[ -d "${MAILDIR}" ]] && rm -rf "${MAILDIR}"
# --- Retire de vmailbox ---
if [[ -f "${VMAILBOX}" ]]; then
sed -i "/^${USERNAME}@${DOMAIN}/d" "${VMAILBOX}"
postmap "${VMAILBOX}"
fi
# --- Retire de Dovecot passwd ---
if [[ -f "${DOVECOT_PASSWD}" ]]; then
sed -i "/^${USERNAME}@${DOMAIN}:/d" "${DOVECOT_PASSWD}"
fi
# --- Retire la section Samba ---
SMB_CONF="/etc/samba/smb.conf"
if grep -qF "[${USERNAME}]" "${SMB_CONF}"; then
# Supprime la section du compte dans smb.conf
python3 - <<PYEOF
import re, sys
with open('${SMB_CONF}', 'r') as f:
content = f.read()
pattern = r'\n\[${USERNAME}\][^\[]*'
content = re.sub(pattern, '', content)
with open('${SMB_CONF}', 'w') as f:
f.write(content)
PYEOF
fi
# Supprime utilisateur Samba
smbpasswd -x "${USERNAME}" 2>/dev/null || true
# --- Supprime le dossier SMB (ATTENTION: supprime les fichiers) ---
[[ -d "${SMBDIR}" ]] && rm -rf "${SMBDIR}"
# --- Rechargement ---
systemctl reload postfix
systemctl reload dovecot
systemctl reload smbd
echo "OK: compte ${USERNAME} supprimé."