IBM Lotus Notes + SpamAssassin на OpenSuse Linux

В данный момент во время финансового кризиса многие предприятия пытаются сократить расходы - начиная от сокращения расходов на канцелярских товарах заканчивая увольнением сотрудников (к сожалению). Системные администраторы на многих предприятиях пытаются сократить расходы переходом с дорогущих серверных версий ОС Windows (цены от $600 до $3000 согласитесь кусаются) на абсолютно бесплатные операционные системы семейства Linux, но иногда не все так просто как кажется на первый взгляд.
Например многие крупные предприятия пользуются таким крупным программным обеспечением как IBM Lotus Notes, который сам по себе не поддерживает на сегодняшний день очень нужные функции:

  • антиспам фильтрацию
  • проверку электронных писем на вирусы

Если раньше это все работало на ОС Windows в связке IBM Lotus Notes + (Symatec или Dr. Web) то на ОС Linux такое работать уже не будет. К счастью есть другие альтернативные решения, можно фильтровать спам с помощью такого мощного инструмента как SpamAssassin.

В этой статье рассматриваеться настройка IBM Lotus Notes и SpamAssassin на ОС Linux.

Рассмотрим в начале теоретическую часть.
Все программы в unix-совместимых операционных системах строятся по принципу кирпичиков и системный администратор из этих кирпичиков строит уже некую рабочую среду для решения конкретной задачи. В нашем случае кирпичиками будут Postfix, SpamAssassin, ClamAV и большим монолитным блоком будет IBM Lotus NotesДоволенИ так почта ходит вот так:

Internet -> IBM Lotus Notes


После нашего строительства она будет ходить вот так:

Internet -> Postfix -> ClamAV -> SpamAssassin -> Postfix -> IBM Lotus Notes

Давайте рассмотрим схему подробней. Допустим у нас есть почтовый сервер с двумя сетевыми картами с адресами 192.168.0.1 (локальная сеть) и 71.0.0.1 (интернет) Postfix будет принимать почту на порту 25 на обоих интерфейсах для удобства пользователей локальной сети и передавать по цепочке на проверку ClamAV через Milter API и SpamAssassin через программу клиент spamc. IBM Lotus Notes мы подвинем на порт 1025 что бы так как 25 порт уже будет занят Postfix'ом . К сожалению нельзя IBM Lotus Notes попросить обслуживать только один интерфейс поэтому 71.0.0.1:1025 лучше закрыть фаерволлом. И так более подробная схема будет выглядеть вот так:

Internet -> Postfix(71.0.0.1:25) -> ClamAV -> SpamAssassin(spamc) -> Postfix(relay 192.168.0.1:25) -> IBM Lotus Notes(192.168.0.1:1025)
И так приступим. У вас уже должны быть установлены OpenSuse Linux и IBM Lotus Notes надеюсь вы установили их без меня Улыбка Откройте консоль под пользователем root и установите следующие пакеты, запуском соответствующих команд и воспользуйтесь утилитой yast для того что бы установить Postfix, SpamAssassin и ClamAV в автозагрузку в меню System->System Services (Runlevel):

$ zypper install postfix
$ zypper install spamassassin
$ zypper install clamav
$ zypper install fetchmail
$ yast

И так вы установили наши керпички, теперь самое время перенастроить IBM Lotus Notes на обслуживание порта 1025. Приступим к настройке Postfix, откройте на редактирование файл /etc/postfix/main.cf и установите следующие значения:

inet_interfaces = all
inet_protocols = all
local_recipient_maps =
mydomain = ВАШ САЙТ.com.ua
myhostname = mail.ВАШ САЙТ.com.ua
mynetworks = 127.0.0.0/8, 192.168.0.0/24
mynetworks_style = subnet
relay_domains = ВАШ САЙТ.com.ua
smtpd_banner = $myhostname ESMTP $mail_name
# отбрасываем спам по RBL спискам
smtpd_client_restrictions = permit_mynetworks, reject_rbl_client blackholes.easynet.nl, reject_rbl_client cbl.abuseat.org, reject_rbl_client proxies.blackholes.wirehub.net, reject_rbl_client bl.spamcop.net, reject_rbl_client sbl.spamhaus.org, reject_rbl_client dnsbl.njabl.org, reject_unknown_client, permit
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, permit
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, permit
smtpd_sender_restrictions = permit_mynetworks, hash:/etc/postfix/access, permit
strict_8bitmime = no
strict_rfc821_envelopes = yes
transport_maps = hash:/etc/postfix/transport
# проверка через ClamAV
smtpd_milters = unix:/var/lib/clamav/clamav-milter-socket

Далее откройте файл /etc/postfix/master.cf найдите строчку:

smtp      inet  n       -       n       -       -       smtpd

и добавьте к ней вот эту строку

-o content_filter=spamassassin:dummy

А в самый конец этого же файла добавьте:

spamassassin unix -     n       n       -       -       pipe  user=salearn argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Обучение SpamAssassin:

$ useradd salearn
$ su saleran
$ cd ; vim .fetchmailrc

Добавьте туда строчки:

set syslog
set postmaster "notes"
set nobouncemail
set no spambounce
set properties ""
poll 192.168.0.1 with proto POP3 auth password and options no dns
       user 'spam@ВАШ САЙТ.com.ua' there with password 'spam' options keep no rewrite
       mda '/usr/bin/sa-learn --spam'

poll 192.168.0.1 with proto POP3 auth password and options no dns
       user 'nospam@ВАШ САЙТ.com.ua' there with password 'nospam' options keep no rewrite
       mda '/usr/bin/sa-learn --ham'

Теперь создайте задачу в крон:

$ crontab -e
0,30 * * * * /usr/bin/fetchmail
$ mkdir /var/log/mailgraph
$ mkdir  /var/lib/mailgraph