SYSTEM INFORMATION | |
---|---|
OS type and version | UBUNTU 22.04.5 |
Webmin version | 2.303 |
Virtualmin version | 7.30.8 |
Webserver version | NGINX 1.18.0 |
Related packages | POSTFIX DOVECOT |
Script kills all e-mail delivery problems after catastrophic reinstall. Hope that helps. This is Ubuntu only, I gather, but should be easy enough to port to other architectures. May even be nice to include this in a future distro.
#!/bin/bash
set -e
# ──────────────────────────────────────────────────────────────────────────────
# 🔧 Script para atualizar o mapa de virtual mailboxes do Postfix com base no
# Virtualmin, extraindo e-mails e diretórios Maildir de todos os domínios.
#
# 🧑💻 Autor: Mauro Leonardo Cunha (׳וסף עמנואל בן אבראהאם וסרה)
# ✉️ Contato: presidente@relatasoft.com.br
# ──────────────────────────────────────────────────────────────────────────────
# 🔍 Iniciando varredura de domínios e usuários de e-mail no Virtualmin...
# 🔍 Starting scan of domains and email users in Virtualmin...
# 🔍 Début de l'analyse des domaines et des utilisateurs d'e-mail dans Virtualmin...
# 🔍 Iniciando el escaneo de dominios y usuarios de correo electrónico en Virtualmin...
# 🔍 סריקה של דומיינים ומשתמשי דוא"ל ב־Virtualmin...
# 🔍 Starte Durchsuchung von Domains und E-Mail-Nutzern in Virtualmin...
# 🔍 Iniciant l’escaneig de dominis i usuaris de correu a Virtualmin...
# 🔍 مسح النطاقات ومستخدمي البريد الإلكتروني في Virtualmin...
echo "🔍 Iniciando varredura de domínios e usuários de e-mail no Virtualmin..."
VMAILBOX="/etc/postfix/vmailbox"
TMP=$(mktemp)
> "$TMP"
for domain in $(virtualmin list-domains --name-only); do
echo "📬 Processando domínio: $domain"
virtualmin list-users --domain "$domain" --multiline --email-only --name-only | while IFS= read -r line; do
if [[ "$line" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then
email="$line"
elif [[ "$line" == *"Mail location:"* ]]; then
maildir=$(echo "$line" | sed -E 's/.*Mail location:[[:space:]]+//')
if [[ -n "$email" && -n "$maildir" ]]; then
echo "$email $maildir" >> "$TMP"
email=""
maildir=""
fi
fi
done
done
sort -u "$TMP" > "$VMAILBOX"
rm "$TMP"
echo "📦 Atualizando mapa de virtual mailboxes..."
postmap "$VMAILBOX"
echo "🔄 Reiniciando Postfix..."
systemctl restart postfix
echo "✅ vmailbox atualizado com sucesso!"
echo "📂 Verifique com: grep presidente@relatasoft.com.br /etc/postfix/vmailbox"