Заметки сисадмина » Установка Postfix SMTP mail server, POP3 сервер (popper) и Каspersky Mail Server

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

Установка Postfix SMTP mail server, POP3 сервер (popper) и Каspersky Mail Server

2007-03-08 · Posted in FreeBSD

Установка Postfix SMTP mail server, POP3 сервер (popper) и Каspersky Mail Server

(c) by Lucky
Оригинал статьи:

В этой мане я попытаюсь изложить как настроить на базе свежеустановленного маршрутизатора почтовый POP3/SMTP сервер с антвирусом касперкого.

Нам понадобятся:

1) Исходники Postfix версии 2.0.16. Качаем с http://www.postfix.org/;

2) Всем известный POP3-сервер popper. Качаем из портов.

3) Антиврус Касперского. Покупаем у официальных дилеров в регионе.

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

Установка popper

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

# pkg_add qpopper-4.0.5.tgz

Правим /etc/inetd.conf:

# cd /etc

# ee inetd.conf

pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper -s

И, перезапустив inetd, проверим что inetd "слушает" 110 порт:

# killall -HUP inetd

# sockstat | grep 110

Если на файерволе открыт 110 порт, результатом должно быть примерно следующее:

root        inetd        77        6        tcp4         *:110        *.*

Если файерволл закрыт, то необходимо добавить следующие правила:

/sbin/ipfw -q add pass tcp from any to any 25,110

/sbin/ipfw -q add pass tcp from any 25,110 to any

Поверяем telnet'ом:

# telnet

telnet> open localhost 110

Connected to localhost.

Escape character is '^]'.

+OK Qpopper (version 4.0.5) at your_domain.ru starting. <29992.1089701756@your_domain.ru>

user <user_name>

+OK Password required for <user_name>.

pass <user_password>

+OK user <user_name> has 0 visible messages (0 hidden) in 0 octets.

quit

+OK Pop server at your_domain.ru signing off.

Connection closed by foreign host.

На этом устновка POP3-сервера закочена.

Установка и настройка postfix

Postfix достаточно быстрый, надежный, и гибко конфигурируемый сервер. Все остальные его плюсы и минусы могут быть найдены в интернете. Например, на сайте opennet.ru. Я выбрал его потому, что sendmail настроенный с касперским, все ж частично пропускал вирусы.

Сначала необходимо добавить соответствующих пользователя и группу в group и master.passwd

# ee group

postfix:*:12345:postfix

postdrop:*:12346:postfix

# ee master.password

postfix:*:12345:12345::0:0:postfix daemon:/noexistent:/sbin/nologin

# vipw

:wq

Далее, разворачиваем исходники:

# tar zxvf postfix-2.0.16.tar.gz

# cd ./postfix-2.0.16

# make

# make install

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

install_root: [/]

temp_dir: [/usr/local/src/postfix-2.0.16]

config_directory: [/etc/postfix]

daemon_directory: [/usr/libexex/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]

Правим rc.conf:

sendmail_enable="NONE"

Проверяем наличие sendmail:

top | grep senmail

Если получен результат, т.е. sendmail присутствует в процессах:

killall sendmail

Правим main.cf – основной конфигурационный файл postfix:

# cd /etc/postfix

# ee main.cf

Далее будет приведены строки, и необходимые для них комментарии, на которые стоит обратить особое внимание. Готовый файл можно взять здесь.

myhostname = relay.your_host.ru

# запись MX для всшего домена. Необходимо помнить, что эта запись должна быть у вашего провайдера. Если вы сами держите зону DNS, то она соответственно должна присутствовать в вашей зоне DNS.

mydomain = your_domain.ru

# запись для домена

inet_interfaces = 192.168.0.254, localhost, 123.123.123.10

#здесь указаны интерфейсы, котореы будут "слушать" 25 порт, т.е внешняя, внутреняя и localhost. Можно также указать слово "all".

mydestination = $myhostname, localhost, $mydomain

# параметр, определяющий имена доменов для получения почты. Если нужно использовать почту для нескольких доменов, не нужно указывать их здесь. Для этого существует специальный файл. (domain)

unknown_local_recipient_reject_code = 550

#Код ошибки для неизветных локальных получателей почты.

mynetworks = 192.168.0.0/24, 127.0.0.0/8, 123.123.123.10

# параметр, определяющий каким сетям разрешно релэить через postfix.

virtual_alias_maps = hash:/etc/postfix/virtual

virtual_alias_domains = /etc/postfix/domain

#Хэш для виртуальных алиасов и поддержки нескольких доменов при необходимости.

smtpd_recipient_restrictions = permit_mynetworks, check_client_access hash:/etc/postfix/client_access, check_sender_access hash:/etc/postfix/sender_access, reject_unauth_destination,reject_rbl_client list.dsbl.org, reject_rbl_client relays.ordb.org, reject_rbl_client dynablock.wirehub.net, reject_rbl_client

blackholes.wirehub.net, reject_rbl_client dnsbl.njabl.org

# параметр, опредялющий разрешения для получателей. Именно здесь можно прицепить различные фильтры, такие как проверка recepient black list и т.д.

header_checks = regexp:/etc/postfix/header_checks

body_checks = regexp:/etc/postfix/body_checks

