Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  FreeBSD Mail Howto
  exim & dovecot
  exim & courier-imap
  squirrelmail
  exim + saslauthd + courier-imap
  postfix -> exim
  sendmail -> exim
  imapsync
  Postfix + LDAP
  maildrop & postfix
  DSPAM
  Exim + LDAP
  ISPmanager
  Backup MX
  exim + exchange
  exim + dovecot + win2003 AD
  RoundCube
  qmail-ldap + AD
  spamooborona
  exim&dovecot + fetchmail + SSL
  Postfix + DBMail
  Mailgraph
  smfsav
  Exim+PgSQL
  Postfix + Dovecot + Clamav + SpamAssasin + LDAP vs MYSQL
  Simplemail Admin
  MTA qmail full install
  OpenLDAP адресная книга
  POSTFIX Статистики
  Backup MX (exim)
  Exim + dovecot + PgSQL + web
  Exim+dovecot2+dspam
  Возможности Dovecot 2
  Dovecot2 configfiles RUS
  Почтовый сервер по шагам ч.1
  Почтовый сервер по шагам ч.2
  Почтовый сервер по шагам ч.3
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> почтовые системы —> sendmail -> exim

Миграция с sendmail на exim + saslauthd

Автор: lissyara.


    Очередная статья по просьбам трудящихся :) Хотя, если быть совcем честным - я не очень понимаю чё тут расписывать - конфиг почти один-в-один со стандартным. И переход с sendmail на exim трудностей вызывать не должен. Общие рекомендации - сделать бэкап юзерской почты, находящейся в /var/mail/.
   В данном случае, рассматривается вариант миграции с использованием системных пользователей, как оно обычно и бывает. Ибо если вы докатились до sendmail и LDAP, например, то он вам явно вштырил, и необходимости в миграции у вас нет. Для авторизации отправителей будем использовать saslauthd.
   Итак, добавляем такие строки в файл /etc/make.conf:
# директория с портами
PORTSDIR?=      /usr/ports
# EXIM
.if ${.CURDIR} == ${PORTSDIR}/mail/exim
# MySQL затем, если будуте окончательно уходить от системных пользователей,
# чтобы не пересобирать exim ещё раз.
WITH_MYSQL=             yes
LOG_FILE_PATH?=         syslog
WITH_CONTENT_SCAN=      yes
WITH_DEFAULT_CHARSET?=  koi8-r
WITHOUT_IPV6=           yes
WITH_BDB_VER?=          4
WITH_SASLAUTHD=         yes
.endif

После чего обновляем порты, и устанавливаем exim:
/usr/home/lissyara/>cd /usr/ports/mail/exim
/usr/ports/mail/exim/>make && make install && make clean

Следом, ставим ClamAV, если он у вас не стоит:
/usr/ports/mail/exim/>cd ../../security/clamav
/usr/ports/security/clamav/>make && make install && make clean

Вылазиет синенькое окошко, где ничё не надо выбирать. После установки, топаем править файл /etc/mail/mailer.conf до такого состояния:
sendmail        /usr/local/sbin/exim
send-mail       /usr/local/sbin/exim
mailq           /usr/local/sbin/exim -bp
newaliases      /usr/local/sbin/exim -bi
hoststat        /usr/local/sbin/exim
purgestat       /usr/local/sbin/exim

После чего рихтуем конфиг exim:
#!/bin/sh
# моя конфига экзма. Будь проклят тот день,
# когда мне пришла в голову мысль подписать
# русские поясния ко всем пунктам! :) Хоть и
# делал я это в первую очередь для себя -
# чтоб лучше понять его, но работа эта оказалась
# слишком масштабная и неблагодарная...


# Имя хоста. Используется в EHLO.
# Фигурирует в других пунктах, если они не заданы -
# типа qualify_domain и прочих..
# Если тут ничё не установлено (строка закомметрована)
# то используется то, что вернёт функция uname()
primary_hostname = mx.lissyara.su

# Делаем список локальных доменов. Далее этот
# список будет фигурировать в виде +local_domains
# Mожно их просто перечислить через двоеточие. Есть интересная
# возможность, можно указать юзер@[хост] - lissyara@[222.222.4.5]
domainlist local_domains = @

