Exim сообщения которые он не смог отправить
и уже не будет пытаться отправлять, помечает как frozen. На почтовых
системах с активным почтовым трафиком таких сообщений может скопится
очень много. Со временем(в зависимости от настроек) exim эти сообщения
уничтожает, на скорость обработки сообщений в очереди они не влияют,
так как пометка frozen исключает их из обработки.
Но зато они часто очень мешают анализировать очередь.
Что бы избавится от всех frozen сообщений в очереди можно воспользоваться такой комбинацией команд:
exiqgrep -zi|xargs exim -Mrm
и все, будут уничтожены все frozen сообщения.
Остается только напомнить, что перед удалением стоит все таки
проверить, вдруг некоторые из сообщений заморозились в результате сбоя
и на самом деле являются полезными.
Инициировать отправку всех сообщений из очереди (не завсимо от того frozen они или нет) можно командой:
Exim - почтовый сервер, один из самых
популярных на сегодняшний
день. На основе его, построен прием почты таких известных систем, как
ukr.net, mail.ru. Всю массу возможностей я описывать не буду, попытаюсь
объяснить как настроить систему с антиспам фильтром (DSPAM) и
антивирусом(ClamAV).
Начнем с установки Exim. В портах FreeBSD exim представлен в 6 вариантах:
/usr/ports/mail/exim/ - обычная сборка
/usr/ports/mail/exim-mysql/ - добавлена возможность обращаться к базе данных MySQL
/usr/ports/mail/exim-postgresql/ - добавлена возможность обращаться к PostgreSQL
/usr/ports/mail/exim-sqlite/ - добавлена возможность обращаться к SQLite
/usr/ports/mail/exim-sa-exim/ - exim c патчем SA-Exim, специальный патч для работы со SpamAssassing на этапе SMTP диалога
Наиболее популярным является установка Exim c поддержкой MySQL,
поддержка MySQL обеспечивает максимальную гибкость при управлении
системой, но по моим наблюдениям отрицательно сказывается на
производительности. В этой статье мы ограничимся установко “обычного”
Exim.
Итак приступим к установке Exim:
cd/usr/ports/mail/exim/ makeinstall clean
Установка происходит без дополнительных вопросов. По окончании
установки перейдем к установке ClamAV. На ней я останавливался подробно
в статье Установка ClamAv.
Если кратко - то установка производится из:
cd/usr/ports/security/clamav makeinstall clean
По окончании установки ClamAv, необходимо прописать разрешение на его запуск в /etc/rc.conf:
Возня с ClamAv закончена, в настройке он не нуждается, переходим к DSpam.
cd/usr/ports/mail/dspam/ makeinstall clean
Сборке предшевствует просто гигантский конфигурационный диалог. Я
чтобы не загромождать статью, опишу только те пункты, которые я выбираю
при сборке:
1. Logs via syslog
2. Enable debugging logging
3. Daemonize dspam; speaks LMTP or DLMTP
4. Use hash driver
5. Use Exim as local delivery agent
Я не люблю использовать без крайней нужды всякие навороты типа SQL,
поэтому в настройках сборки DSpam вы так же не найдете пунктов
связанных с MySQL или PostgreSQL. Ну не люблю я плодить сущности.
Во многих компаниях, как правило, существует несколько внешних
каналов. Как правило, один канал основной и один канал резервный,
который обычно простаивает. Я такие каналы обычно использую, под почту
определенной части пользователей. Для организации этого понадобится 3
smtp сервера:
1. Тот через который непосредственно отправляют почту пользователи. Его
рекомендуют сделать выделенным, и именно на нем расположить все
проверки на спам, вирусы и тд и тп.
2. Постоянный почтовый сервер, отправляющий почту через основной канал интернет, тут уже не нужны никакие “тяжелые” проверки
3. Резервный почтовый сервер, отправляющий почту через резервный канал.
Настраиваю я так:
в секции acl_rcpt, после проверки правильности символов в адресе, выглядит эта проверка так:
#Для маршрутизации по умолчанию, ставим переменную acl_c5 в 0 warn set acl_c5 = ${eval:0} #Пользователи, почта которых отправляется, через альтернативный релай #находятся в файле
/usr/local/etc/exim/users-alt warn message = Alt user domains = !+local_domains condition = ${if eq {${lookup{$sender_address}lsearch{/usr/local/etc/exim/users-alt}}}{yes}} set acl_c5 = ${eval:1}
По умолчанию, вся почта будет отправляться, через основной почтовый
сервер, те же пользователи, адреса которых мы внесли в
/usr/local/etc/exim/users-alt, пойдут на альтернативный почтовый
сервер. Пока мы только пометили те почтовые сообщения, которые нам надо
отправлять по другому пути. Теперь приступим, непосредственно к
изменению маршрута письма.
Найдем секцию routers и в ней, в самом начале разместим такой код:
#Это мы маршрутизируем, те адреса, которых нет в нашем списоке smartrelay: driver = manualroute domains = ! +local_domains transport = remote_smtp route_data = 192.168.0.25 condition = ${if eq {$acl_c5}{0}{1}{0}} no_more no_verify_sender #Это для тех, кто есть в нашем списке smartrelay_alt: driver = manualroute domains = ! +local_domains transport = remote_smtp route_data = 192.168.0.26 condition = ${if eq {$acl_c5}{2}{1}{0}} no_more no_verify_sender