Меню сайта
Категории каталога
Настраиваем Postfix в качестве шлюза для внутреннего почтового сервера [2009]
В этом документе описывается, как установить на FreeBSD 7.1 MTA Postfix в связке с ClamAV, Postgrey и Dspam. Основная цель - обеспечить фильтрацию вирусов и спама, транслируя всю продравшуюся сквозь барьеры почту на внутренний почтовый сервер. Сразу оговорюсь, что я не слишком большой профессионал в создании почтовых систем и некоторые вещи, возможно, сделаны неправильно. Буду рад исправлениям/замечаниям. Как обычно, обновляем систему и порты: freebsd-update fetch freebsd-update install portsnap fetch Из системы портов нам понадобятся: /usr/ports/mail/postfix /usr/ports/mail/postgrey /usr/ports/security/clamav /usr/ports/security/clamsmtp /usr/ports/mail/dspam - я устанавливал его без поддержки баз данных и без CGI скриптов, но с функцией debug Запускать dspam будем с правами пользователя dspam, а не root, что предполагается по умолчанию, для чего добавляем в файл /etc/make.conf следущие строки: DSPAM_OWNER=dspam DSPAM_GROUP=dspam DSPAM_HOME_OWNER=dspam DSPAM_HOME_GROUP=dspam Создаем пользователя: pw groupadd dspam pw useradd dspam -g dspam -s "/sbin/nologin" -c "DSPAM" Устанавливаем dspam: cd /usr/ports/mail/dspam make config make install И исправляем права доступа: chown -R dspam:dspam /var/log/dspam mkdir /var/run/dspam chown -R dspam:dspam /var/run/dspam Все пользователи, для простоты, будут у нас в одной группе. Я исходил из тех соображений, что пользователей много, а вот обучать фильтр придется мне одному и уж лучше делать это сразу для всех скопом. vi /var/db/dspam/group globalgroup:shared:* Сразу устанавливаем права доступа: chown -R dspam:dspam /var/db/dspam Устанавливаем остальные пакеты: cd /usr/ports/mail/postfix make install cd /usr/ports/mail/postgrey make install cd /usr/ports/security/clamav make install cd /usr/ports/security/clamsmtp make install И, не теряя времени даром, вносим все это хозяйство в /etc/rc.conf: sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" clamsmtpd_enable="YES" clamav_clamd_enable="YES" clamav_freshclam_enable="YES" postfix_enable="YES" postgrey_enable="YES" dspam_enable="YES" Мой файл dspam.conf выглядит следующим образом: # Common Home /var/db/dspam StorageDriver /usr/local/lib/libhash_drv.so ServerMode standard ServerDomainSocketPath "/var/run/dspam/dspam.sock" ServerPID /var/run/dspam/dspam.pid ServerParameters "-deliver=innocent, spam" ServerIdent "localhost.localdomain" ClientHost "/var/run/dspam/dspam.sock" Notifications off PurgeSignatures 14 # Stale signatures PurgeNeutral 90 # Tokens with neutralish probabilities PurgeUnused 90 # Unused tokens PurgeHapaxes 30 # Tokens with less than 5 hits (hapaxes) PurgeHits1S 15 # Tokens with only 1 spam hit PurgeHits1I 15 # Tokens with only 1 innocent hit LocalMX 127.0.0.1 Debug * SystemLog on UserLog on Opt out ParseToHeaders on ChangeModeOnParse on ChangeUserOnParse off MaxMessageSize 307200 Trust dspam Trust postfix Trust root Trust mixa TrainingMode teft TestConditionalTraining on Feature chained Feature whitelist Algorithm graham burton PValue graham ProcessorBias on # User Preference "signatureLocation=headers" # 'message' or 'headers' Preference "showFactors=on" Preference "spamAction=tag" Preference "spamSubject=***SPAM***" # Hash HashRecMax 98317 HashAutoExtend on HashMaxExtents 0 HashExtentSize 49157 HashMaxSeek 100 HashConnectionCache 10 # Inject mail into postfix DeliveryHost 127.0.0.1 DeliveryPort 10026 DeliveryIdent localhost DeliveryProto SMTP Приступаем к настройке Postfix. Кроме дефолтных настроек, уже находящихся в main.cf, я добавил следущее: transport_maps = hash:/usr/local/etc/postfix/transport relay_domains = hash:/usr/local/etc/postfix/relay_domains virtual_transport = hash:/usr/local/etc/postfix/transport # =============== DSPAM ===================== dspam_destination_recipient_limit = 1 # =============== DSPAM ===================== local_recipient_maps = local_transport = local strict_mime_encoding_domain = yes disable_vrfy_command = yes smtpd_client_restrictions = reject_rbl_client bl.spamcop.net, permit_mynetworks, check_client_access regexp:/usr/local/etc/postfix/dul_checks, permit smtpd_helo_required = yes smtpd_helo_restriction = permit_mynetworks, check_helo_access regexp:/usr/local/etc/postfix/helo_regexp smtpd_recipient_restrictions = reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, reject_non_fqdn_hostname, check_sender_mx_access cidr:/usr/local/etc/postfix/mx_access.cidr, # =============== DSPAM ===================== check_client_access pcre:/usr/local/etc/postfix/dspam_filter_access, # =============== DSPAM ===================== check_policy_service inet:127.0.0.1:10023 # =============== ClamAv ===================== content_filter = scan:127.0.0.1:10025 receive_override_options = no_address_mappings # =============== ClamAv ===================== Я не стал связывать между собой ClamAV и Dspam, так как на некоторых форумах встречал сообщения о том, что работа связки бывает нестабильной. Мой transport: dreamcatcher.ru smtp:[10.1.5.62] Так как обучать антиспам я обучать буду путем отправки писем, содержащих спам, на почтовый ящик spam@mail.dreamcatcher.ru, то мой relay_domains выглядит следующим образом: dreamcatcher.ru OK mail.dreamcatcher.ru OK Внимание! Вместо обратной пересылки писем на сервер я сейчас просто забираю письма из почтового ящика postmaster с помощью mutt. Это связано с тем, что Lotus Notes при пересылке откусывает заголовки DSPAM. Эту проблему я пока не решил. По рекомендациям профессионалов используются фильтры: dul_checks /([0-9]*-){3}[0-9]*(\..*){2,}/i 553 SPAM_ip-add-rr-ess_networks /([0-9]*\.){4}(.*\.){3,}.*/i 553 SPAM_ip-add-rr-ess_networks /.*\..*\...\.comcast\.net/i 553 SPAM_comcast-net /.*yahoobb.*\.bbtec\.net/i 553 SPAM_yahoobb_bbtec-net /[0-9]{12}\.bbtec\.net/i 553 SPAM_host_bbtec-net /.*\.broadband\.hu/i 553 SPAM_broadband-hu /client.*\..*\..*/i 553 SPAM_CLIENT /cable.*\..*\..*/i 553 SPAM_CABLE /pool.*\..*\..*/i 553 SPAM_POOL /dial.*\..*\..*/i 553 SPAM_DIAL /ppp.*\..*\..*/i 553 SPAM_PPP /dslam.*\..*\..*/i 553 SPAM_DSLAM /dhcp.*\..*\..*/i 553 SPAM_DHCP /[\.-]dsl.*\..*\..*/i 553 SPAM_DSL /[ax]dsl.*\..*\..*/i 553 SPAM_XDSL /.*([0-9]*\.){4}cableonline\.com\.mx/i 553 SPAM_IP-cableonline-com-mx /.*\.([0-9]*\.){4}ip\.holtonks\.net/i 553 SPAM_ip-holtonks-net /([0-9]*-){3}[0-9]*\.fibertel\.com\.ar/i 553 SPAM_IP-fibertel-com-ar /.*[0-9]*-[0-9]*\.fibertel\.com\.ar/i 553 SPAM_IP-fibertel-com-ar /[0-9]*\.user\.veloxzone\.com\.br/i 553 SPAM_user-veloxzone-com-br /[0-9]*\.customer\.alfanett\.no/i 553 SPAM_customer-alfanett-no /.*([0-9]*-){3}[0-9]*\.telecom\.net\.ar/i 553 SPAM_host-telecom-net-ar /.*(-[0-9]*){2}\.telpol\.net\.pl/i 553 SPAM_host-telpol-net-pl /(.*\.){2}maxonline\.com\.sg/i 553 SPAM_host-maxonline-com-sg /(.*-){2}.*\.fairgamemail\.us/i 553 SPAM_host-fairgamemail-us /[0-9]*[0-9]*-\.wispnet\.net/i 553 SPAM_host-wispnet-net /.*-.*(\..*){2}\.ne\.jp/i 553 SPAM_host-ne-jp /[0-9]*\..*\.ne\.jp/i 553 SPAM_h09t-ne-jp /(.*\.){3}ad\.jp/i 553 SPAM_host-ad-jp /(.*\.){4}revip\.asianet\.co\.th/i 553 SPAM_revip-asianet-co-th /[0-9]*\..*\.virtua\.com\.br/i 553 SPAM_host-virtua-com-br /([0-9]*-){3}[0-9]*\.exatt\.net/i 553 SPAM_host-exatt-net /([0-9]*\.){4}ip\.alltel\.net/i 553 SPAM_host-ip-alltel-net /[0-9]{6,}\.chello\.../i 553 SPAM_host-chello /.*[0-9]*\..*\.chello\.../i 553 SPAM_host-chello-xx /.*\..*\.t-dialin\.net/i 553 SPAM_t-dialin-net /.*\..*\.t-ipconnect\.de/i 553 SPAM_t-ipconnect-de /([0-9]*-){2,3}[0-9]*\..*\.cgocable\.net/i 553 SPAM_host-cgocable-net /.*\..*\.shawcable\.net/i 553 SPAM_host-shawcable-net /p[0-9]*\.mp[0-9]*\.aaanet\.ru/i 553 SPAM_aaa_modem_pool /([0-9]*-){2}[0-9]*\.ip\.adsl\.hu/i 553 SPAM_ip-adsl-hu /([0-9]{1,3}\.){2}broadband4\.iol\.cz/i 553 SPAM_broadband-iol-cz helo_regexp /([0-9]{1,3}(\.|-)){3}[0-9]{1,3}/i REJECT IP-able helo SPAM mx_access.cidr 10.0.0.0/8 REJECT Domain MX in RFC 1918 private network 172.16.0.0/12 REJECT Domain MX in RFC 1918 private network 192.168.0.0/16 REJECT Domain MX in RFC 1918 private network 127.0.0.0/8 REJECT Domain MX in loopback network 224.0.0.0/4 REJECT Domain MX in class D multicast network 240.0.0.0/5 REJECT Domain MX in class E reserved network 248.0.0.0/5 REJECT Domain MX in reserved network 0.0.0.0/8 REJECT 010 Domain MX in broadcast network 169.254.0.0/16 REJECT 020 Domain MX in link local network dspam_filter_access /./ FILTER dspam:dspam master.cf # AV scan filter (used by content_filter) scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes # DSPAM dspam unix - n n - 10 pipe flags=Ru user=dspam argv=/usr/local/bin/dspam --deliver=innocent --user ${recipient} -i -f $sender -- $recipient # For injecting mail back into postfix from the filter 127.0.0.1:10026 inet n - n - 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8 Для проверки можно использовать следущие команды: telnet mail.dreamcatcher.ru 25 HELO test.com MAIL FROM: mixa@test.com RCPT TO: mixa@dreamcatcher.ru DATA From: mixa@test.com To: mixa@dreamcatcher.ru Test . Внимание! Вместо обратной пересылки писем на сервер я сейчас просто забираю письма из почтового ящика postmaster с помощью mutt. Это связано с тем, что Lotus Notes при пересылке откусывает заголовки DSPAM. Эту проблему я пока не решил. После сохранения писем в локальном каталоге пользователя, учу фильтр командой: dspam_train mixa /home/mixa/Spam /home/mixa/NoSpam Буду рад предложениям и замечаниям, чтобы улучшить эту статью на msgibnev(ого-го какая собака)gmail.com Ссылки по теме: http://woland.pl.ua/399-dspam-ustanovka-i-nastroyka/ http://www.samag.ru/art/07.2005/07.2005_09.html http://demon.yekt.com/3.html http://switch.richard5.net/isp-in-a-box-v2/setting-up-dspam/configure-postfix-for-the-dspam-content-filter/ Для обсуждения этой статьи вы можете воспользоваться этим форумом. Источник: http://dreamcatcher.ru/bsd/011_postfix.html
Категория: Mail | Добавил: oleg (18.05.2009) | Автор: Сгибнев Михаил
Просмотров: 1341 | Комментарии: 1 | Рейтинг: 0.0 /0 |
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев: 1
Порядок вывода комментариев:
По умолчанию
Сначала новые
Сначала старые
1
paravoz
(23.11.2009 14:44)
0
1. почему параметр local_recipient_maps = без значения? 2. почему в параметре smtpd_recipient_restrictions = повторяются значения reject_non_fqdn_hostname, reject_invalid_hostname,
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]
Форма входа
Друзья сайта