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:
63
scripts/delete_account.sh
Normal file
63
scripts/delete_account.sh
Normal 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é."
|
||||
Reference in New Issue
Block a user