Назад | Перейти на главную страницу

Оптимальные настройки для Postfix и оптимизация кастомного скрипта доставки на VPS

Итак, у меня есть Postfix + saslauthd + Courier-IMAP, развернутый на Linode 1080 VPS. Мы небольшая компания, у нас около 30 учетных записей (для удобства я использую физических пользователей * nix + Maildirs, см. Позже), но мы широко используем функцию общих папок Courier (для нескольких учетных записей) с помощью специального скрипта I написал на Руби. Он фильтрует электронные письма через Spamassassin, читает файл YAML с некоторыми правилами, затем выполняет несколько проверок, чтобы увидеть, куда поместить электронное письмо в нашей сложной структуре. Maildirs и физические пользователи дают мне необходимую для этого гибкость.

Письмо получено, а затем передано моему сценарию, который определен в пользовательском файле .forward в его домашнем каталоге.

В целом, выполнение этого сценария занимает около 2 секунд. Сейчас у нас нет относительно большого объема электронной почты (я оцениваю около 30-50 писем в час), но я ищу способы ускорить это, а также убедиться, что нагрузка на нашу электронную почту станет выше (или мы поймаем `` шторм спама '' '), наш сервер не выбивается из памяти внезапно и т. д. Мои вопросы:

  1. Как можно фильтровать электронные письма с помощью spamassassin демон (вместо того, чтобы запускать приложение каждый раз при получении почты), прежде чем оно будет передано моему скрипту? Думаю, делать так, как я сейчас, - плохая практика.
  2. Есть ли способ ограничить количество писем, которые postfix передает моему скрипту одновременно? Я не хочу, чтобы одновременно выполнялось 10 экземпляров моего скрипта.
  3. Как я мог превратить свой скрипт в демона? Будет ли это ускорить работу?

Заранее спасибо.

P.S .: Электронная почта (ну, / home) хранится на отдельном разделе XFS, смонтированном с noatime.

Как можно фильтровать электронные письма с помощью демона spamassassin (вместо того, чтобы запускать приложение каждый раз при получении почты), прежде чем оно будет передано моему скрипту? Думаю, делать так, как я сейчас, - плохая практика.

смотреть на amavisd-новый, который написан на perl. Он будет делать то, что вы ищете, интегрируется на сетевом уровне (при желании), а также обеспечивает антивирусное сканирование. Большинство основных дистрибутивов Linux предоставляют его как предварительно собранный пакет. Единственное, о чем вам нужно беспокоиться, это то, что некоторые из дистрибутивов будут использовать устаревшую версию, которая иногда имеет ошибку. Большинство из этих ошибок приводят к отключению или завершению работы amavis; так что если это, скажем, на 3 версии старше, чем то, что есть на официальном сайте, я бы серьезно подумал об управлении этим одним пакетом вручную.

Есть ли способ ограничить количество писем, которые postfix передает моему скрипту одновременно? Я не хочу, чтобы одновременно выполнялось 10 экземпляров моего скрипта.

Вы говорите об ограничении скорости. Учитывая «небольшой» размер сервера, я бы установил сам ограничитель скорости постфикса примерно на 3-6 писем в минуту, вместо того, чтобы устанавливать его на стороне сканирования. Если вы попытаетесь принять доставку всего, спам-шторм просто забьет ваши очереди, и у вас все равно останется невыполненная работа.

Как я мог превратить свой скрипт в демона? Будет ли это ускорить работу?

Тонны! Я не могу вам помочь в этом отношении, но предварительный запуск вашего скрипта сократит значительные накладные расходы.