Удобная почтовая система::Журнал СА 1.2002
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6227
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6933
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4216
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3006
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3807
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3821
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6316
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3170
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3460
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7278
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10646
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12365
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13999
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9124
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7079
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5388
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4617
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3427
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3155
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3402
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3025
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Удобная почтовая система

Архив номеров / 2002 / Выпуск №1 (1) / Удобная почтовая система

Рубрика: Администрирование /  Электронная почта

ВЯЧЕСЛАВ КАЛОШИН

Удобная почтовая система

Итак, задача – завести почтовую систему, в которой вся информация о пользователях, доменах и прочем лежала бы в базе данных. Зачем это нужно? Лично для меня это стало актульно после того, как в поддерживаемых мной системах пользователи начали плодиться как кролики. Заводить на каждого свой аккаунт, смотреть, чтобы они не пересекались и не пользовались чужими доменами и так далее. Наконец, мне это надоело и я решил сделать это.

До сих пор возникает множество вопросов по установке и настройке почтовой системы на основе Postfix, Cyrus-SASL, MySQL, Courier-IMAP, Dr.Web, SquirrelMail.

Если использовать приведенный ниже опус в качестве банальной инструкции, у вас должна получиться легко масштабируемая и управляемая система, которая без проблем – как со стороны админа, так и со стороны железа – спокойно будет тянуть по 5-10 тысяч почтовых пользователей. При этом нет разницы: сколько почтовых доменов заведено в системе, как называются пользователи и так далее. Ибо с системными они никак не коррелируют.

Пользователи же получат стандартный набор сервисов: SMTP с аутентификацией, pop и imap сервисы, доступ к почте через браузер, плюс, чистую от вирусов почту.

Теперь оговорки. Данный текст написан в расчете на тех, кто уже понимает механизмы, происходящие внутри Linux. Если вы неделю как поставили Linux и желаете с помощью этого документа поставить свой hotmail.com, то я ни за что, как обычно, не отвечаю. Все логи и прочее были взяты с моей рабочей системы. Я ничего не выдумывал и не придумывал – это все работает реально.

В качестве базовой системы использовался RedHat 7.2. Но аналогично построенные системы работают и на RedHat6.2, и ASPLinux 7.2. Поэтому не вижу причин, почему бы им не работать на других системах. Все необходимые программы и пакеты вы сможете найти в окрестностях freshmeat.net.

Если вы желаете задать мне вопрос, задавайте по мылу: multik@multik.ru, но прежде прочтите хотя бы PostfixFAQ на www.postfix.org – ответы на 90% вопросов, на которые я не отвечаю, есть там. Еще одно условие – сначала обдумайте и прочтите все сообщения системы в /var/log/messages и /var/log/maillog – обычно там есть исчерпывающая информация, почему не работает что-либо.

Для нормальных: Просто мне очень надоели письма вида: «А чего оно не работает, когда я сделал все так, как ты написал?».

И последнее – специально для тех, кто задается вопросом: «Почему я выбрал POSTFIX? Ведь есть стандарт де факто Sendmail. Есть еще exim,qmail и куча других почтовых серверов». Отвечаю:

  • Sendmail я вынужден сразу скинуть со счетов. То, что описывается ниже, sendmail не способен выполнить. Или способен, но с очень большими усилиями администратора системы. Я, почему-то органически не могу смотреть на творение djb. Ну а exim я просто не видел.
  • Courier-IMAP выбран по другой причине: где-то с полгода назад он оказался единственным IMAP сервером, который смог собраться на моей машине и работать под нагрузкой, не требуя к себе внимания.
  • Dr.WEB – просто хороший антивирус. Нет такой толпы глюков, на которые бы я периодически не напарывался, глядя на AVP. Тем более, что он даже с тривиальной лицензией спокойно выполняет работу почтового фильтра. Правда, с купленной лицензией будет гораздо спокойнее – вирусы даже в архивах не пройдут. Но – если нет лицензии, то – нет.
  • SquirrelMail – это просто единственная система Web-based почты, которая не вызывает брезгливой реакции при первом, главное, при последующих взглядах. Плюс, она приемлемо работает с русским языком.

