Итак, у меня есть Postfix + saslauthd + Courier-IMAP, развернутый на Linode 1080 VPS. Мы небольшая компания, у нас около 30 учетных записей (для удобства я использую физических пользователей * nix + Maildirs, см. Позже), но мы широко используем функцию общих папок Courier (для нескольких учетных записей) с помощью специального скрипта I написал на Руби. Он фильтрует электронные письма через Spamassassin, читает файл YAML с некоторыми правилами, затем выполняет несколько проверок, чтобы увидеть, куда поместить электронное письмо в нашей сложной структуре. Maildirs и физические пользователи дают мне необходимую для этого гибкость.
Письмо получено, а затем передано моему сценарию, который определен в пользовательском файле .forward в его домашнем каталоге.
В целом, выполнение этого сценария занимает около 2 секунд. Сейчас у нас нет относительно большого объема электронной почты (я оцениваю около 30-50 писем в час), но я ищу способы ускорить это, а также убедиться, что нагрузка на нашу электронную почту станет выше (или мы поймаем `` шторм спама '' '), наш сервер не выбивается из памяти внезапно и т. д. Мои вопросы:
Заранее спасибо.
P.S .: Электронная почта (ну, / home) хранится на отдельном разделе XFS, смонтированном с noatime.
Как можно фильтровать электронные письма с помощью демона spamassassin (вместо того, чтобы запускать приложение каждый раз при получении почты), прежде чем оно будет передано моему скрипту? Думаю, делать так, как я сейчас, - плохая практика.
смотреть на amavisd-новый, который написан на perl. Он будет делать то, что вы ищете, интегрируется на сетевом уровне (при желании), а также обеспечивает антивирусное сканирование. Большинство основных дистрибутивов Linux предоставляют его как предварительно собранный пакет. Единственное, о чем вам нужно беспокоиться, это то, что некоторые из дистрибутивов будут использовать устаревшую версию, которая иногда имеет ошибку. Большинство из этих ошибок приводят к отключению или завершению работы amavis; так что если это, скажем, на 3 версии старше, чем то, что есть на официальном сайте, я бы серьезно подумал об управлении этим одним пакетом вручную.
Есть ли способ ограничить количество писем, которые postfix передает моему скрипту одновременно? Я не хочу, чтобы одновременно выполнялось 10 экземпляров моего скрипта.
Вы говорите об ограничении скорости. Учитывая «небольшой» размер сервера, я бы установил сам ограничитель скорости постфикса примерно на 3-6 писем в минуту, вместо того, чтобы устанавливать его на стороне сканирования. Если вы попытаетесь принять доставку всего, спам-шторм просто забьет ваши очереди, и у вас все равно останется невыполненная работа.
Как я мог превратить свой скрипт в демона? Будет ли это ускорить работу?
Тонны! Я не могу вам помочь в этом отношении, но предварительный запуск вашего скрипта сократит значительные накладные расходы.