Фев 25 2010

Exim с патчем SA exim.

Exim сам по себе умеет обращаться к SpamAssassing для проверки писем на спам. Но при активном использовании SpamAssasing возникают проблемы, чаще всего они не очень опасны на слабонагруженных почтовых серверах, но под средней нагрузкой уже возникают нюансы. Проверка всех писем подряд, не самая лучшая идея, особенно когда писем большого размера идет плотный поток. Сделать ограничения по размеру проверяемого письма, ну то есть допустим проверять письма размером до 2 мегабайт, стандартными средствами очень сложно. Второй нюанс это отсутсвие в стандартной версии карантина. Откуда при желании можно вытянуть письмо.

Этих недостатков лишен exim с патчем sa-exim. Ставится он из портов:

cd /usr/ports/mail/exim-sa-exim
make install clean

В новой версии порта exim появился диалог настройки сборки. Очень большой диалог. Тут перечисленны все фитчи exim. Выглядит он так:

┌────────────────────────────────────────────────────────────────────┐
│                Options for exim-sa-exim 4.71+4.2                   │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │[ ] ALT_CONFIG_PREFIX  Allow alternate configuration files      │ │
│ │[ ] AUTH_CRAM_MD5      Enable CRAM-MD5 authentication mechanisms│ │
│ │[X] AUTH_DOVECOT       Enable Dovecot authentication mechanisms │ │
│ │[ ] AUTH_PLAINTEXT     Enalbe plaintext authentication          │ │
│ │[ ] AUTH_RADIUS        Enable radius (RFC 2865) authentication  │ │
│ │[ ] AUTH_SASL          Enable use of Cyrus SASL auth library    │ │
│ │[ ] AUTH_SPA           Enable Secure Password Authentication    │ │
│ │[X] CDB                Enable CDB-style lookups                 │ │
│ │[ ] CONTENT_SCAN       Enable exiscan email content scanner     │ │
│ │[X] DAEMON             Install scripts to run as a daemon       │ │
│ │[ ] DCC                Enable DCC at ACL support via dccifd     │ │
│ │[ ] DEBUG              Build with debugging symbols             │ │
│ │[X] DNSDB              Enable DNS-style lookups                 │ │
│ │[X] DSEARCH            Enable directory-list lookups            │ │
│ │[X] EMBEDDED_PERL      Enable embedded Perl interpreter         │ │
│ │[ ] EXIMON             Build eximon monitor (require XFree86!)  │ │
│ │[X] ICONV              Enable header charset conversion         │ │
│ │[ ] IPV6               Enable IPv6 support                      │ │
│ │[ ] KAS                Build with Kaspersky AntiSpam local scan │ │
│ │[X] LMTP               RFC2033 SMTP over command pipe transport │ │
│ │[X] LSEARCH            Enable wildcarded-file lookups           │ │
│ │[X] MAILDIR            Enable Maildir mailbox format            │ │
│ │[X] MAILSTORE          Enable Mailstore mailbox format          │ │
│ │[X] MBX                Enable MBX mailbox format                │ │
│ │[X] MYSQL              Link against libmysqlclient library      │ │
│ │[ ] NIS                Enable NIS-style lookups                 │ │
│ │[X] OLD_DEMIME         Enable old, deprecated demime ACL        │ │
│ │[ ] OPENLDAP           Link against libldap                     │ │
│ │[X] PAM                Enable PAM authentication mechanisms     │ │
│ │[X] PASSWD             Enable /etc/passwd lookups               │ │
│ │[ ] PGSQL              Link against libpq                       │ │
│ │[ ] READLINE           Enable readline(3) library               │ │
│ │[ ] SASLAUTHD          Enable use of Cyrus SASL auth daemon     │ │
│ │[X] SA_EXIM            SA-Exim support                          │ │
│ │[ ] SPF                Enable Sender Policy Framework checking  │ │
│ │[ ] SQLITE             Enable SQLite lookups                    │ │
│ │[ ] SRS                Enable Sender Rewriting Scheme           │ │
│ │[ ] SRS_ALT            Enable alternative SRS library           │ │
│ │[X] SUID               Install the exim binary suid root        │ │
│ │[X] TCP_WRAPPERS       Enable /etc/hosts.allow access control   │ │
│ │[X] TLS                Link against OpenSSL                     │ │
│ │[ ] WISHLIST           Include the unsupported patches          │ │
│ │[ ] XCLIENT            Enable XCLIENT command in exim           │ │
├─└────.(+)────────────────────────────────────────────────────────┘─┤
│                       [  OK  ]       Cancel                        │
└────────────────────────────────────────────────────────────────────┘

Если у вас не стоит SpamAssassing, то он будет установлен по депендам.
Диалог настройки сборки SpamAssassing выглядит так:

┌────────────────────────────────────────────────────────────────────┐
│             Options for p5-Mail-SpamAssassin 3.3.0_2               │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │   [X] AS_ROOT        Run spamd as root (recommended)           │ │
│ │   [X] SPAMC          Build spamd/spamc (not for amavisd)       │ │
│ │   [X] SACOMPILE      sa-compile                                │ │
│ │   [X] DKIM           DKIM/DomainKeys Identified Mail           │ │
│ │   [X] SSL            Build with SSL support for spamd/spamc    │ │
│ │   [X] GNUPG          Install GnuPG (for sa-update)             │ │
│ │   [ ] MYSQL          Add MySQL support                         │ │
│ │   [ ] PGSQL          Add PostreSQL support                     │ │
│ │   [ ] RAZOR          Add Vipul''s Razor support                │ │
│ │   [X] SPF_QUERY      Add SPF query support                     │ │
│ │   [X] RELAY_COUNTRY  Relay country support                     │ │
│ │   [ ] DCC            Add DCC support (see LICENSE)             │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│                       [  OK  ]       Cancel                        │
└────────────────────────────────────────────────────────────────────┘

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

echo 'spamd_enable="YES"'>>/etc/rc.conf

и запускаем его:

/usr/local/etc/rc.d/sa-spamd start

Теперь по настройкам sa-exim. У него отдельный файл настроек sa-exim.conf, выглядит он так(Там немного комментариев, по самым интересным местам):

#Включаем вывод отладочной информации
SAEximDebug: 1
#Путь и адрес с портом на котором отвечает spamd
SAspamcpath: /usr/local/bin/spamc
SAspamcHost: 127.0.0.1
SAspamcPort: 783
#Разрешаем проверять на спам все хосты кроме локальных отправок.
SAEximRunCond: ${if and {{def:sender_host_address} {!eq {$sender_host_address}{127.0.0.1}} {!eq {$h_X-SA-Do-Not-Run:}{Yes}} }
SAEximRejCond: ${if !eq {$h_X-SA-Do-Not-Rej:}{Yes} {1}{0}}
#Проверяем 250 килобайт письма
SAmaxbody: 256000
#При включении опции SATruncBodyCond будет происходить проверка любого сообщения
#Просто сообщение будет проверенно частично, в соответствии с ограничением
# SAmaxbody. Если же эта опция не включена, большие сообщения не будут проверяться.
#При проверке части сообщения, возможны ложные срабатывания.
SATruncBodyCond: 0
SARewriteBody: 0
SAPrependArchiveWithFrom: 1
SAmaxarchivebody: 20971520
SAerrmaxarchivebody: 1073741824
SAmaxrcptlistlength: 0
SAaddSAEheaderBeforeSA: 1
#Эти настройки отвечают за сохранение на диск сообщений, при проверке которых возникли
#проблемы во взаимодействии со SpamAssassing
SAtimeoutsave: /var/spool/exim/SAtimeoutsave
SAtimeoutSavCond: 1
SAerrorsave: /var/spool/exim/SAerrorsave
SAerrorSavCond: 1
SAtemprejectonerror: 0
SAteergrubetime: 900
SAteergrubeSavCond: 1
SAteergrubesave: /var/spool/exim/SAteergrube
SAteergrubeoverwrite: 1
SAdevnullSavCond: 1
SAdevnullsave: /var/spool/exim/SAdevnull
#Не принимать сообщения с 5 балами
SApermreject: 5.0
#Сохранять их в карантин
SApermrejectSavCond: 1
SApermrejectsave: /var/spool/exim/SApermreject
#Временный отказ в приеме сообщения, реализации greylistа
SAtempreject: 4.0
SAtemprejectSavCond: 1
SAtemprejectsave: /var/spool/exim/SAtempreject
SAtemprejectoverwrite: 1
SAgreylistiswhitestr: GREYLIST_ISWHITE
SAgreylistraisetempreject: 3.0
SAspamacceptsave: /var/spool/exim/SAspamaccept
SAspamacceptSavCond: 0
SAnotspamsave: /var/spool/exim/SAnotspam
SAnotspamSavCond: 0
#Сообщения которые выдает sa-exim 
SAmsgteergrubewait: Wait for more output
SAmsgteergruberej: Please try again later
SAmsgpermrej: Rejected
SAmsgtemprej: Please try again later
SAmsgerror: Temporary local error while processing message, please contact postmaster.

Перед тем, как запускать sa-exim в работу, нужно сделать еще несколько операций.
Во первых создать директорию, где SpamAssassing будет хранить настройки и кеш сообщений. Поскольку со спамассасином общается exim от имени mailnull, то директорию нужно создавать в домашнем каталоге пользователя mailnull:

mkdir /var/spool/mqueue/.spamassassin/

и сделаем mailnull владельцем этой директории:

chown mailnull /var/spool/mqueue/.spamassassin/

В принципе все. exim настраивается независимо, sa-exim мы настроили. Можно запускать exim.

echo 'exim_enable="YES"'>> /etc/rc.conf
/usr/local/etc/rc.d/exim start

И немного по работе. Вместе с SpamAssassing идет sa-update, это обновлялка сигнатур спама. Я обычно запускаю его раз в сутки по крону. С помощью такого скрипта:

less /root/sh/bin/saupdate.sh
#!/bin/sh
/usr/local/bin/sa-update && /usr/local/etc/rc.d/sa-spamd reload

И переодически выгружаб пролазящий спам в mbox ящик spam и натравливаю на него sa-learn.

sa-learn --mbox -u mailnull --spam spam

Все это дает возможность более менее спокойно читать почту.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
  • By Aleksey, 23.08.2010 @ 02:09

    Интересно а если Exim уже установлен и настроен можно ставить sa-exim?

Other Links to this Post


Украинская Баннерная Сеть