Полезные команды для анализа почты

  • Автор темы Автор темы mexan
  • Дата начала Дата начала
Сообщения
202
Реакции
0
Работа с почтой:
  • Код:
    sudo -u postgres psql -d modoboa -c "
    SELECT 
        username,
        messages as message_count,
        pg_size_pretty(bytes) as size
    FROM admin_quota 
    WHERE username LIKE '%@ВАШ_ЯЩИК.ru'
    ORDER BY messages DESC
    LIMIT 10;
    "
  • Код:
    sudo du -sh /srv/vmail/ВАШ_ДОМЕН/
  • Код:
    sudo doveadm user '*'
  • Код:
    systemctl list-units --type=service | grep -E '(modoboa|uwsgi|gunicorn)'
 
Срипт анализа почтового ящика Modoboa:

ДОМЕН:
заменяем на доменнное имя почтового ящика
ПОЧТА: заменяем на почтовое имя

Код:
# Анализируем ящик ПОЧТА@ДОМЕН
USER="ПОЧТА"

{
    echo "=========================================="
    echo "  ПОЛНЫЙ ОТЧЕТ ПО ЯЩИКУ: $USER@ДОМЕН"
    echo "  Дата: $(date '+%Y-%m-%d %H:%M:%S')"
    echo "=========================================="
    echo ""
   
    echo "📊 СТАТУС В БАЗЕ MODOBODA:"
    sudo -u postgres psql -d modoboa -c "
    SELECT
        email,
        CASE WHEN is_active THEN '✅ Активен' ELSE '❌ Неактивен' END AS status,
        date_joined AS создан,
        last_login AS последний_вход
    FROM core_user
    WHERE email = '$USER@ДОМЕН';
    "
   
    echo ""
    echo "📁 РАЗМЕР НА ДИСКЕ:"
    sudo du -sh /srv/vmail/ДОМЕН/$USER/
   
    echo ""
    echo "📧 КОЛИЧЕСТВО ПИСЕМ:"
    total=$(sudo find /srv/vmail/ДОМЕН/$USER -type f -name '*,*' 2>/dev/null | wc -l)
    echo "  Всего: $total"
   
    echo ""
    echo "📂 СТРУКТУРА ПАПОК (показывает вложенные папки):"
    sudo ls -la /srv/vmail/ДОМЕН/$USER/ | grep -E "^d" | awk '{print "  " $9}'
    echo ""
    echo "  📁 Вложенные папки (если есть):"
    sudo find /srv/vmail/ДОМЕН/$USER/Maildir -maxdepth 2 -type d 2>/dev/null | grep -v "^/srv/vmail/ДОМЕН/$USER/Maildir$" | sed 's|/srv/vmail/ДОМЕН/||' | head -30
   
    echo ""
    echo "📅 ПОСЛЕДНИЕ 15 ПИСЕМ (дата, отправитель, тема):"
    sudo find /srv/vmail/ДОМЕН/$USER -type f -name '*,*' -printf '%T@ %p\n' 2>/dev/null | sort -nr | head -15 | while read timestamp filepath; do
        date=$(date -d @${timestamp%.*} '+%Y-%m-%d %H:%M' 2>/dev/null)
        from=$(sudo grep -m1 "^From:" "$filepath" 2>/dev/null | sed 's/^From: //' | head -c 60)
        subject=$(sudo grep -m1 "^Subject:" "$filepath" 2>/dev/null | sed 's/^Subject: //' | head -c 70)
        echo "  [$date] $from → $subject"
    done
   
    echo ""
    echo "📊 ТОП-10 ОТПРАВИТЕЛЕЙ (кто пишет чаще всего):"
    sudo find /srv/vmail/ДОМЕН/$USER -type f -name '*,*' -exec grep -m1 "^From:" {} \; 2>/dev/null | sed 's/^From: //' | sort | uniq -c | sort -nr | head -10 | while read count from; do
        echo "  $count писем от $from"
    done

    echo ""
    echo "🔍 КРАТКИЙ ВЕРДИКТ (на основе анализа):"
    # Проверяем, есть ли письма от внутренних пользователей
    internal=$(sudo find /srv/vmail/ДОМЕН/$USER -type f -name '*,*' -exec grep -m1 "^From:.*@ДОМЕН" {} \; 2>/dev/null | wc -l)
    if [ "$internal" -gt 0 ]; then
        echo "  ✅ Обнаружена внутренняя переписка (@ДОМЕН). Это рабочий ящик."
    else
        echo "  ❌ Внутренней переписки не обнаружено. Возможно, тестовый или технический ящик."
    fi
   
    # Проверяем наличие вложений
    attachments=$(sudo find /srv/vmail/ДОМЕН/$USER -type f -name '*,*' -exec grep -l "Content-Disposition: attachment" {} \; 2>/dev/null | wc -l)
    if [ "$attachments" -gt 0 ]; then
        echo "  📎 Обнаружены вложения ($attachments писем с файлами)."
    fi
   
    # Проверяем наличие папок (кроме стандартных)
    folders=$(sudo find /srv/vmail/ДОМЕН/$USER/Maildir -maxdepth 1 -type d 2>/dev/null | grep -v "^/srv/vmail/ДОМЕН/$USER/Maildir$" | wc -l)
    if [ "$folders" -gt 0 ]; then
        echo "  📂 Есть дополнительные папки (вероятно, созданные пользователем)."
    fi
   
    # Проверяем наличие русских тем
    russian_subjects=$(sudo find /srv/vmail/ДОМЕН/$USER -type f -name '*,*' -exec grep -m1 "^Subject:" {} \; 2>/dev/null | grep -i "=\?utf" | wc -l)
    if [ "$russian_subjects" -gt 0 ]; then
        echo "  🇷🇺 Письма в основном на русском языке."
    fi
   
} > /tmp/mailbox_${USER}_report.txt

cat /tmp/mailbox_${USER}_report.txt
 
Назад
Сверху