Теперь устанавливаем SASL. К сожалению, установить его из RPM не получится. Все, что я видел до этого, собрано либо не так, либо не туда. В общем, неработоспособное. Но вы можете попытать удачу.

# tar zxvf cyrus-sasl-1.5.27.tar.gz

# cd cyrus-sasl-1.5.27.

Заберите патч для поддержки MySQL и LDAP отсюда: http://www.surf.org.uk/downloads/sasl-1.5.27-ldap-ssl-filter-mysql-patch4.tgz.

Распакуйте полученный архив и положите sasl-ldap+mysql.patch в корень дерева исходников SASL.

# patch -b -p1 < sasl-ldap+mysql.patch

# autoheader

# autoconf

# automake -i.

Вот и все, патч установлен. Давайте сконфигурируем SASL.

# ./configure --with-mysql=/usr/include/mysql --enable-login.

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

# make

# make install

# ln -s /usr/local/lib/sasl /usr/lib/sasl

# echo /usr/lib/sasl >> /etc/ld.so.conf

# ldconfig

# cd ..

Устанавливаем методы аутентификации:

# cat > /usr/local/lib/sasl/smtpd.conf

pwcheck_method: mysql                                                          

mysql_user: postfix                                                            

mysql_passwd: postfix                                                          

mysql_host: localhost                                                           

mysql_database: mail                                                           

mysql_table: aliases                                                           

mysql_uidcol: alias                                                             

mysql_pwdcol: password

Теперь пришла очередь postfix. Здесь ситуация та же. В принципе по сети бродит много rpm, которые содержат в себе откомпилированный postfix с поддержкой MySQL. Я предпочитаю собрать его сам, и быть «чуть-чуть» уверенным в том, что я знаю, что собрал.

# tar zxvf postfix-1.1.11.tar.gz

# cd postfix-1.1.11

Следующие строчки – это одна команда. Ее следует вводить в один прием.

# make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -DUSE_SASL_AUTH -I/usr/include/mysql -I/usr/local/include \

    -L /usr/local/lib -lsasl -lmysqlclient'

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

# make

# adduser postfix

# groupadd postdrop

# make install

Вот ответы, которые я дал инсталлятору:

install_root: [/]

tempdir: [/usr/src/post/postfix-1.1.11] /tmp

config_directory: [/etc/postfix]

daemon_directory: [/usr/libexec/postfix]

command_directory: [/usr/sbin]

queue_directory: [/var/spool/postfix]

sendmail_path: [/usr/sbin/sendmail]

newaliases_path: [/usr/bin/newaliases]

mailq_path: [/usr/bin/mailq]

mail_owner: [postfix]

setgid_group: [postdrop]

manpage_directory: [/usr/local/man]

sample_directory: [/etc/postfix]

readme_directory: [no]

Ура. Postfix встал. Теперь наша задача его отконфигурировать.

# cd /etc/postfix/

# mcedit main.cf

Весто mcedit может быть vi, emacs или любой другой предпочитаемый вами текстовый редактор – это некритично.

Редактируем главный файл конфигурации postfix, обращая внимание на следующие строчки:

broken_sasl_auth_clients = yes

smtpd_sasl_auth_enable = yes

transport_maps = mysql:/etc/postfix/transport.cf

virtual_mailbox_base = /

virtual_uid_maps = mysql:/etc/postfix/ids.cf

virtual_gid_maps = mysql:/etc/postfix/gids.cf

virtual_mailbox_maps = mysql:/etc/postfix/aliases.cf

virtual_maps = mysql:/etc/postfix/remote_aliases.cf

relay_domains = $transport_maps

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,check_relay_domains                         disable_vrfy_command = yes