# делаем список доменов с которых разрешены релеи.
# Далее этот список будет в виде +relay_to_domains
# Можно использовать символы подстановки, типа:
# .... = *.my.domen.su : !spam.my.domen.su : first.su
# тогда пропускается всё, что похоже на *.my.domen.su, но
# от spam.my.domen.su релеится почта не будет.
domainlist relay_to_domains =

# Составляем список хостов с которых разрешён неавторизованый
# релей. Обычно в нём находятся локальные сети, и локалхост...
# ЛокалХост в двух видах был внесён сознательно - пару раз
# сталкивался с кривым файлом /etc/hosts - результатом было
# непонимание `localhost` но пониманием 127.0.0.1/8
hostlist   relay_from_hosts = localhost:127.0.0.0/8:192.168.0.0/16

# Вводим названия acl`ов для проверки почты. (В общем-то, это
# необязательно, если вы делаете открытый релей, или хотите
# принимать вообще всю почту с любого хоста для любых
# получателей... Тока потом не жалуйтесь что у Вас спам
# и провайдер выкатывает немеряный счёт :))
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

# Прикручиваем антивирус - при условии, что exim собран
# с его поддержкой. В качестве антивиря юзаем ClamAV,
# ибо - ПО должно быть свободным! :)
# Итак, указываем местоположение сокета clamd.
av_scanner = clamd:/var/run/clamav/clamd

# Адрес куда слать на проверку спама (SpamAssasin), но я
# это не юзаю. Не так много у меня спама...
# spamd_address = 127.0.0.1 783

# Имя домена добавляемое для локальных отправителей (реальных
# юзеров системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. Если пункт незадан, то используется
# имя хоста из `primary_hostname`. Логичней было бы написать здесь
# lissyara.su, но мне удобней иначе:
qualify_domain = mx.lissyara.su

# Имя хоста для ситуации, обратной предыдущей, - это имя домена
# добавляемое к почте для системных юзеров, ну и вообще для почты
# пришедшей на адрес типа `root`, `lissyara`, & etc... Если этот
# пункт незадан то используется значение полученное из
# предыдущего пункта - `qualify_domain`
qualify_recipient = mx.lissyara.su

# А это как раз кусок вышеописанного анахронизма - про почту в
# виде user@[222.222.222.222] - принимать её или нет. По дефолту
# (когда строка закомментирована) значение - false. Если захотите
# поставить true то надо будет добавить в список доменов
# комбинацию @[] - она означает `все локальные адреса`
allow_domain_literals = false

# Пользователь от которого работает exim
exim_user = mailnull

# группа в кторой работает exim
exim_group = mail

# запрещаем работу доставки под юзером root - в целях безопасности
never_users = root

# Проверяем соответствие прямой и обратной зон для всех хостов.
# Тока зачем это нужно - даже и незнаю... Спам на этом не режется...
# Зато возможны проблемы - если сервер зоны скажет `сервер файлед`
# то почту от этого хоста Вы не получите :)
#host_lookup = *

# Тоже анахронизм (на самом деле, не такой уж анахронизм, но все давно
# забили на ident и закрыли файрволлом tcp:113...) Это проверка - Ваш
# хост спрашивает у удалённого, с которого было подключение, а кто
# собстно ко мне подключился на такой-то порт? Если на удалённом хосте
# работает identd - он может ответить (а может и не ответить - как
# настроить), скажет UID пользователя от которого установлено
# соединение, тип ОС, и имя пользователя. Теперь, понимаете, почему
# у всех оно зарублено и файрволлами позакрыто? :) Это же палево :)
# Тока на мой взгляд, если на сервере всё настроено правильно -
# то вовсе это и не страшно.
# Короче - если хостс поставить * то будет проверять все. Таймаут -
# если поставить 0 то не будет ждать ответа ни от кого. По
# вышеописанным причинам - отключаем
#rfc1413_hosts = *
rfc1413_query_timeout = 0s

# По дефолту, экзим отфутболивает все `неквалифицированные` адреса,
# состоящие тока из локальной части. Для того чтобы разрешить такие письма
# определённых хостов используются эти директивы:
# для `неквалифицированных` отправителей
sender_unqualified_hosts = +relay_from_hosts
# для `неквалифицированных` получателей
recipient_unqualified_hosts = +relay_from_hosts