#также еще один важный момент, на котором бы хотелось остановиться, это параметры headers_check и body_cheks. Если вкупе с postfix, поставить какой-нибудь спам-фильтр, то это даст возможость фильтровать входящую почту. Файлы headers_check и body_cheks могут быть взять отсюда или отсюда и отсюда.

smtpd_banner = ESMTP Mail Server v1.0 (Build 2195)

# поменяем вывеску, для повышения секьюрности.

alias_maps = hash:/etc/postfix/aliases

# база с алиасами

# в качестве меры безопасности, лучше использовать алиасы. Далее будет показано, как это сделать.

Сохраняем main.cf и переходим к созданию дополнительных конфигурационных файлов.

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

# ee client_access

123.123.132.10 OK

В этом случае для любого клиента с IP 123.123.132.10 этот релей будет окрытым. Не забудем сделать хэш:

# makemap hash client_access.db < client_access

После этого создаем файл virtual.db. Это делается для повышения безопасности. Совсем правильно будет поставить postfix в jail, если вы не собираетесь предоставлять услуги как провайдер. В одной из ман я расскажу как сделать jail. Насколько я в курсе, jail есть только во FreeBSD, и это еще один плюс в выбор этой ОС в качестве маршрутизатора.

# cd /etc/postfix

# ee virtual

popuser1        name_user1@your_domain.ru

popuser2        name_user2@your_domain.ru

# makemap hash        virtual.db < virtual

Естественно, что пользователи popuser1 и popuser2 должын быть в master.passwd в группе mail, например:

popuser1:sEcRTk2kDnF1E:1000:6::0:0:popuser1:/nonexistent:/sbin/nologin

Если нужно принимать почту на несколько доменов, то раскомментируем нужную строку в main.cf и создадим файл domain, в котором столбиком пропишем все те домены, для которых получаем почту. Необходимо также помнить, что для всех этих доменов должна быть соответствующая MX запись в DNS.

# ee domain

your_domain.ru

another.your_domain.ru

Соответственно, можно указать пользователей различных доменов в virtual

popuser1        name_user1@your_domain.ru

popuser2        name_user2@another.your_domain.ru

# makemap hash virtual.db < virtual

Еще один важный момент, на котором нужно остановиться – это возможность отправки почты пользователями, находящимися ВНЕ вашей локальной сети, так как по умолчанию postfix им позволить отправлять только пользователям вашей сети. Итак, раскомментируем соответствующую строку в main.cf и создадим файл:

# ee sender_access

user1@your_domain.ru        OK

Часто приходилось видеть, как вирусописатели любят использовать e-mail admin@ для своих гнусных целей, поэтому неплохо было бы запретить хождение с этого адреса:

admin@your_domain.ru        REJECT

Не забываем создать хэш:

# makemap hash sender_access.db < sender_access

Не забудем подправить /etc/postfix/aliases и создать хэш, чтобы была возможномть получать, почту на root, postmaster, etc.

На этом устновка postfix без касперского закончена, проверяем, что все изменения корректны:

# postfix check

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

# postfix start

# sockstat |grep :25

postfix smtpd 31082 6 tcp4 192.168.1.250:25 *:*

postfix smtpd 31082 7 tcp4 127.0.0.1:25 *:*

postfix smtpd 31082 8 tcp4 123.123.123.10:25 *:*

root master 226 11 tcp4 192.168.1.250:25 *:*

root master 226 12 tcp4 127.0.0.1:25 *:*

root master 226 13 tcp4 123.123.123.10:25 *:*

Должны получить демон, слущающий 25 порт. Проверяем telnet'ом:

# telnet

telnet> open relay.your_domain.ru 25

Trying 123.123.123.10…

Connected to your_domain.ru.

Escape character is '^]'.

220 ESMTP Mail Server v1.0 (Build 2195)

mail from: info@lucky.ymrc.ru

250 Ok

rcpt to: postmaster@your_domain.ru

250 Ok

data

354 End data with .

.

250 Ok: queued as E445AA58B

На это установка и настройка POP3/SMTP сервера закончена. Осталось настроить только почтовые клиенты.

Шаг номер три: прикручиваем Касперского

Для начала нужно раздобыть готовый антвивирус с ключом как package. У меня это был kav4mailservers-freebsd-4.x-5.0.2.1.tgz с лицензией на год.

Добавляем package:

# pkg_add kav4mailservers-freebsd-4.x-5.0.2.1.tgz

На данном этпае нужно лишь быть внимательным с указанием путей. Все изменения будут вноситься автоматически. Единственное, что пришлось сделать после уставновки Каспеского – залить антивирусные базы с помощью /usr/local/share/kav/bin/kavupdater и прописать пользователей, для которых нужно будет проверять входящую почту в /var/db/kav/5.0/kav4mailservers/keys.

После этого необходимо запустить бинарник /usr/local/share/kav/bin/aveserver и проверить работу антивирусного фильтра. У меня для этих целей была тулзовниа delpart.com, которая по Enter уничтожает партиции жесткого диска.

Открываем почтовго клиента и посылаем письмо на свой собственный ящик c каким либо заботливо припасенным трояном. Получаем ответ:

Alarm! Virus found in message to you!

Для себя я еще также сделал автоматическое обновление антивирусных баз в кроне:

1 8 * * * root /usr/local/share/kav/bin/kavupdater

Не забудье в пути cron'а указать путь к wget:

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

На этом установка касперского закончена.

Leave a Reply