Что они означают и каково их действие, вы можете прочитать в документации по postfix или в FAQ. Теперь разбираемся, где и что у нас лежит.

# cat > transport.cf

user = postfix

password = postfix

dbname = mail

table = transport

select_field = transport

where_field = domain

hosts = localhost

# cat > ids.cf

user = postfix

password = postfix

dbname = mail

table = aliases

select_field = id

where_field = alias

hosts = localhost

# cat > gids.cf

user = postfix

password = postfix

dbname = mail

table = aliases

select_field = gid

where_field = alias

hosts = localhost

Обратите внимание на отсутствие лишних пробелов и других невидимых знаков в концах строчек – это важно!

Как, наверное, стало понятно из вышеприведенных файлов, я указал postfix искать MySQL на localhost, подключаться пользователем postfix с паролем postfix, использовать базу данных mail. Конечно, эти данные всего лишь для примера – вы должны или их изменить или понять чем грозит использование паролей, сходными с логинами. Понятно, что эти файлы незачем читать всем (намек на правильный chmod).

Проверяем, все ли в порядке.

# postfix check

Команда должна отработать без каких-либо сообщений об ошибках. Если все-таки она что-то вывела, придется разбираться, что не понравилось системе.

Теперь необходимо создать пользователя и все необходимые таблицы с помощью вызова mysql -p:

mysql> create database mail;

Query OK, 1 row affected (0.62 sec)

mysql> grant insert,select,delete,update on mail.* to postfix@localhost identified by "postfix";

Query OK, 0 rows affected (0.72 sec)

mysql> grant insert,select,delete,update on mail.* to postfix@localhost identified by 'postfix';

Query OK, 0 rows affected (0.72 sec)

mysql> use mail;

Database changed

Здесь будет храниться информация о доменах, обслуживаемых postfix.

mysql> create table transport (domain varchar(255) PRIMARY KEY, transport char(8));

Здесь информация о почтовых пользователях системы.

mysql> create table aliases (id int(6), gid int(6), alias varchar(255) PRIMARY KEY, maildir varchar(255), password varchar(128), infovarchar(128));

А здесь информация о почтовых переадресациях и прочем. Небольшие списки рассылки тоже можно включать сюда.

mysql> create table remote_aliases (alias varchar(255) PRIMARY KEY, rcptvarchar(255));

Проверьте, имеет ли пользователь postfix доступ к MySQL.

# mysql -u postfix -p

Запускаем postfix.

# postfix start 

postfix/postfix-script: starting the Postfix mail system

И в консоли MySQL добавляем домен test.ru.

mysql> insert into transport values (“test.ru”,’virtual:’);

И пользователя multik@test.ru. Обратите внимание на путь к почтовому каталогу пользователя и на завершающий «/» в конце строки.

mysql> insert into aliases values(1000,12,’multik@test.ru’,’/var/spool/vmail/test.ru_multik/’,’testpassword’,’info’);

Число 1000 я взял из головы – главное, что бы оно было больше последнего UID в системе. В RedHat пользовательские UID начинаются с 500, поэтому я думаю, что 500 локальных пользователей вполне достаточно. А 12 – это GID группы mail на моей системе.

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

Создаем каталог, где будет храниться почта и устанавливаем на него права.

# mkdir /var/spool/vmail

# chown nobody.mail /var/spool/vmail

# chmod 770 /var/spool/vmail

И проверяем, как у нас работает прием почты:

# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 mail.test.ru ESMTP Postfix

mail from: multik@test.ru

250 Ok

rcpt to: multik@test.ru

250 Ok

data

354 End data with <CR><LF>.<CR><LF>

hello

.

250 Ok: queued as 252BFEEAE6

В /var/log/messages должны появиться аналогичные строчки:

Jun 28 16:24:21 multik postfix/smtpd[21863]: connect from multik.ip-tel.int[127.0.0.1]

