Sendmail, переполнение очереди во FreeBSD

По моим наблюдениям, когда sendmailовская очередь становится больше 1500 писем, начинаются сложности с пересылкой писем. Если почтовый трафик большой, постепенно это приводит к росту очереди, и когда писем становится больше 3000, очередь фактически умирает. После того как мы разобрались с причинами переполнения очереди. Будем спасать ситуацию. В первую очередь надо остановить sendmail.

/etc/rc.d/sendmail stop

Теперь переместим очередь в другую директорию.

cd /var/spool/

mv mqueue mqueue.bak

Теперь создадим mqueue.

mkdir mqueue

chown root:daemon /var/spool/mqueue

Sendmail можно запустить. Пусть принимает новую почту и обрабатывает ее. Остается решить что делать со старой почтой.

/etc/rc.d/sendmail start

Просмотреть содержимое очереди, сохраненной в другой директории, можно так:

sendmail -O QueueDirectory=/var/spool/mqueue.bak/ -bp

Если очередь «великовата», выполнение этой команды, может занять очень много времени и ресурсов сервера.

Очередь сендмейла, одно сообщение, состоит из двух файлов.

Первый файл начинается на df, следом идет уникальный идентификатор сообщения, второй начинается на qf, и следует тот же идентификатор. df файлы это тело сообщения, qf – заголовок.

Если в очереди, которую мы сохранили – есть ненужные сообщения, можно попросту удалить эту пару файлов в соответствии с идентификатором. Таким образом мы очистим старую очередь от ненужных сообщений. Лучше всего это делать конечно с помощью скриптов. А нужные сообщения поставим на отправку. Для этого запустим отдельный sendmail:

sendmail -O QueueDirectory=/var/spool/mqueue.bak/ -qf -v

Sendmail мы запустили с опцией -v, включили вербоуз, на экране будет отображаться процесс пересылки сообщения, весь SMTP диалог. При большой очереди – распинываниеочереди займет длительный промежуток времени. Но новые письма, которые только сейчас поступают в sendmail, в его основную очередь, будут отправляться без проблем.

http://www.hilik.org.ua/sendmail-переполнение-очереди/

Обновлено: 12.03.2015