# Интересный пункт, тока я не вполне понимаю его логику.
# Позволяет выполнять что-то типа - пришло сообщение на
# локальный ящик user%test.su@lissyara.su и
# переправляет его на user@test.su. Делается это для
# перечисленного списка доменов (* - все):
# percent_hack_domains = *

# Если сообщение было недоставлено, то генерится соощение
# об ошибке. Если сообщение об ошибке не удалось доставить
# то оно замораживается на указанный в этом пункте срок,
# после чего снова попытка доставить его. При очередной
# неудаче - сообщение удаляется.
ignore_bounce_errors_after = 45m

# Замороженные сообщения, находящиеся в очереди, дольше
# указанного времени удаляются и генерится сообщение
# об ошибке (при условии, что это не было недоставленное
# сообщение об ошибке :))
timeout_frozen_after = 15d

# собсно на этом штатный конфиг кончился, но
# меня-то это не устраивает... Поэтому пошли пункты,
# почёрпнутые из других источников.

# список адресов, через запятую, на которые засылаются
# сообщения о замороженных сообщениях (о замороженых
# уведомлениях о заморозке, сообщения не генерятся. - я
# надеюсь эта строка понятна :))
#freeze_tell = admin@lissyara.su

# Список хостов, почта от которых принимается, несмотря
# на ошибки в HELO/EHLO (тут указана моя подсеть)
helo_accept_junk_hosts = 192.168.0.0/16

# Через какое время повторять попытку доставки
# замороженного сообщения
auto_thaw = 1h

# Приветствие сервера
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"

# Максимальное число одновременных подключений по
# SMTP. Рассчитывать надо исходя из нагрузки на сервер
smtp_accept_max = 50

# максимальное число сообщений принимаемое за одно соединение
# от удалённого сервера (или пользователя). C числом 25
# я имел проблемы тока один раз - когда у меня три дня лежал
# инет и после его подъёма попёрли мессаги. Но у меня не так
# много почты - всего 30 пользователей.
smtp_accept_max_per_connection = 25

# чё-то про логи и борьбу с флудом - я так понимаю -
# максимальное число сообщений записываемых в логи
smtp_connect_backlog = 30

# максимальное число коннектов с одного хоста
smtp_accept_max_per_host = 20

# Ход ладьёй - для увеличения производительности,
# директория `spool` внутри, разбивается на
# директории - это ускоряет обработку
split_spool_directory = true

# Если у сообщения много адресатов на удалённых хостах,
# то запускатеся до указанного числа максимально число
# параллельных процессов доставки
remote_max_parallel = 15

# при генерации сообщения об ошибке прикладывать
# не всё сообщение, а кусок (от начала) указанного
# размера (иногда полезно и целиком - в таком случае
# просто закомментируйте эту строку)
return_size_limit = 70k

# размер сообщения. У меня стоит относительно большой
# размер (`относительно` - потому, что на большинстве
# хостов оно ограничено 2-5-10мб, либо стоит анлим.)
message_size_limit = 64M

# разрешаем неположенные символы в HELO (столкнулся
# с этим случайно - имя фирмы состояло из двух слов
# и какой-то раздолбай домен обозвал my_firme_name
# прям с подчёркиваниями... Виндовые клиенты при
# соединении радостно рапортовали о себе
# `vasya.my_firme_name` ну а экзим их футболил :))
helo_allow_chars = _

# Принудительная синхронизация. Если отправитель
# торопится подавать команды, не дождавшись ответа,
# то он посылается далеко и надолго :) Немного,
# спам режется.
smtp_enforce_sync = true

# Выбираем, что мы будем логировать
# + - писать в логи,
# - - Не писать в логи.
# +all_parents - все входящие?
# +connection_reject - разорваные соединения
# +incoming_interface - интерфейс (реально - IP)
# +lost_incoming_connections - потеряные входящие
# соединения
# +received_sender - отправитель
# +received_recipients - получатель
# +smtp_confirmation - подтверждения SMTP?
# +smtp_syntax_error - ошибки синтаксиса SMTP
# +smtp_protocol_error - ошибки протокола SMTP
# -queue_run - работа очереди (замороженные мессаги)
log_selector = \
    +all_parents \
    +connection_reject \
    +incoming_interface \
    +lost_incoming_connection \
    +received_sender \
    +received_recipients \
    +smtp_confirmation \
    +smtp_syntax_error \
    +smtp_protocol_error \
    -queue_run

