Доброго времени суток, господа.
Позволю себе украсть пару минут Вашего времени, нужен грамотный совет.Суть.
Имеется сервер на Ubuntu Server, на котором установлен и настроен exim4 для отправки почты.
Сервер используется для рассылки подписчикам новостей, уведомлений и т.д. Никакого спама или
нежелательных иных сообщений.
Отправка рассылки происходит обычным php скриптом, который использует обычную функцию mail().
Так как объём рассылки достаточно внушительный (около полумиллиона писем в сутки, около 30Гб в сумме), для максимальной скорости работы в качестве spool папки для exim4 используется 6-ти гигабайтный рамдиск (использование дискового массива в десяток раз тормозит процесс). Пока всё замечательно и хорошо, скорость отправки писем и скорость наполнения спула почти равны, переполнения не происходит. Но как только возникает проблема (например, mail.ru блокирует приём писем хотя бы на час), сразу же переполняется спул, из-за чего система вываливается в своп, из-за чего ещё бОльшие тормоза и в итоге "почтовый коллапс".
Внимательно изучив документацию к exim4 нашёл достаточно подходящую функцию - а именно fallback. То есть при такой настройке exim будет только один (!) раз пытаться отправить письмо. И если отправка не получилась, то письмо будет отправлено на relay для отложенной доставки. Такой вариант мне несомненно нравится, так как это должно спасти рамдиск от переполнения, а также позволит увеличить срок попыток повторной отправки (сейчас менее суток, что бы полностью очистить спул перед новой рассылкой).
Но если бы не было НО, я бы не писал эту тему.
Exim4 не позволяет разделять спул для различных писем, посему в качестве relay должен использоваться ещё один МТА. Возможно это ещё одна копия exim, возможно иной MTA. Возможно ещё какие-то варианты?
Внимание, вопрос :)
1. Есть ли возможность безболезненно запустить ещё одну копию exim с иным конфигом? То есть уже установленный будет использоваться для локальной доставки и слушать локалхост (спул в рамдиске, включен фоллбэк), а второй будет слушать интерфейсный порт (стандартный порт на интерфейсе, спул на массиве) и использоваться для отложенной (повторов) доставки.
2. Есть ли иные варианты и предположения, как реализовать рассылку с максимальной скоростью и без коллапсов?
Буду рад всем идеям и предложениям. Спасибо заранее.