Украинская Баннерная Сеть

Аренда сервера. Выделенные серверы в Украине и Нидерландах
Аренда сервера

VPS, VDS, Windows VPS - от $10
VPS
RoundCube. Установка и настройка.

roundcube Roundcube – это web-интерфейс или, если хотите, почтовый клиент, написанный на PHP. Roundcube сочетает в себе приятность дизайна интерфейса и удобство, которое проявляется даже в мелочах, например письма можно перемещать между папками простым перетаскиванием. Из всех известных мне web-интерфейсов на сегодняшний день Roundcube является наиболее красивым и удобным, а к тому же еще и бесплатным. Для работы Roundcube нам потребуется web-сервер Apache, который мы уже установили, а также сервер баз данных MySQL, тоже установленный ранее. В MySQL базе Roundcube будет сохранять настройки пользователей, адресные книги, автоматически добавляемые подписи к сообщениям и т.д.

Начнем с установки Roundcube:

# cd /usr/ports/mail/roundcube
# make config

Отмечаем следующие опции:

[X] MYSQL       Use MySQL backend

Собираем порт:

# make install clean

Создадим базу данных MySQL:

# mysql
mysql> create database roundcube;
mysql> grant all on roundcube.* to 'roundcube'@'localhost' identified by 'roundcube';
mysql> flush privileges;
mysql> quit

Теперь займемся настройкой web-сервера apache для нашего Roundcube. Для скриптов roundcube мы выделим отдельную площадку. Для этих целей создадим пользователя и домашнюю директорию с деревом каталогов под виртуалхост, установим соответствующие права:

# pw useradd roundcube -g www -s “/sbin/nologin” -c “Roundcube”
# mkdir /home/roundcube
# mkdir /home/roundcube/tmp
# mkdir /home/roundcube/webmail.example.com
# chmod -R 770 /home/roundcube

Создадим конфигурационный файл виртуалхоста:

# touch /usr/local/etc/apache/vhosts/roundcube.conf

И отредактируем его:

<Virtualhost>
ServerName webmail.example.com
ServerAdmin [email protected]
DocumentRoot "/home/roundcube/webmail.example.com"

# Поскольку roundcube написан на PHP и мы
# не предполагаем запуск чего-либо кроме PHP скриптов
# на этом виртуалхосте, то на всякий случай отключаем CGI
# и запрещаем изменение параметров ./htaccess'ом
<Directory "/home/roundcube/webmail.example.com">
Options -ExecCGI
AllowOverride None
</Directory>
# Запрещаем PHP скриптам выходить за пределы
# директории виртуалхоста
php_admin_value open_basedir /home/roundcube
php_admin_value safe_mode_include_dir /home/roundcube
php_admin_value safe_mode_exec_dir /noexec
php_admin_value doc_root /home/roundcube
php_admin_value upload_tmp_dir /home/roundcube/tmp
php_admin_value session.save_path /home/roundcube/tmp

# Логирование
ErrorLog /var/log/httpd/roundcube-error.log
TransferLog /var/log/httpd/roundcube-access.log
</Virtualhost>

Перезапускаем apache, чтобы изменения вступили в силу:

# apachectl restart

После установки скрипты Roundcube появились в директории /usr/local/www/roundcube. Скопируем их в директорию, где будет размещаться наш VirtualHost и зададим владельца:

# cp -R /usr/local/www/roundcube/* /home/roundcube/webmail.example.com/
# chown -R roundcube:www /home/roundcube

Заполняем базу данных:

# mysql roundcube < /home/roundcube/webmail.example.com/SQL/mysql.initial.sql

Переходим к настройке Roundcube. Отредактируем файл /home/roundcube/webmail.example.com/config/db.inc.php:

