Библиотека сайта rus-linux.net
Postal для оценки производительности почтовых серверов
Оригинал: Mail server benchmarking with Postal
Автор: Ben Martin
Дата: 17 июля 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 25 июля 2008
Проект Postal состоит из
трех программ, нацеленных на оценку производительности почтовых серверов.
Основная программа - postal
, отправляет с заданной скоростью электронные
сообщения адресатам из указанного списка. Таким образом Postal позволяет измерить,
насколько быстро ваш сервер обрабатывает входящую корреспонденцию, узнав таким образом насколько, к примеру, ускорилась работа сервера после аппаратного апгрейда или изменениях в конфигурации программ. К примеру, установив серверу другой IMAP-сервер для отправки писем, можно добиться увеличения быстродействия без изменений в его аппаратной части.
Две другие программы набора Postal: rabid
- это POP-клиент, получающий новые сообщения с почтового сервера с указанной скоростью и bmh
, внешне представляющий из себя сервер передачи почты, однако просто-напросто уничтожающий все входящие сообщения (отсюда и название Black Hole Mailer - Черная дыра).
Пакет postal есть для дистрибутива
Ubuntu Hardy,
но нет для Fedora или openSUSE. Для этой статьи я собрал Postal версии 0.70 из исходников на 64-битной Fedora 8. Процедура сборки была обычной: ./configure
, make
, sudo make install
. У меня были проблемы с компиляцией, поэтому мне пришлось указать опцию ./configure --disable-gnutls
и все прошло гладко.
postal
Основные параметры команды postal - это имя файла, содержащего список электронных адресов, на которые следует слать почту; имя файла со списком адресов отправителей (ключ -f
); SMTP-сервер, через который следует слать почту и процент сообщений, который нужно отправить с помощью SSL-шифрования (-s 0
). Есть еще и вторичные параметры, как то: сколько потоков запускать (-t 1
), максимальный и минимальный размер сообщения в килобайтах (соответственно -m 10
и -M 0
) и количество отсылаемой почты за минуту (-r 24000
).
Ниже показана команда, отправляющая 30 писем в минуту с использованием двух потоков через локальный SMTP-сервер, отправка на два адреса на одной и той же машине. Начните с малого потока сообщений и понаблюдайте за тем, как ваш сервер отрабатывает, затем увеличьте количество сообщений в минуту с помощью ключа -r
. Результат ежеминутно выводится на консоль - печатается количество посланных данных, и (что более важно) сколько сообщений прошло и сколько доставилось с ошибками.
Вышеприведенная команда сгенерирует электронные письма, случайно заполненные строкой MD5:
и контрольной md5-суммой тела письма. Это позволяет убедиться в том, что почтовый сервер корректно доставляет все сообщения. В приведенном примере сообщения будут посылаться от пользователей ben и toast самим пользователям ben и toast на локальную машину localhost. Если мы хотим просто проверить, как система справляется с большой массой писем, такое совпадение отправителей и адресатов не должно нас волновать. Если же хотите указать другой список отправителей, это можно сделать с помощью ключа -f
.
rabid
Итак, команда postal занимается исключительно отправкой писем, аrabid
- наоборот, ее приемом. Некоторые параметры команд postal и rabid похожи; ключ -r
используется для ограничения количества соединений в минуту, таким образом можно определить скорость приема сообщений; ключ -p
ограничивает число процессов rabid для проверки сразу нескольких аккаунтов; -s
определяет процентную долю получений писем через SSL-соединения. Последние два параметра - адрес POP-сервера и имя файла, содержащего список проверяемых аккаунтов. Последний аргумент похож на список отправителей в postal: он содержит список пар аккаунт/пароль, разделенных пробелами. Кстати, можно использовать этот же список и в программе postal - тогда столбец паролей будет просто игнорироваться, а будут задействованы лишь электронные адреса из начала каждой строки.
Ниже показано выполнение команды, проверяющей два аккаунта по POP-протоколу, причем все соединения зашифрованы SSL. Ключ -u
говорит rabid о том, что в качестве имени пользователя следует брать то, что стоит слева от знака @
, однако при использовании этого ключа иногда у меня были проблемы с аутентифкацией, к примеру, пользователя ben@localhost. Пришлось явно удалить @localhost, и аутентификация прошла как следует. Опция -r 5
ограничивает проверку пятью соединениями в минуту. Аргумент -p 2
создает два процесса, благодаря чему возможна проверка почтовой доставки сразу через два аккаунта. Ключ -s 100
говорит rabid о том, что SSL-шифрованию должны подвергаться 100% всех соединений.
Можно указать и другой порт для соединения, однако в наборе postal это указывается не стандартным способом компьютер:порт
. Вместо этого необходимо заключить имя машины в квадратные скобки и сразу дополнить номером порта. Первая часть каждой строки файла user-list-filename.rabid
идентична той что в файле user-list-filename
; на каждой строке после пробела идет пароль для POP-передачи.
Использование postal для создания сообщений и rabid для их приема должны придавать уверенности в том, что исходящее сообщение должно соответствовать входящему. Действительно, я получил от rabid множество сообщений о несовпадениях. Теперь я разбираюсь, что могло вызвать подобное поведение. Моя система - Fedora 8, для отправки сообщений используется sendmail 8.14.1-4.2.fc8, а для приема uw-imap 2007b-1.fc8.
Программа Black Hole Mailer полезна в том случае, когда нужно узнать, насколько хорошо сервер справляется с рассылками писем множеству адресатов, и таким образом измерить производительность сервера на списках рассылки.
Заключение
Если у вас есть почтовый сервер, который обязан справляться с большим потоком сообщений, весьма полезно будет установить postal и поэкспериментировать с тем, как различные программные настройки и аппаратные апгрейды воздействуют на почтовую производительность. Ограничения скорости отправки и приема сообщений дает возможность увидеть, как другие аспекты системы влияют на производительность почтового сервера - к примеру, принимает ли спам-фильтр подобный поток сообщений за спам.