Jun 28 16:24:23 multik postfix/smtpd[21863]: 252BFEEAE6: client=multik.ip-tel.int[127.0.0.1]

Jun 28 16:24:32 multik postfix/cleanup[21919]: 252BFEEAE6: message-id=<20020628122423.252BFEEAE6@mail.test.ru>

Jun 28 16:24:32 multik postfix/qmgr[21762]: 252BFEEAE6: from=<multik@test.ru>, size=340, nrcpt=1 (queue active)

Jun 28 16:24:32 multik postfix/virtual[21921]: 252BFEEAE6: to=<multik@test.ru>, relay=virtual, delay=9, status=sent (maildir)

Если мы посмотрим в почтовый спул, то увидим, что письмо принято и дожидается своей очереди.

# ls -lR /var/spool/vmail

/var/spool/vmail:

итого 4

drwx------    5 1000     mail         4096 Июн 28 16:26 test.ru_multik

 

/var/spool/vmail/test.ru_multik:

итого 12

drwx------    2 1000     mail         4096 Июн 28 16:26 cur

drwx------    2 1000     mail         4096 Июн 28 16:26 new

drwx------    2 1000     mail         4096 Июн 28 16:26 tmp

 

/var/spool/vmail/test.ru_multik/cur:

итого 0

 

/var/spool/vmail/test.ru_multik/new:

итого 4

-rw-------    1 1000     mail          389 Июн 28 16:26 1025267217.21935_0.multik.ip-tel.int

 

/var/spool/vmail/test.ru_multik/tmp:

итого 0

Теперь подошла очередь установки IMAP и POP3 демонов. Иначе пользователям не через что будет получать почту. (Из одного письма: «А чего у меня sendmail не отдает по pop3 почту Outlook?»).

Распаковываем и собираем Courier-IMAP.

# tar zxvf courier-imap-1.5.1.tar.gz

# adduser courier

# chown courier.courier courier-imap-1.5.1

# cd courier-imap-1.5.1

# su - courier

#cd /{куда распаковывали}/courier-imap-1.5.1

# ./configure

# make

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

# authlib/authinfo

AUTHENTICATION_MODULES="authdaemon"

AUTHDAEMONMODULELIST="authcustom authcram authmysql authuserdb authpam"

SASL_AUTHENTICATION_MODULES="CRAM-SHA1 CRAM-MD5 PLAIN LOGIN"

Обращаем внимание на наличие authmysql. Иначе разбираемся, почему не так.

Выходим из-под пользователя courier и устанавливаем демонов:

# exit

# make install

# make install_configure

А теперь отдадим дань конфигурированию:

# cd /usr/lib/courier-imap/etc/

# cp authdaemonrc.dist authdaemonrc

Редактируем authdaemonrc – находим строчку:

authmodulelist="authcustom authcram authuserdb authmysql authpam"

и оставляем от нее только такой вот огрызок:

authmodulelist="authmysql"

Другие строки не трогаем.

Теперь указываем, где искать MySQL и информацию о пользователях:

# cat > authmysqlrc

MYSQL_SERVER            localhost

MYSQL_USERNAME          postfix

MYSQL_PASSWORD          postfix

MYSQL_PORT              3306

MYSQL_DATABASE          mail

MYSQL_USER_TABLE        aliases

MYSQL_CLEAR_PWFIELD     password

DEFAULT_DOMAIN          test.ru

MYSQL_UID_FIELD         id

MYSQL_GID_FIELD         gid

MYSQL_LOGIN_FIELD       alias

MYSQL_HOME_FIELD        maildir

MYSQL_NAME_FIELD        info

MYSQL_MAILDIR_FIELD     maildir

Опция DEFAULT_DOMAIN указывает, что добавлять к логину, если пользователь пытается ввести логин без доменной части. Остальное, я думаю, понятно из названия и описаний.

И запускаем pop3.

/usr/lib/courier-imap/libexec/pop3d.rc start