$rcmail_config = array();
$rcmail_config['db_dsnw'] = 'mysql://roundcube:[email protected]/roundcube';
$rcmail_config['db_dsnr'] = '';
$rcmail_config['db_max_length'] = 512000;  // 500K
$rcmail_config['db_persistent'] = FALSE;
$rcmail_config['db_table_users'] = 'users';
$rcmail_config['db_table_identities'] = 'identities';
$rcmail_config['db_table_contacts'] = 'contacts';
$rcmail_config['db_table_session'] = 'session';
$rcmail_config['db_table_cache'] = 'cache';
$rcmail_config['db_table_messages'] = 'messages';
$rcmail_config['db_sequence_users'] = 'user_ids';
$rcmail_config['db_sequence_identities'] = 'identity_ids';
$rcmail_config['db_sequence_contacts'] = 'contact_ids';
$rcmail_config['db_sequence_cache'] = 'cache_ids';
$rcmail_config['db_sequence_messages'] = 'message_ids';

Теперь отредактируем файл /home/roundcube/webmail.example.com/config/main.inc.php:

 $rcmail_config = array();
$rcmail_config['debug_level'] = 1;
$rcmail_config['enable_caching'] = TRUE;
$rcmail_config['message_cache_lifetime'] = '10d';
$rcmail_config['auto_create_user'] = TRUE;
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 143;
$rcmail_config['username_domain'] = '';
$rcmail_config['mail_domain'] = '';
$rcmail_config['virtuser_file'] = '';
$rcmail_config['virtuser_query'] = '';
$rcmail_config['smtp_server'] = '';
$rcmail_config['smtp_port'] = 25;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['smtp_auth_type'] = '';
$rcmail_config['smtp_helo_host'] = '';
$rcmail_config['smtp_log'] = TRUE;
$rcmail_config['list_cols'] = array('subject', 'from', 'date', 'size');
$rcmail_config['skin_path'] = 'mvision';
$rcmail_config['skin_include_php'] = FALSE;
$rcmail_config['temp_dir'] = 'temp/';
$rcmail_config['log_dir'] = 'logs/';
$rcmail_config['session_lifetime'] = 10;
$rcmail_config['ip_check'] = false;
$rcmail_config['double_auth'] = false;
$rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str';
$rcmail_config['locale_string'] = 'ru';
$rcmail_config['date_short'] = 'D H:i';
$rcmail_config['date_long'] = 'd.m.Y H:i';
$rcmail_config['date_today'] = 'H:i';
$rcmail_config['useragent'] = 'RoundCube Webmail/0.1';
$rcmail_config['product_name'] = 'RoundCube Webmail';
$rcmail_config['imap_root'] = '';
$rcmail_config['drafts_mbox'] = 'Drafts';
$rcmail_config['junk_mbox'] = 'Junk';
$rcmail_config['sent_mbox'] = 'Sent';
$rcmail_config['trash_mbox'] = 'Trash';
$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
$rcmail_config['create_default_folders'] = TRUE;
$rcmail_config['protect_default_folders'] = TRUE;
$rcmail_config['skip_deleted'] = FALSE;
$rcmail_config['read_when_deleted'] = TRUE;
$rcmail_config['flag_for_deletion'] = FALSE;
$rcmail_config['enable_spellcheck'] = TRUE;
$rcmail_config['spellcheck_uri'] = '';
$rcmail_config['spellcheck_languages'] = NULL;
$rcmail_config['generic_message_footer'] = '';
$rcmail_config['mail_header_delimiter'] = NULL;
$rcmail_config['dont_override'] = array();
$rcmail_config['javascript_config'] = array('read_when_deleted', 'flag_for_deletion');
$rcmail_config['include_host_config'] = FALSE;

/***** these settings can be overwritten by user's preferences *****/
$rcmail_config['pagesize'] = 40;
$rcmail_config['timezone'] = intval(date('O'))/100 - date('I');
$rcmail_config['dst_active'] = (bool)date('I');
$rcmail_config['prefer_html'] = TRUE;
$rcmail_config['htmleditor'] = TRUE;
$rcmail_config['prettydate'] = TRUE;
$rcmail_config['message_sort_col'] = 'date';
$rcmail_config['message_sort_order'] = 'DESC';
$rcmail_config['draft_autosave'] = 300;
$rcmail_config['max_pagesize'] = 200;
$rcmail_config['preview_pane'] = TRUE;

RoundCube установлен и готов к работе.

Postgrey. Установка и настройка грейлиста

