Asterisk: app_voicemail.c Mailbox directory could not be created
- Ошибка:
ERROR: app_voicemail.c: Mailbox directory could not be created (Disk write error). - Абоненты не могут оставить голосовое сообщение — вызов сбрасывается после сигнала записи.
- В логах фиксируются сбои создания директорий
/var/spool/asterisk/voicemail/default/<mailbox>. - Голосовые сообщения не сохраняются и не отправляются на e-mail.
1. Проверка прав доступа к каталогу голосовой почты
Убедитесь, что каталог принадлежит пользователю, от имени которого запущен сервис asterisk:
ls -la /var/spool/asterisk/voicemail
chown -R asterisk:asterisk /var/spool/asterisk/voicemail
chmod -R 770 /var/spool/asterisk/voicemail2. Проверка свободного места на накопителе и исчерпания Inodes
Проверьте свободные блоки и доступность индексных дескрипторов файловой системы:
# Проверка дискового пространства
df -h /var/spool/asterisk
# Проверка таблицы Inodes (переполнение миллионами мелких wav-файлов)
df -i /var/spool/asterisk3. Настройка контекстов безопасности SELinux (для RHEL/CentOS/Rocky)
Если включен SELinux, восстановите корректный контекст для каталогов спула Asterisk:
restorecon -Rv /var/spool/asterisk
semanage fcontext -a -t asterisk_spool_t "/var/spool/asterisk(/.*)?"
restorecon -Rv /var/spool/asterisk4. Проверка структуры почтовых ящиков в /etc/asterisk/voicemail.conf
[general]
format = wav49|wav
maxmsg = 100
maxmessage = 300
minmessage = 3
attach = yes
[default]
101 => 1234,User 101,user101@domain.local
102 => 5678,User 102,user102@domain.local5. Перезагрузка приложения Voicemail
asterisk -rx "voicemail reload" Частые вопросы (FAQ)
Почему возникает ошибка Mailbox directory could not be created при 50 ГБ свободного диска?
Наиболее вероятная причина — исчерпание Inodes (индексных дескрипторов) файловой системы из-за огромного количества мелких файлов записей разговоров или логов. Проверьте вывод команды df -i.
Под каким пользователем должен работать каталог /var/spool/asterisk?
Каталог должен принадлежать системному пользователю asterisk:asterisk (или пользователю, указанному в параметре runuser в /etc/asterisk/asterisk.conf).
Как автоматически удалять старые голосовые сообщения при заполнении ящика?
Используйте параметр maxmsg в voicemail.conf для жесткого лимитирования максимального числа сообщений в ящике.
Как отправлять голосовые сообщения на Email и удалять их с сервера?
В секции [general] файла voicemail.conf настройте attach=yes и delete=yes. Сообщение уйдет вложением по e-mail и сразу сотрется с диска.