Как удалить голосовую почту в Asterisk: backup, очистка и MWI
Ниже — практическая очистка mailbox Asterisk без удаления всего voicemail spool. В примере используется mailbox 6001@default.
1. Проверяем voicemail и mailbox
asterisk -rx "module show like app_voicemail"
asterisk -rx "voicemail show users"
asterisk -rx "voicemail show user 6001@default"
grep -Ev "^($|;|#)" /etc/asterisk/voicemail.conf2. Находим каталог сообщений
MAILBOX=/var/spool/asterisk/voicemail/default/6001
test -d "$MAILBOX" && echo "Mailbox found"
find "$MAILBOX" -maxdepth 2 -type f -name "msg*" -ls3. Считаем сообщения
find "$MAILBOX/INBOX" -maxdepth 1 -type f -name "msg*.txt" | wc -l
find "$MAILBOX/Old" -maxdepth 1 -type f -name "msg*.txt" | wc -l
find "$MAILBOX/Urgent" -maxdepth 1 -type f -name "msg*.txt" 2>/dev/null | wc -l4. Создаём backup mailbox
mkdir -p /root/asterisk-voicemail-backup
tar -C /var/spool/asterisk/voicemail/default -czf /root/asterisk-voicemail-backup/6001-before-cleanup.tar.gz 6001
tar -tzf /root/asterisk-voicemail-backup/6001-before-cleanup.tar.gz | head5. Просматриваем одно сообщение
cat "$MAILBOX/Old/msg0001.txt"
ls -lh "$MAILBOX/Old/msg0001".*6. Удаляем одно сообщение
rm -i "$MAILBOX/Old/msg0001".*Удаляйте все файлы одного сообщения с одинаковым номером: TXT и аудиофайлы.
7. Dry-run старых сообщений
find "$MAILBOX/Old" -maxdepth 1 -type f -name "msg*" -mtime +30 -printПосле проверки можно удалить найденные файлы:
find "$MAILBOX/Old" -maxdepth 1 -type f -name "msg*" -mtime +30 -delete8. Проверяем владельца и права
namei -l "$MAILBOX"
find "$MAILBOX" -maxdepth 2 -printf "%u:%g %m %p\n" | head -50
chown -R asterisk:asterisk "$MAILBOX"9. Проверяем MWI
asterisk -rx "voicemail show user 6001@default"
asterisk -rx "pjsip show endpoint 6001"
asterisk -rx "pjsip show subscriptions inbound"Если индикатор нового сообщения продолжает гореть, убедитесь, что в INBOX нет непрочитанных сообщений и endpoint связан с mailbox 6001@default. Затем перерегистрируйте телефон.
10. Проверяем dialplan
grep -R "VoiceMail" /etc/asterisk
asterisk -rx "dialplan show" | grep -i voicemail11. Rollback
rm -rf /var/spool/asterisk/voicemail/default/6001
tar -C /var/spool/asterisk/voicemail/default -xzf /root/asterisk-voicemail-backup/6001-before-cleanup.tar.gz
chown -R asterisk:asterisk /var/spool/asterisk/voicemail/default/6001Критерий успеха: удалены только выбранные сообщения, backup читается, Asterisk видит mailbox, права принадлежат пользователю Asterisk, а MWI соответствует содержимому INBOX.