Postgrey – это policy демон для postfix, который реализует технологию серых списков (greylist). На сегодняшний день практически весь спам рассылается из так называемых бот-нетов. Ботнет представляет собой набор компьютеров, зараженных вирусами (так называемые компьютеры-”зомби“), которые позволяют хозяину вируса управлять зараженным хостом, в том числе использовать его для рассылки спама. Грейлистинг призван помочь отличить зомби от честного сервера. Алгоритм работы грейлистинга основан на том факте, что зомби в по ряду причин не умеют хранить очередь почтовых сообщений, в связи с чем поведение зомби отличается от поведения честного почтового сервера с очередью сообщений. Что случится если сервер попытается передать почтовое сообщение, но во время передачи сервер получателя вернет ему временную ошибку (код SMTP ошибки: 4хх)? Правильно. Сервер отложит это письмо в очередь и через некоторое время снова попытается отправить сообщение. Зомби же не будет предпринимать попыток повторной отправки, поскольку не умеет обрабатывать очередь сообщений.

Принцип работы грейлиста следующий. Грейлист в момент приема сообщения “запоминает” так называемый триплет – набор из трех характеристик сообщения:
– Адрес отправителя сообщения
- Адрес получателя сообщения
- IP-адрес хоста, который передает сообщение

Затем хосту-отправителю возвращается временная ошибка. Через некоторое время хост-отправитель предпринимает вторую попытку передать сообщение, грейлист проверяет наличие триплета в базе, находит его, разрешает сообщение к приему. Зомби повторных попыток не предпринимают, сообщения остаются не принятыми.

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

Ну а теперь попробуем разобраться с установкой postgrey. Она, к счастью, предельно простая:

# cd /usr/ports/mail/postgrey/
# make install clean

Теперь займемся настройкой postgrey. Нам нужно указать postfix’у каким образом общаться с postgrey. По умолчанию postgrey будет слушать на порту 10023. Открываем /usr/local/etc/postfix/main.cf, внимательно изучаем опцию “smtpd_recipient_restrictions” и в конце всех проверок добавляем наш грейлист (check_policy_service inet:127.0.0.1:10023). В итоге это будет выглядеть примерно так:

smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_pipelining,
reject_invalid_hostname,
check_policy_service inet:127.0.0.1:10023

В файле /etc/rc.conf разрешаем запуск postgrey:

postgrey_enable="YES"

Запускаем postgrey, рестартим postfix:

# /usr/local/etc/rc.d/postgrey start
# postfix reload

Всё. Мы имеем полностью настроенный и работающий грейлист.

Стоит отметить, что иногда администратору может потребоваться определить список исключений, чтобы определенные сообщения не грейлистились вообще никогда. Для этого в postgrey есть белые списки. Определяются списки в файлах:
- postgrey_whitelist_clients – список хостов отправителей (не грейлистить сообщения от указанных хостов)
- postgrey_whitelist_recipients – список ящиков локальных получателей (не грейлистить сообщения для указанных получателей)

PostfixAdmin. Установка и настройка

postfixadminPostfixAdmin – это web-интерфейс, который призван облегчить такие рутинные задачи как: добавление и удаление доменов, почтовых ящиков и алиасов, изменение паролей к почтовым ящикам. Кроме этого при помощи postfixadmin доменам можно назначать своих администраторов, которые будут иметь возможность добавлять и удалять почтовые ящики и алиасы на вверенном им домене, изменять пароли.

Нам потребуются установленные apache и MySQL.
Как установить apache: http://wolandblog.com/387-apache-ustanovka-nastroyka
Как установить MySQL: http://wolandblog.com/1341-ustanovka-i-nastrojka-mysql-5-1-utf-8-v-freebsd

Установим PostfixAdmin:

# cd /usr/ports/mail/postfixadmin/
# make config

Отмечаем нужные опции:

[X] MYSQL   MySQL back-end (use mysql PHP extension)

Собираем порт:

# make install clean

Пакет postfixadmin установлен и мы переходим к его настройке. В процессе настройки мы позаботимся о безопасности, настроим виртуальный хост для postfixadmin таким образом, чтобы даже в случае взлома злоумышленник не смог причинить практически никакого вреда системе. Итак, поехали.