# Убираем собственную временную метку exim`a из логов, её ставит
# сам syslogd - нефига дублировать
syslog_timestamp = no



### конфигурация ACL для входящей почты
begin acl

# Эти правила срабатывают для каждого получателя
acl_check_rcpt:


  # принимать сообщения которые пришли с локалхоста,
  # не по TCP/IP
  accept  hosts = :

  # Запрещаем письма содержащие в локальной части
  # символы @; %; !; /; |. Учтите, если у вас было
  # `percent_hack_domains` то % надо убрать.
  # Проверяются локальные домены
  deny    message       = "incorrect symbol in address"
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

  # Проверяем недопустимые символы для
  # нелокальных получателей:
  deny    message       = "incorrect symbol in address"
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

  # Принимаем почту для постмастеров локальных доменов без
  # проверки отправителя (я закомментировал, т.к. это -
  # основной источник спама с мой ящик).

  accept  local_parts   = postmaster
          domains       = +local_domains

  # Запрещщаем, если невозможно проверить отправителя
  # (отсутствует в списке локальных пользователей)
  # У себя я это закоментил, по причине, что некоторые
  # железяки (принтеры, & etc) и программы (Касперский, DrWEB)
  # умеют слать почту, в случае проблем но не умеют ставить
  # нужного отправителя. Такие письма эта проверка не пускает.
#  require verify        = sender

  # Запрещщаем тех, кто не обменивается приветственными
  # сообщениями (HELO/EHLO)
  deny    message       = "HELO/EHLO require by SMTP RFC"
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

  # Принимаем сообщения от тех, кто аутентифицировался:
  # Вообще, большинство конфигов в рунете - это один и тот же
  # конфиг написанный Ginger, в котором этот пункт расположен
  # внизу. Но при таком расположении рубятся клиенты с adsl,
  # ppp, и прочие зарезанные на последующих проверках. Но это
  # жа неправильно! Этом мои пользователи из дома! Потому
  # я это правило расположил до проверок.
  accept  authenticated = *

# Рубаем нах, тех, кто подставляет свой IP в HELO
  deny    message       = "Your IP in HELO - access denied!"
          hosts         =  * : !+relay_from_hosts : !81-196.lissyara.su
          condition     = ${if eq{$sender_helo_name}\
    {$sender_host_address}{true}{false}}


# Рубаем тех, кто в HELO пихает мой IP (2500 мудаков за месяц!)
  deny    condition     = ${if eq{$sender_helo_name}\
    {$interface_address}{yes}{no}}
          hosts         = !127.0.0.1 : !localhost : *
          message       = "main IP in your HELO! Access denied!"

