Email Fix after Unavoidable Reinstall

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"

It’s not clear to me what this script is for?

What delivery problem are you talking about?

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.