Для скриптов postfixadmin мы выделим отдельную площадку. Для этих целей создадим пользователя и домашнюю директорию с деревом каталогов под виртуалхост, установим соответствующие права:

# pw useradd postfixadmin -g www -s “/sbin/nologin” -c “PostfixAdmin”
# mkdir /home/postfixadmin
# mkdir /home/postfixadmin/tmp
# mkdir /home/postfixadmin/admin.example.com
# chmod -R 770 /home/postfixadmin

В директории /home/postfixadmin/tmp будут размещаться временные файлы, генерируемые PHP скриптом (сессии, к примеру), а в директории /home/postfixadmin/admin.example.com – скрипты postfixadmin. Перенесем их в эту директорию и зададим нужного владельца на дерево каталогов:

# cp -R /usr/local/www/postfixadmin/* /home/postfixadmin/admin.example.com/
# chown -R postfixadmin:www /home/postfixadmin

Создадим базу данных для posfixadmin:

# mysql
mysql> create database postfix;
mysql> grant all on postfix.* to 'postfix'@'localhost' identified by 'postfix';

Создадим файл /home/postfixadmin/admin.example.com/config.local.php и отредактируем его (для совместимости с последующими версиями не рекомендуется редактировать config.inc.php, вместо этого рекомендуется заносить измененные опции в config.local.php):

$CONF['postfix_admin_url'] = 'http://admin.example.com/';
$CONF['theme_css'] = 'css/default.css';
$CONF['postfix_admin_path'] = dirname(__FILE__);
$CONF['default_language'] = 'ru';
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
$CONF['admin_email'] = [email protected]';
$CONF['smtp_server'] = 'localhost';
$CONF['smtp_port'] = '25';
$CONF['encrypt'] = 'md5crypt';
$CONF['generate_password'] = 'NO';
$CONF['page_size'] = '10';
$CONF['default_aliases'] = array (
'abuse' => [email protected]'
);
$CONF['domain_path'] = 'NO';
$CONF['domain_in_mailbox'] = 'YES';
$CONF['aliases'] = '10';
$CONF['mailboxes'] = '10';
$CONF['maxquota'] = '10';
$CONF['quota'] = 'NO';
$CONF['quota_multiplier'] = '1024000';
$CONF['transport'] = 'NO';
$CONF['vacation'] = 'NO';
$CONF['vacation_domain'] = '';
$CONF['alias_control'] = 'NO';
$CONF['special_alias_control'] = 'YES';
$CONF['logging'] = 'YES';
$CONF['show_header_text'] = 'NO';
$CONF['header_text'] = ':: Postfix Admin ::';
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Return to admin.example.com';
$CONF['footer_link'] = 'http://admin.example.com';
$CONF['welcome_text'] = 'Hi, Welcome to your new account.';

Теперь переходим к настройке виртуалхоста для postfixadmin. В созданной нами директории для конфигурационных файлов виртуалхостов (/usr/local/etc/apache/vhosts) создаем файл postfixadmin.conf:

touch /usr/local/etc/apache/vhosts/postfixadmin.conf

Редактируем его:

<Virtualhost>
ServerName admin.example.com
ServerAdmin [email protected]
DocumentRoot "/home/postfixadmin/admin.example.com"

# Поскольку postfixadmin написан на PHP и мы
# не предполагаем запуск чего-либо кроме PHP скриптов
# на этом виртуалхосте, то на всякий случай отключаем CGI
# и запрещаем изменение параметров ./htaccess'ом

<Directory /home/postfixadmin/admin.example.com>
Options -ExecCGI
AllowOverride None
</Directory>

# Запрещаем PHP скриптам выходить за пределы
# директории виртуалхоста
php_admin_value open_basedir /home/postfixadmin
php_admin_value safe_mode_include_dir /home/postfixadmin
php_admin_value safe_mode_exec_dir /noexec
php_admin_value doc_root /home/postfixadmin
php_admin_value upload_tmp_dir /home/postfixadmin/tmp
php_admin_value session.save_path /home/postfixadmin/tmp