# Рубаем тех, кто в HELO пихает только цифры
# (не бывает хостов ТОЛЬКО из цифр)
  deny    condition     = ${if match{$sender_helo_name}\
    {\N^\d+$\N}{yes}{no}}
          hosts         = !127.0.0.1 : !localhost : *
          message       = "can not be only number in HELO!"


  # Рубаем хосты типа *adsl*; *dialup*; *pool*;....
  # Нормальные люди с таких не пишут. Если будут
  # проблемы - уберёте проблемный пункт (у меня клиенты
  # имеют запись типа asdl-1233.zone.su - я ADSL убрал...)
  deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
          condition     = ${if match{$sender_host_name} \
                               {adsl|dialup|pool|peer|dhcp} \
                               {yes}{no}}

  # Задержка. (это такой метод борьбы со спамом,
  # основанный на принципе его рассылки) На этом рубается
  # почти весь спам. Единственно - метод неприменим на
  # реально загруженных MTA - т.к. в результате ему
  # приходится держать много открытых соединений.
  # но на офисе в сотню-две человек - шикарный метод.
  #
  # более сложный вариант, смотрите в статье по exim и
  # курьер имап. Т.к. там метод боле умный (просто правил
  # больше :), то можно и на более загруженные сервера ставить)
  warn
        # ставим дефолтовую задержку в 20 секунд
        set acl_m0 = 30s
  warn
        # ставим задержку в 0 секунд своим хостам и
        # дружественным сетям (соседняя контора :))
        hosts = +relay_from_hosts:213.234.195.224/28:80.253.9.18/32
        set acl_m0 = 0s
  warn
        # пишем в логи задержку (если оно вам надо)
        logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
        delay = $acl_m0


  # Проверка получателя в локальных доменах.
  # Если не проходит, то проверяется следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +local_domains
          endpass
          message       = "In my mailserver not stored this user"
          verify        = recipient

  # Проверяем получателя в релейных доменах
  # Опять-таки если не проходит -> следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +relay_to_domains
          endpass
          message       = "main server not know how relay to this address"
          verify        = recipient

  # Рубаем тех, кто в блэк-листах. Серваки перебираются
  # сверху вниз, если не хост не найден на первом, то
  # запрашивается второй, и т.д. Если не найден ни в одном
  # из списка - то почта пропускается.
  deny    message       = you in blacklist: $dnslist_domain --> $dnslist_text
          dnslists      = opm.blitzed.org : \
                          cbl.abuseat.org : \
                          bl.csma.biz

  # Разрешаем почту от доменов в списке relay_from_hosts
  accept  hosts         = +relay_from_hosts

  # Если неподошло ни одно правило - чувак явно ищет
  # открытый релей. Пшёл прочь. :)
  deny    message       = "relay not permitted"




# Тут идут ACL проверяющие содержимое (тело) письма.
# Без них будут пропускаться все сообщения.

acl_check_data:

  # Проверяем письмо на вирусы
  deny malware = *
  message = "In e-mail found VIRUS - $malware_name"

  # Если есть необходимость - тут проверки на спам

  # Пропускаем остальное
  accept


# чё делаем с почтой
begin routers

# Поиск маршрута к хосту в DNS. Если маршрут не найден в DNS -
# то это `унроутабле аддресс`. Не проверяются локальные
# домены, 0.0.0.0 и 127.0.0.0/8
dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

# В качестве файла альясов используется стандартный файл альясов.
# Ребилдить БД командой newaliases не надо - т.к. в данном случае
# используется не БД а именно текстовый файл.
system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  user = mailnull
  group = mail
  file_transport = address_file
  pipe_transport = address_pipe

# Это специфический транспорт для адресов сгенерённых форвардингом для
# доставки в файл, pipe или для авто-ответов... Используется файло в
# хомяке, для перенаправления почты... Надо сразу заметить, что если
# системные юзеры используются без хомяков (указана несуществующая
# директория), то придётся её создать, пустую, т.к. экзим начинает
# искать файл в директории которой нет, и в итоге - ругань в логах
# и недоставленные письма.
userforward:
  driver = redirect
  check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
  file = $home/.forward
# allow_filter
  no_verify
  no_expn
  check_ancestor
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply
  condition = ${if exists{$home/.forward} {yes} {no} }


# Этот роутер проверяет локальный юзер или нет. Если в нём будет
# ошибка (юзер не найден) то он выдаст мессагу "Unknown user".
localuser:
  driver = accept
  check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery
  cannot_route_message = Unknown user

# начинаются транспорты - как доставляем почту
begin transports

# Доставка на удалённые хосты - по SMTP
remote_smtp:
  driver = smtp

# Транспорт для доставки почты локальным адресатам.
# Доставляем туда же, куда и sendmail - в файл, в диреткории /var/mail/
local_delivery:
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  user = $local_part
  mode = 0660
  no_mode_fail_narrower


# Это транспорт для доставки через трубу по адресам сгенерённым
# форвардингом или альясингом. Если эта pipe генерит стандартный вывод,
# возвращается отправителью с руганью в виде этого вывода. Установив
# return_fail_output вместо return_output можно добиться чтобы отлупы
# шли тока в случае ошибок, а не просто ругани.
address_pipe:
  driver = pipe
  return_output

# Транспорт для доставки сгенерённой альясингом или форвардингом.
address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

# Транспорт для автоответов
address_reply:
  driver = autoreply


# Начинаются повторы недоставленных писем.
begin retry

