Установка Postfix SMTP mail server, POP3 сервер (popper) и Каspersky Mail Server
Установка 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
Часто приходилось видеть, как вирусописатели любят использовать 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
На этом установка касперского закончена.