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>
64 lines
1.5 KiB
Bash
64 lines
1.5 KiB
Bash
#!/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é."
|