# Логирование
ErrorLog /var/log/httpd/postfixadmin-error.log
TransferLog /var/log/httpd/postfixadmin-access.log
</Virtualhost>

Рестартим apache:

# apachectl restart

Открываем в браузере адрес: http://admin.example.com/setup.php
PostfixАdmin создаст базу данных. Затем на этой же странице вводим инсталляционный пароль (зачем он нужен – ниже), postfixadmin сгенерирует хеш, этот хеш помещаем в config.local.php:

#$CONF['setup_password'] = 'hashed_password';

Возвращаемся на страницу http://admin.example.com/setup.php и с помощью инсталляционного пароля добавляем аккаунт главного админа. В дальнейшем можно будет добавлять главных админов с помощью этого инсталляционного пароля. Так что лучше удалить setup.php от греха подальше. В случае необходимости сходить на сайт postfixadmin’а и взять его из тарбола труда не составит, если, конечно, Вы каждый день не добавляете супер админов :) Удаляем setup.php:

# rm /home/postfixadmin/admin.example.com/setup.php

Всё, PostfixAdmin установлен.

MySQL. Установка и настройка

Установка MySQL предельно простая. Собираем и устанавливаем порт:

# cd /usr/ports/databases/mysql51-server
# make install clean

Разрешаем запуск MySQL сервера в /etc/rc.conf:

mysql_enable="YES"

Запускаем MySQL сервер.

# /usr/local/etc/rc.d/mysql-server start

Зададим пароль суперпользователя для MySQL:

# mysql -u root mysql
mysql> SET PASSWORD FOR [email protected]=PASSWORD('new_password');

Всё, MySQL сервер готов к использованию.

DSPAM. Установка и настройка.

dspam

В этой части мы рассмотрим установку и настройку DSPAM, но сначала я сделаю пару оговорок.

Первая. Во время моего первого знакомства с этим фильтром я столкнулся с проблемой, когда DSPAM периодически отваливался. При чем проблема возникала спонтанно вне зависимости от нагрузки, времени работы или любых других факторов. В итоге после чтения форумов и списков рассылки выяснилось, что проблема присутствует не только у меня одного. Общей сходной чертой у всех было включенная поддержка ClamAV в DSPAM. Проблема исчезла после того, как обязанность передачи писем Clam’у была снята с DSPAM’а и возложена на postfix. И хотя, в текущей версии (3.6.8) проблема устранена, но я уже привык не использовать поддержку ClamAV и передавать сообщения для проверки Clam’у непосредственно из postfix’а.

Вторая. DSPAM по умолчанию собирается с опцией запуска от пользователя root и группы mail. Я считаю, что гораздо лучше будет выделить под это отдельного пользователя.

Итак, приступим к установке DSPAM.

Для начала добавим опции сборки в /etc/make.conf, чтобы собранный DSPAM запускался от имени отдельного пользователя:

DSPAM_OWNER=dspam
DSPAM_GROUP=dspam
DSPAM_HOME_OWNER=dspam
DSPAM_HOME_GROUP=dspam

В последствии при сборке порта мы столкнемся с тем, что пользователь и группа автоматически не создаются. Поэтому создадим их сейчас руками:

# pw groupadd dspam
# pw useradd dspam -g dspam -s "/sbin/nologin" -c "DSPAM"

Теперь можно переходить к установке порта.

# cd /usr/ports/mail/dspam
# make config

Отмечаем поддержку нужных нам опций:

[X] SYSLOG            Logs via syslog
[X] DEBUG             Enable debugging logging
[X] DAEMON            Daemonize dspam; speaks LMTP or DLMTP
[X] MYSQL51           Use MySQL 5.1.x as back-end
[X] VIRT_USERS        Enable virtual users (needs SQL back-end)
[X] CGI               Install CGI (pulls in Apache or see below)

Собираем и устанавливаем порт:

# make install clean

После сборки порта отредактируем /etc/rc.conf и добавим туда:

dspam_enable="YES"

Создадим директорию в /var/run, где будут лежать dspam.pid и dspam.sock:

# mkdir /var/run/dspam
# chown dspam:dspam /var/run/dspam