Должен запуститься и не ругаться ни на что. Проверяем:

# telnet localhost 110

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

+OK Hello there.

user multik@test.ru

+OK Password required.

pass testpassword

+OK logged in.

list

+OK POP3 clients that break here, they violate STD53.

1 400

.

quit

+OK Bye-bye.

Connection closed by foreign host.

Как видите, система нас пустила. Наше отправленное письмо лежит и дожидается нас.

В maillog должны быть записи похожие на эти:

Jun 28 17:27:17 multik pop3d: LOGIN, user=multik@test.ru, ip=[::ffff:127.0.0.1]

Jun 28 17:27:24 multik pop3d: LOGOUT, user=multik@test.ru, ip=[::ffff:127.0.0.1], top=0, retr=0

Радуемся – базовая функциональность достигнута. Можно смело запускать imap сервер аналогично pop, раздавать пользователей и совершать другие необходимые телодвижения.

Но лично мне этого мало. Я не хочу видеть вирусы в своем почтовом ящике и в ящиках своих работников и клиентов. Ставим Dr.Web.

Забираем с drweb.ru файлы:

  • drweb-4.28.1-linux.tgz
  • drweb-postfix-4.28.4-linux.tgz

И распаковываем их. Хотя могли бы взять rpm-файлы – их содержание абсолютно идентично.

Проверяем, то ли мы распаковали и туда ли.

# cd /opt/drweb

# ./drweb

Key file: /opt/drweb/drweb.key

Registration info:

0100003942

Evaluation Key (ID Anti-Virus Lab. Ltd, St.Petersburg)

This is an EVALUATION version with limited functionality!

To get your registration key, call regional dealer.

Loading /var/drweb/bases/drwebase.vdb - Ok, virus records: 29405

Как видите, Dr.WEB работает в ограниченном режиме. То есть он может только находить вирусы, но не лечить их, плюс он не смотрит внутрь архивов. Но для функциональности почтового шлюза этого вполне хватит. Но лучше купите лицензию – появится возможность проверять и лечить пользовательские файлы.

Тщательно прочитываем /opt/drweb/doc/postfix/readme.rus.

И добавляем Dr.WEB в качестве фильтра к postfix:

# adduser drweb

# mkdir /var/spool/drweb

# chown drweb.drweb /var/spool/drweb

# chmod 770 /var/spool/drweb

Редактируем /etc/postfix/master.cf, как указано в документации к Dr.Web:

smtp      inet  n       -       n       -       50      smtpd -o content_filter=filter:dummy

и добавляем в конец следующее:

filter    unix  -       n       n       -       -       pipe flags=R user=drweb argv=/opt/drweb/drweb-postfix -f ${sender} -- ${recipient}

Затем тщательно читаем и редактируем /etc/drweb/drweb_postfix.conf.

Лично я изменил следующие параметры:

SkipObject = pass – я хочу пропускать те обьекты, которые drweb не переваривает.

MailbombObject = pass – один из доменов, который обслуживается у меня, принадлежит дизайнерам и прочему художественному люду. Они очень

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

AdminMail = root@test.ru – кто тут у нас администратор.

FilterMail = DrWeb-DAEMON@ip-tel.ru – и от кого будет приходить почта с руганью и прочими сообщениями.

Далее везде:

SenderNotify = no – не надо извещать посылателя писем – в 90% случаев это безполезно и лишь забивает почтовые каналы. Если отправитель известен адресату, то он сам напишет ему гневное письмо.

Перемещаем /etc/rc.d/drwebd в /etc/init.d/drwebd и с помощью ntsysv или chkconfig, включаем автостарт Dr.WEB при запуске системы. Тем, кто ставил Dr.WEB через rpm, этого делать не надо. Проверьте, все ли на месте.

Запрещаем всяким лазить куда не следует:

# cd /var/drweb

# chown -R drweb.drweb *

