Установка postfix под FreeBSD.


Нам понадобятся:
1) Исходники Postfix версии 2.0.16. Качаем с www.postfix.org;
2) Всем известный POP3-сервер popper. Качаем из портов.
3) Антиврус Касперского. Покупаем у официальных дилеров в регионе. у меня в свое время ключик был, но к сожалению всему приходит конец, поставил бесплатный антивирус, о чем нисколько не жалею
ClamAV + clamsmtpd + Postfix под Linux и FreeBSD

Установка 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, поставить какой-нибудь спам-фильтр, то это даст возможость фильтровать входящую почту.

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@example.com
250 Ok
rcpt to: postmaster@your_domain.ru
250 Ok
data
354 End data with .
.
250 Ok: queued as E445AA58B

На это установка и настройка POP3/SMTP сервера закончена. Осталось настроить только почтовые клиенты.
Как бороться со спамом здесь Антиспам без оружия, или настройка Postfix

Шаг номер три: прикручиваем Касперского
или
ClamAV + clamsmtpd + Postfix под Linux и FreeBSD

Для начала нужно раздобыть готовый антвивирус с ключом как 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!

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

# crontab -e
1 8 * * * root /usr/local/share/kav/bin/kavupdater

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

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
На этом установка касперского закончена.

да, к стати, за этот ман спасибо Lucky

Обновлено: 12.03.2015