Создадим базу данных, в которой DSPAM будет хранить токены и прочую информацию:

# mysql
mysql> create database dspam;
mysql> grant all on dspam.* to ‘dspam’@'localhost’ identified by ‘dspam’;
mysql> flush privileges;
mysql> quit

Заполняем базу таблицами из .sql файлов, прилагающихся к DSPAM’у:

# mysql dspam < /usr/local/share/examples/dspam/mysql/mysql_objects-4.1.sql
# mysql dspam < /usr/local/share/examples/dspam/mysql/virtual_users.sql

Переходим к настройке DSPAM. Отредактируем /usr/local/etc/dspam.conf:

# Общие настройки
ServerMode auto
Home /var/db/dspam
StorageDriver /usr/local/lib/libmysql_drv.so
ServerDomainSocketPath  "/var/run/dspam/dspam.sock"
ServerPID              /var/run/dspam/dspam.pid
ServerParameters    "--deliver=innocent, spam"
ServerIdent             "localhost.localdomain"
Notifications   off
PurgeSignatures 14          # Stale signatures
PurgeNeutral    90          # Tokens with neutralish probabilities
PurgeUnused     90          # Unused tokens
PurgeHapaxes    30          # Tokens with less than 5 hits (hapaxes)
PurgeHits1S     15          # Tokens with only 1 spam hit
PurgeHits1I     15          # Tokens with only 1 innocent hit
LocalMX 127.0.0.1
SystemLog on
UserLog   on
Opt out
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse off
MaxMessageSize 307200
Trust dspam
TrainingMode teft
TestConditionalTraining on
Feature chained
Feature whitelist
Algorithm graham burton
PValue graham
ProcessorBias on

# Пользовательские настройки по умолчанию
Preference "signatureLocation=headers"  # 'message' or 'headers'
Preference "showFactors=on"
Preference "spamAction=tag"
Preference "spamSubject=***SPAM***"

# Разрешаем пользователям изменять определенные настройки
AllowOverride trainingMode
AllowOverride spamAction spamSubject
AllowOverride statisticalSedation
AllowOverride enableBNR
AllowOverride enableWhitelist
AllowOverride signatureLocation
AllowOverride showFactors
AllowOverride optIn optOut
AllowOverride whitelistThreshold

# Параметры доступа к БД
MySQLServer     localhost
MySQLPort       3306
MySQLUser               dspam
MySQLPass               dspam
MySQLDb                 dspam
MySQLCompress           true
MySQLVirtualTable          dspam_virtual_uids
MySQLVirtualUIDField       uid
MySQLVirtualUsernameField  username
MySQLUIDInSignature    on

# Инжектирование писем назад в постфикс
DeliveryHost        127.0.0.1
DeliveryPort        10027
DeliveryIdent       localhost
DeliveryProto       SMTP

Фильтр практически готов к работе. Нам остается только решить каким образом мы будем хранить токены. DSPAM позволяет хранить отдельную базу токенов для каждого пользователя. Таким образом у каждого пользователя будет свой набор токенов и фильтр будет индивидуально для каждого определять спамность письма. В моем случае этот подход не прижился. Дело в том, что из 100 пользователей, если десяток и занимается обучением фильтра – то хорошо. Остальные 90 не утруждают себя этой задачей и, как следствие, в итоге имеют достаточное количество неверных классификаций. Выходом из этой ситуации для меня стало использование shared группы. При внесении пользователей в shared группу токены становятся общими для группы. Таким образом, если из 100 пользователей 10 будут периодически указывать фильтру на ошибки в классификации, то будет поддерживаться в актуальном виде база токенов для всех. Да и размер самой базы будет заметно меньше. Для занесения пользователей в shared группу нужно отредактировать файл /var/db/dspam/group (если его нет – создайте, не забудьте затем про chown dspam:dspam):

globalgroup:shared:*

Всё. DSPAM готов к работе. Можно запускать:

# /usr/local/etc/rc.d/dspam start

Теперь можно перейти к настройке DSPAM WebUI


Украинская Баннерная Сеть
Hosting Catalog Rambler's Top100