И запускаем демона Dr.WEB:

# /etc/init.d/drwebd start

Starting Dr. Web daemon...Key file: /opt/drweb/drwebd.key

Registration info:

0100003943

Evaluation Key (ID Anti-Virus Lab. Ltd, St.Petersburg)

This is an EVALUATION version with limited functionality!

To get your registration key, call regional dealer.

Loading /var/drweb/bases/drwebase.vdb - Ok, virus records: 29405

Daemon is installed, TCP socket created on port 3000

Работоспособность проверяем простым запуском /opt/drweb/drweb-postfix. Он должен запуститься без какого-либо писка и висеть, томительно выжидая и занимая консоль. А в логах должно появиться следующее:

Jun 29 13:41:08 multik drweb-postfix: load configuration from /etc/drweb/drweb_postfix.conf

Jun 29 13:41:08 multik drweb-postfix: Actions: infected=Q, suspicious=Q, skip=P, mailbomb=P, scanning_error=T, processing_error=R, empty_from=C, spam_filter=P

Jun 29 13:41:08 multik drweb-postfix: dwlib: read_conf(/etc/drweb/drweb_postfix.conf): successfully loaded

Jun 29 13:41:08 multik drweb-postfix: dwlib: startup: set timeout for whole session to 60000 milliseconds (-1 means infinite)

Jun 29 13:41:08 multik drweb-postfix: drweb-pipe: [2250] started ...

У вас так? Значит все работает. Перезапускайте postfix и Dr.WEB встанет на стражу вашей почты. Можете проверить, послав какой-нибудь вирус. Вы получите лишь уведомление о том, что вы посылали вирус.

Но просто защиты мне мало. Мне необходима еще и свежая защита. А для свежей защиты необходимо обновлять базы данных о вирусах. Для этого у Dr.Web есть обновлялка, написанная на perl. Для нее нужен модуль String::CRC32. Делающие все правильно могут вспомнить что написано в man CPAN и с помощью install установить этот модуль. Мне оказалось проще и быстрее сделать все вручную:

Файл я взял с http://www.cpan.org/modules/by-module/String/String-CRC32-1.2.tar.gz, и установил:

# tar zxvf String-CRC32-1.2.tar.gz

# cd String-CRC32-1.2

# perl Makefile.PL

# make

# make test

# make install

Проверяем:

# cd /opt/drweb/update

# ./update.pl

Update.pl должен сходить в Интернет на сайт Dr.WEB, забрать все обновления и перезапустить drwebd, если он есть. В логах после запуска вы должны увидеть следующее:

Key file: /opt/drweb/drweb.key

Registration info:

0100003942

Evaluation Key (ID Anti-Virus Lab. Ltd, St.Petersburg)

This is an EVALUATION version with limited functionality!

To get your registration key, call regional dealer.

Loading /var/drweb/bases/drwtoday.vdb - Ok, virus records: 173

Loading /var/drweb/bases/drw42807.vdb - Ok, virus records: 33

Loading /var/drweb/bases/drw42806.vdb - Ok, virus records: 57

Loading /var/drweb/bases/drw42805.vdb - Ok, virus records: 133

Loading /var/drweb/bases/drw42804.vdb - Ok, virus records: 123

Loading /var/drweb/bases/drw42803.vdb - Ok, virus records: 73

Loading /var/drweb/bases/drw42802.vdb - Ok, virus records: 143

Loading /var/drweb/bases/drw42801.vdb - Ok, virus records: 76

Loading /var/drweb/bases/drwebase.vdb - Ok, virus records: 29405

Видите, появились свежие обновления для drweb с новыми вирусами. Теперь со спокойной душой запихиваем вызов update.pl в crontab. У меня он вызывается каждую ночь. Одно НО: Необходимо периодически вручную отслеживать выход новых версий drweb. Потому что как только выйдет новый DrWeb, ваш автоматически перестанет получать новые вирусные дополнения.

