Скопипастил
отсюда
POSTFIX
Установим нужные для работы почтового сервера пакеты.
apt-get install postfix libsasl2 libsasl2-modules sasl2-bin cyrus-imapd-2.2 cyrus-pop3d-2.2 cyrus-admin-2.2
Во время первоначальной настройки postfix укажите конфигурацию для Интернет-сайта (Internet Site). На вопрос об имени почтового сервера-оставьте вариант по-умолчанию или укажите свой. В нашем случае это было mailserver.test.ru
Настроим сервер авторизации saslauthd на использование базы данных паролей sasldb2. Для этого отредактируем файл
/etc/default/saslauthd:
mcedit /etc/default/saslauthd:
START=yes
MECHANISMS="sasldb"
Запустим сервис командой:
/etc/init.d/saslauthd start
Сейчас проверим правильно ли он работает, но для начала необходимо добавить хотя бы одного пользователя.
mailserver:~# saslpasswd2 test
Password:
Again (for verification):
mailserver:~# sasldblistusers2
test@mailserver: userPassword
mailserver:~# testsaslauthd -u test -p test
Если в результате этих манипуляций вы получили сообщение "0: OK "Success.", значит все в порядке и можно продолжать. Если же авторизация не прошла - смотрите файл /var/log/auth.log и повторяйте, повторяйте и ещё раз повторяйте все шаги, пока не получится нужный результат.
У почтового сервера postfix есть одна особенность - после запуска он работает в chroot окружении, которое находится в папке /var/spool/postfix/.
Это сделано из соображений безопасности, однако несколько усложняет сам процесс настройки. Так как postfix общается с остальными приложениями в большинстве случаев посредством socket'ов, и выше своего chroot окружения выбраться не может, то эти сокеты приходится переносить в доступную postfix-папку.
Учитывая то, что для авторизации пользователей postfix будет использоваться демон saslauthd, нам нужно перенести его socket в рабочую директорию нашего сервера /var/spool/postfix/. Самый простой способ сделать это заключается в монтировании в нужную папку директории с уже созданным сокетом демона saslauthd.
Делается это редактированием файла
/etc/fstab.
mcedit /etc/fstab:
/var/run/saslauthd /var/spool/postfix/var/run/saslauthd none rw,bind 0 0
Не забудьте поставить [Enter] после последней строки. Также нужно не забыть создать папку, куда мы смонтируем сокет демона авторизации.
mkdir -p /var/spool/postfix/var/run/saslauthdmount /var/run/saslauthd
Сейчас сконфигурируем postfix для использования sasl авторизации.
mcedit /etc/postfix/main.cf:
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_authenticated_header = yes
smtpd_sasl_application_name = smtpd
Существует и упрощенный вариант редактирования этого файла командой
postconf –e "smtpd_sasl_auth_enable = yes" и т.д.Сейчас мы запретим отсылать почту через наш SMTP шлюз без авторизации. Для этого создадим файл
/etc/postfix/sasl/smtpd.conf со следующим содержимым.
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
Перезапустим наш postfix сервер и внимательно просмотрим следующие файлы на предмет ошибок:
* /var/log/mail.err
* /var/log/mail.info
* /var/log/mail.warn
* /var/log/mail.log.
Если все чисто, сухо и гладко - обратимся к утитиле telnet, для того, чтобы подключиться к нашему серверу.
mailserver:~# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.test.ru ESMTP Postfix (Debian/GNU)
EHLO http://www.x-drivers.ru/
250-mailserver.test.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME250 DSNQUIT
Connection closed by foreign host.
Если у вас нечто похожее - продолжаем, если же подключение не удалось - проверяем где вы вставили лишний пробел или нечаянно удалили символ.
Для того, чтобы "подружить" saslauthd и postfix необходимо выполнить следующее:
adduser postfix sasl
CYRUS
В нашем случае cyrus будет заниматься получением почты от postfix, раскладыванием ее по папкам и предоставлению к ней доступа пользователям. Отредактируем файл
/etc/imapd.conf.
mcedit /etc/imapd.conf :
admins: cyrus
allowplaintext: yes
sasl_mech_list: PLAIN
sasl_pwcheck_method: saslauthd auxprop
sasl_auxprop_plugin: sasldb
Обратите внимание, что cyrus так же, как и saslauthd, придется взаимодействовать с postfix, поэтому их нужно сделать доступными друг другу. Воспользуемся уже известным механизмом:
mcedit /etc/fstab :
/var/run/cyrus /var/spool/postfix/var/run/cyrus none rw,bind 0 0
Не забываем создать папки для cyrus.
mkdir -p /var/spool/postfix/var/run/saslauthd
mkdir -p /var/spool/postfix/var/run/cyrus
mount /var/spool/postfix/var/run/saslauthd
mount /var/spool/postfix/var/run/cyrus
mount /var/run/cyrus
Сейчас предоставим возможность cyrus забирать почту у postfix. Отредактируем файл
/etc/postfix/main.cf:
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
Добавим почтовый сервер в группу lmtp:
addgroup lmtp
adduser postfix lmtp
И выполним следующее:
dpkg-statoverride --remove /var/run/cyrus/socket
dpkg-statoverride --force --update --add cyrus lmtp 750 /var/run/cyrus/socket
Добавим еще одну опцию:
local_recipient_maps =
В случае с pam-авторизацией по логинам и паролям системных пользователей все бы работало без проблем. Но когда имена и пароли хранятся в формате, отличном от системного, необходимо указать данную опцию. Она означает "принимать письма для любого адресата". Это, конечно, не лучший выход, однако лучшего пока найти не удалось.Добавим пользователя cyrus в нашу базу учетных записей:
saslpasswd2 -c cyrus
Введите пароль, когда вас об этом попросят, и перезапустим наши демоны:
/etc/init.d/postfix start
/etc/init.d/cyrus2.2 restart
/etc/init.d/saslauthd restart
Если вы без ошибок сделаете все, что было описано выше, то теоретически к этому моменту уже можете принимать и отправлять письма, создавать и удалять папки на IMAP-сервере, устанавливать квоты и права доступа на папки средствами утилиты cyradm.К примеру, можно создать скрипт, который будет создавать пользователю папки Sent, Trash, Drafts, Spam средствами утилиты cyradm.Так как все дальнейшие действия по настройке в целях тестирования потребуют отсылать и принимать почту, приведем краткую инструкцию по созданию почтовых аккаунтов:
saslpasswd2 –c <имя пользователя>
cyradm –user cyrus localhost
localhost>cm user.<имя пользователя>
localhost>cm user.<имя пользователя>.INBOX
localhost>cm user.<имя пользователя>.Sent
localhost>cm user.<имя пользователя>.Draft
localhost>cm user.<имя пользователя>.Trash
При желании, можно задать квоты на количество места в папках и другие параметры, с которыми можно познакомиться набрав "?" или "help" в утилите cyradm.
Если вы собираетесь использовать почтовый сервер только внутри организации и в Интернет он смотреть не будет, то на этом настройку можно и оставить.
Amavisd-new, SpamAssassin и ClamAV
Приступим к установке Amavisd-new, SpamAssassin и ClamAV.
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip unarj bzip2
Внесем некоторые изменения в конфигурационные файлы amavisd:
mcedit /etc/amavis/conf.d/50-user
$forward_method = 'smtp:127.0.0.1:10025'; # where to forward checked mail
$notify_method = $forward_method; # where to submit notifications
$virus_quarantine_to = 'undef';
$sa_local_tests_only = 0;@inet_acl = qw( 127.0.0.1 );
mcedit /etc/amavis/conf.d/20-debian_defaults
$final_virus_destiny = D_REJECT; # (defaults to D_BOUNCE)
$final_banned_destiny = D_REJECT; # (defaults to D_BOUNCE)
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
$viruses_that_fake_sender_re = new_RE(
qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i,
qr'tanatos|lentin|bridex|mimail|trojan.dropper|dumaru|parite|spaces'i,
qr'dloader|galil|gibe|swen|netwatch|bics|sbrowse|sober|rox|val(hal)?la'i,
qr'frethem|sircam|be?agle|tanx|mydoom|novarg|shimg|netsky|somefool|moodown'i,
qr'@mm|@MM', # mass mailing viruses as labeled by f-prot and uvscan
qr'Worm'i, # worms as labeled by ClamAV, Kaspersky, etc
[qr'^(EICAR|Joke.|Junk.)'i => 0],
[qr'^(WM97|OF97|W95/CIH-|JS/Fort)'i => 0],
[qr/.*/ => 1], # true by default (remove or comment-out if undesired)
);
#$QUARANTINEDIR = "$MYHOME/virusmails";
$QUARANTINEDIR = undef;
$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.3; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 999; # triggers spam evasive actions
Добавим пользователя clamav в группу amavis:
adduser clamav amavis
Сейчас заставим postfix отдавать почту для проверки антивирусом. Отредактируйте файл
/etc/postfix/master.cf:
mcedit /etc/postfix/master.cf :
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
Так же добавьте в конец
/etc/postfix/main.cf:
content_filter=smtp-amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
Перестартуйте его и посмотрите нет ли ошибок в лог-файле:
/etc/postfix/restart
tail /var/log/mail.log
ставим пакет dcc-client. Т.к. я его не нашёл в репозитариях Dibian, будем ставить его же от Ubuntu. Для этого находим его на сайте поиска пакетов для Ubuntu
http://packages.ubuntu.com. пакет dcc-client, зависит от пакета dcc-common. Так что его тоже нужно закачать и установить. Находим его на том же сайте
Устанавливаем их:
dpkg -i dcc-client_1.2.74-2_i386.deb dcc-common_1.2.74-2_i386.deb
Установим ещё несколько инструментов и настроим spamassassin:
apt-get install razor pyzor
Отредактируем файл /etc/spamassassin/local.cf:
mcedit /etc/spamassassin/local.cf :
# rewrite_header Subject *****SPAM*****
# report_safe 1
# trusted_networks 212.17.35.
# lock_method flock
# dcc
use_dcc 1
dcc_path /usr/bin/dccproc
dcc_add_header 1
dcc_dccifd_path /usr/sbin/dccifd
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_add_header 1
#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
Сейчас нужно разрешить spamassassin запускаться:
mcedit /etc/default/spamassassin :
ENABLED=1
И перезапустить нужные приложения:
/etc/init.d/postfix restart
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart
/etc/init.d/spamassassin restart
Попробуйте создать пользователей и попробовать обменяться письмами. В том числе и письмами с прикрепленными exe-файлами. Если вы все правильно настроили – фильтр должен задержать такие файлы и прислать вам соответствующие уведомления.