# Этот кусок я не трогал. Думаю разработчики лучше знают,
# какие тут должны быть цифирьки. Если же вы это знаете
# лучше их - меняйте. Хотя... А какого, если Вы такой
# умный, читаете этот мануал? Может ну, их, цифирьки, а? :)
# Address or Domain  Error   Retries
# -----------------  -----   -------
*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h


# преобразование адресов. У меня такого нету.
begin rewrite


# Секция авторизации при отправке писем. Ввиду того,
# что почтовых клиентов много, и все всё делают
# по-своему, то и механизмов авторизации три...
begin authenticators

# следующие два пункта написаны мною, и ручаться могу тока за один - который
# оутлук авторизует. 
plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${if saslauthd{{$1}{$2}}{1}{0}}
  server_set_id = $2

login:
  driver = plaintext
  public_name = LOGIN
  server_prompts = "Username:: : Password::"
  server_condition = ${if saslauthd{{$1}{$2}}{1}{0}}
  server_set_id = $1

# есть ещё така хрень - но она тока для нешифрованных паролей.
# А системные - зашифрованы. Летучая мышь - пролетает...
#cram_md5:
#  driver = cram_md5
#  public_name = CRAM-MD5
#  server_secret = "тут кондишен :)"
#  server_set_id = $1

Ну а затем запускаем exim, и убиваем sendmail:
/usr/home/lissyara/>echo 'exim_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>killall -9 sendmail
/usr/home/lissyara/>killall -9 sendmail
No matching processes were found
/usr/home/lissyara/>echo 'saslauthd_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/saslauthd.sh start
Starting saslauthd.
/usr/home/lissyara/>/usr/local/etc/rc.d/exim.sh start
exim.sh: WARNING: sendmail_submit_enable should be set to NO
Starting exim.
/usr/home/lissyara/>echo 'sendmail_enable="NONE"' >>  /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/exim.sh restart
Stopping exim.
Starting exim.
/usr/home/lissyara/>ps -axj | grep exim
root     65416     1 65416 65416    0 Ss    ??    0:00,03 /usr/local/sbin/exim
root     65419   573 65418   569    2 R+    p0    0:00,02 grep exim
/usr/home/lissyara/>
/usr/home/lissyara/>sockstat | grep sasl
root     saslauthd  62189 3  dgram  -> /var/run/logpriv
root     saslauthd  62189 5  stream /var/run/saslauthd/mux
root     saslauthd  62188 3  dgram  -> /var/run/logpriv
root     saslauthd  62188 5  stream /var/run/saslauthd/mux
root     saslauthd  62187 3  dgram  -> /var/run/logpriv
root     saslauthd  62187 5  stream /var/run/saslauthd/mux
root     saslauthd  62186 3  dgram  -> /var/run/logpriv
root     saslauthd  62186 5  stream /var/run/saslauthd/mux
root     saslauthd  62185 3  dgram  -> /var/run/logpriv
root     saslauthd  62185 5  stream /var/run/saslauthd/mux
root     saslauthd  20758 3  dgram  -> /var/run/logpriv
root     saslauthd  20758 5  stream /var/run/saslauthd/mux
root     saslauthd  20757 3  dgram  -> /var/run/logpriv
root     saslauthd  20757 5  stream /var/run/saslauthd/mux
root     saslauthd  20756 3  dgram  -> /var/run/logpriv
root     saslauthd  20756 5  stream /var/run/saslauthd/mux
root     saslauthd  20755 3  dgram  -> /var/run/logpriv
root     saslauthd  20755 5  stream /var/run/saslauthd/mux
root     saslauthd  20754 3  dgram  -> /var/run/logpriv
root     saslauthd  20754 5  stream /var/run/saslauthd/mux
/usr/home/lissyara/>

Затем запускаем ClamAV и его обновлялку:
/usr/home/lissyara/>echo 'clamav_clamd_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>echo 'clamav_freshclam_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/clamav-clamd.sh start
Starting clamav_clamd.
LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days.  ***
LibClamAV Warning: ***        Please update it IMMEDIATELY!       ***
LibClamAV Warning: **************************************************
/usr/home/lissyara/>/usr/local/etc/rc.d/clamav-freshclam.sh  start
Starting clamav_freshclam.
/usr/home/lissyara/>

   Собственно вот и всё. Конфиг самого экзима практически аналогичен тому, что используется в статье про exim и системных пользователей. При желании, в дальнейшем, можно извернуться и использовать и системных и виртуальных пользователей - не так сильно всё усложниться.



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=9591.

размещено: 2006-07-30,
последнее обновление: 2010-11-24,
автор: lissyara

оценить статью:

Morra, 2006-07-30 в 22:25:01

Спасибо за грандиозный труд!  Я имею ввиду не только эту статью, а весь сайт вцелом. РЕСПЕКТ!

Alexsandr, 2006-08-01 в 20:27:48

Статья, гут, афтару-пачет и уважуха!
но,очень интересно как бы автор статьи поступил в таком конфиге с whitelist-ом, мне кажется это очень актуальный пункт в конфиге, так возникают адреса или домены, которые не надо проверять на спам.

Свой вариант не вылаживаю, так как он не коректно работает, хотя...
deny  message = SPAM! Must die! (score $acl_m2)
       # 60 это уровень спама. если меньше 61 - проходит, больше 60 - режется
       !condition = $header_X-Whitelisted-sender:
       condition = ${if >{$acl_m0}{60}{1}{0}}
       condition = ${if !eq{$sender_address}{name@domen.net}{0}{1}}

при таком раскладе письма с адреса name@domen.net не проверяются, но как то глючно начинает рубать spamd (иногда пропуская письма со Score=15, 20,...) 2-я трабла в том, что перестают писатся сообщения
2006-08-01 11:01:57 1G7pCP-000AOj-1a H=(web01.mi6.kiev.ua) [193.84.19.3] F=<maestrovip@i.ua> rejected after DATA: SPAM! Must die! (score 15.1)
в mainlog
Мне кажется это из-за 2х condition-нов, их как то надо совместить, но я не нашол как.
Но как временный вариант сойдет.

wolfenstain, 2007-06-26 в 17:35:46

Статья отличная! Как здорово что я ее нашел.

Hikari, 2009-02-28 в 5:30:30

Серьезный недостаток статьи в том, что не указано, что sasl нужно ставить отдельно. Я, к примеру, не знал и сутки потерял. К тому же ставится с глюком
FreeBSD 7.1-RELEASE-p3  ГЛЮК
Установка saslauthd.

cd /usr/ports/security/cyrus-sasl2-saslauthd
./make config
Выбираем, что поставить
./make
./make install

ERROR - пытется отдать директорию пользователю cyrus, которого еще нет в системе

Не беда - в другую консоль - adduser
Name: cyrus
Group: cyrus
в другие группы - mail
хомяк - /var/spool/cyrus

о паролях не пишу :-)

Назад в предыдущую консоль
./make install
Ok!
./make clean

lissyara, 2009-02-28 в 11:41:16

При указанном в статье make.conf - exim сам его притащщит.
Да и отдельно он у меня нормально поставился...
Что я делаю не так?


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)

Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4

Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3

Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2

Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1

Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat

Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat

Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills

Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS

Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs

Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD

Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC

Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat

Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot

Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless

Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение

Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга

Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff

Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа

Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL

Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)

Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP

Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools

Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
2009-04-29, m0ps
IPSEC over GRE with RIP

Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
2009-04-24, WhiteBear777
qemu network

Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
2009-04-22, vp
freebsd + huawei 162 gsm modem

В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
2009-04-12, mvalery
Мониторинг RAID

Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
2009-04-09, texnotronic
RAID1 via LAN

Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
2009-04-03, Raven2000
Оптимизация хоста для CMS

В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
2009-04-01, atrium
VSFTPD + AD && MySQL

Настройка самого безопасного сервера FTP - vsftpd.
2009-03-31, Dron
Peoplenet + C-motech (3G)

Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
2009-03-25, lissyara
mod_auth_external

mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
2009-03-24, gx_ua
Lightsquid

Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
2009-03-18, LHC
Установка Zabbix-1.6

Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 8 чел.
За последние 30 мин было: 37 человек
За сегодня было
7296 показов,
829 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0722 секунд
Из них PHP: 55%; SQL: 45%; Число SQL-запросов: 77 шт.
Исходный размер: 185164; Сжатая: 37343