И последний шаг – установка www-почты:

Я взял последнюю версию SquirellMail с http://www.squirrelmail.org и установил согласно прилагающимся инструкциям. Для ее работы необходим настроенный Apache c PHP. Как это делать я уже писал несколько раз. Да и в сети куча документов, посвященным этому вопросу. Установка простая, поэтому я тут останавливаться не буду. Не забудьте – для SquirellMail необходим запущенный imap демон – так что не оплошайте.

Для завершения нашей эпопеи осталось всего два шага:

  • Проверьте, все ли заработает при запуске системы. Если есть возможность – перезагрузитесь и проверьте, запустился ли Dr.WEB, postfix, courier pop3 и/или imap c mysql. Отрабатывает ли update новые обновления и так далее. Просмотрите все конфигурационные файлы еще раз – не оставили ли вы где-нибудь ляпов или «соплей»? Для самостоятельной работы можете посмотреть на антиспамерные возможности drweb.
  • Проверьте, прикрыт ли MySQL и Dr.WEB от посторонних людей.

В общем все. Можете откинуться на спинку кресла и наблюдать, как работает почта.

Но для меня это еще не все. Раз все равно для пользователей стоит Apache с PHP, то я написал простенькую WWW – утилитку для управления почтовыми пользователями. Для ее работы необходимо создать в MySQL такую таблицу:

mysql> create table admins (login varchar(20) NOT NULL, password varchar(20),rights int(6));

И руками занести туда значения вроде «admin», «password»,0.

Эта таблица у меня используется в других внутрикорпоративных сервисах, поэтому желающие могут залезть в код и все исправить.

По адресу www.samag.ru/2002/01/multik/ лежат 3 файла auth.php, global.php, index.php. Просто положите эти три файла в один каталог, доступный вам. Поправьте значения в global.php. Все, можете вызывать и пользоваться. Логин и пароль – те, которые вы вручную добавили в таблицу admins.

Ну а дальше, я думаю, вы поймете. Утилитка писалась «на коленке», поэтому я вполне понимаю, что можно написать лучше и красивее. Пишите. Удачи !

А тем, кто до сюда дочитал – маленький бонус.

Если вы поглядите на это:

# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 mail.test.ru ESMTP Postfix

ehlo multik

250-mail.test.ru

250-PIPELINING

250-SIZE 10240000

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-XVERP

250 8BITMIME

К вашему большому сожалению вы не увидите строчек:

250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5

250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5

Либо вы увидите эти строчки, но почему-то нормальные почтовые клиенты (к примеру, TheBat или stuphead) не смогут авторизоваться для отправки почты. Только для отправки! В чем же дело ?

Дело в одной маленькой библиотеке, называемой Cyrus-SASL. К сожалению, ее писали люди, которые писали ее неправильно. Метод sasldb в ней важнее всех.

Внимание, если /etc/sasldb не пустой (смотреть вывод sasldblistusers), то в выводе postfix появляются строчки про DIGEST-MD5 и CRAM-MD5. Если пустой -то не появляются. Если в sasldb есть хоть одна запись, то аутентификация с участием методов LOGIN, DIGEST-MD5 и CRAM-MD5 идет через sasldb, НЕВЗИРАЯ на то, что написано после pwcheck_method. Поэтому, если у вас есть активно мигрирующие пользователи с нормальными почтовыми клиентами (Outlook и Mozilla – не подходят – они оба используют только метод PLAIN), то для отправки почты с таких клиентов их надо заводить вручную, используя команду аналогичную этой:

saslpasswd -c -u `postconf -h myhostname` username

Вот такой вот SASL. Правда, обещают, что в v2 будет все по честному, но пока v2 не выбралась из бета-состояния, да и postfix в стабильных версиях не поддерживает Cyrus-SASL v2.

Courier-IMAP использует SASL по другому, поэтому с ним все в порядке. Вот теперь точно все. Удачи!


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru