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

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 —> почтовые системы —> Exim + LDAP

Настройка Exim с хранением информации в LDAP

Автор: fr33man.


Первая почтовая система, которую я настроил, работала на базе postfix'а. Но мне не хватало функцональности, да и кое-что мне не особо нравилось, например clamav и spamassassin должны работать через amavisd-new. Но недавно, я наткнулся на документацию по exim, на сайта lissyara.su, где увидил море опций для настройки exim. Переход с postfix'а на exim оказался немного трудноват. Но когда я разобрался, как пишутся запросы и как раскрываются строки, exim заработал на ура. Exim мне очень понравился, поэтому я решил написать небольшую статейку по настройке exim + LDAP. Итак, приступим.
Хранить данные о пользователях мы будем в LDAP. В качестве imap сервера будет работать courier-imap. Спам будем резать стандартными средствами exim.

0. Обозначения.

Сейчас я опишу сеть, для которой мы будем настраивать exim:
LDAP сервер - spider.teachers(или просто spider)
Exim сервер - exim.teachers(или просто exim)

1. Настройка LDAP.

Первое что нам нужно сделать - это подключить схему mail.schema. Эту схему составил я, потому что не нащел в интернете ничего похожего. Итак, схемку берем здесь. Помещаем ее в /usr/local/etc/openldap/schema/mail.schema, на LDAP сервере. После этого редактируем slapd.conf, добавляя единственную строку:

include         /usr/local/etc/openldap/schema/mail.schema

После этого перезапускаем LDAP:

spider@/root/> /usr/local/etc/rc.d/slapd.sh restart
Stopping slapd.
Starting slapd.
spider@/root/>

Теперь нужно добавить пользователя exim, из-под которого это все будет работать. Вот ldif, файл, который необходимо добавить:

system.ldif:

dn: ou=system,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: system
description: system users

dn: cn=exim,ou=system,dc=l1523,dc=ru
objectClass: top
objectClass: person
cn: exim
sn: Exim User
userPassword: {SSHA}qV+act/h7/W8U0twMW+lKtOm3ECIXuRJ

В userPassword хранится зашифрованный пароль(123456) пользователя cn=exim,ou=system,dc=l1523,dc=ru. Получить его можно командой slappasswd:

spider@/root/> slappasswd
New password:
Re-enter new password:
{SSHA}qV+act/h7/W8U0twMW+lKtOm3ECIXuRJ
spider@/root/>

Теперь нужно добавить этот ldif. Делается это командой ldapadd, например так:

spider@/root/> ldapadd -x -D "cn=root,dc=l1523,dc=ru" -w password -f system.ldif

Теперь можно создавать контейнеры для доменов и пользователей. Добавим два домена exim.teachers и fr33man.ru и два пользователя: test@exim.teachers и test@fr33man.ru, вот такой ldif файл получился:

exim.ldif:

dn: ou=exim,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: exim

dn: ou=exim.teachers,ou=exim,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: exim.teachers

dn: mail=test@exim.teachers,ou=exim.teachers,ou=exim,dc=l1523,dc=ru
objectClass: top
objectClass: MailAccount
mail: test@exim.teachers
accountStatus: active
mailMessageStore: Maildir/
clearPassword: 123456
gecos: test user
description: tested user
homeDirectory: exim.teachers/test
mailQuotaSize: 1024

dn: ou=fr33man.ru,ou=exim,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: fr33man.ru

dn: mail=test@fr33man.ru,ou=fr33man.ru,ou=exim,dc=l1523,dc=ru
objectClass: top
objectClass: MailAccount
mail: test@fr33man.ru
homeDirectory: fr33man.ru/test
accountStatus: active
mailMessageStore: Maildir/
clearPassword: 654321
mailQuotaSize: 2500

Добавляем такой командой:

spider@/root/> ldapadd -x -D "cn=root,dc=l1523,dc=ru" -w password -f exim.ldif

Все, с настройкой ldap сервера мы закончили, переходим к настройке антивируса.

2. Clamav

Сканировать почту на вирусы мы будем с помощью open-source решения - clamav.
Устанавливаем:

exim# cd /usr/ports/security/clamav
exim# make install clean

... skipped ...

exim#

Все, установилось. Теперь переходим к настройке, точнее не к настройке(там по умолчанию нормальные параметры указаны), а к запуску:

exim# mv /usr/local/etc/rc.d/clamav-clamd \
? /usr/local/etc/rc.d/clamav-clamd.sh
exim# mv /usr/local/etc/rc.d/clamav-freshclam \
? /usr/local/etc/rc.d/clamav-freshclam.sh
exim# /usr/local/etc/rc.d/clamav-clamd.sh
exim# echo clamav_clamd_enable=\"YES\" >> /etc/rc.conf
exim# echo clamav_freshclam_enable=\"YES\" >> /etc/rc.conf
exim# /usr/local/etc/rc.d/clamav-clamd.sh start
Starting clamav_clamd.
Running as user clamav (UID 106, GID 106)
exim#

Теперь обновляем базы и запускаем демон обновлениц, чтобы базы обновлялись каждые два часа(указывается в freshclam.conf):

exim# freshclam
ClamAV update process started at Tue Feb 20 17:11:19 2007
main.inc is up to date (version: 42, sigs: 83951, f-level: 10, builder: tkojm)
Downloading daily-2610.cdiff [100]]
Downloading daily-2611.cdiff [100]]
Downloading daily-2612.cdiff [100]]
daily.cvd updated (version: 2612, sigs: 9324, f-level: 13, builder: sven)
Database updated (93275 signatures) from database.clamav.net (IP: 62.181.41.8)
Clamd successfully notified about the update.
exim# /usr/local/etc/rc.d/clamav-freshclam.sh start
Starting clamav_freshclam.
exim#

Все, антивирус настроен и работает, переходим к настройке exim'а.

3. Exim

Ставить будем из портов, но сначала добавим такие строки в /etc/make.conf:

# Ports dir
PORTSDIR?=      /usr/ports

.if ${.CURDIR} == ${PORTSDIR}/mail/exim
WITH_OPENLDAP=          yes
LOG_FILE_PATH?=         syslog
WITH_CONTENT_SCAN=      yes
WITH_DEFAULT_CHARSET?=  koi8-r
WITHOUT_IPV6=           yes
WITH_BDB_VER?=          4
.endif

Теперь можно собирать:

exim# cd /usr/ports/mail/exim
exim# make install clean

... skipped ...

exim#

После установки вырубаем sendmail:

exim# /etc/rc.d/sendmail stop
Stopping sendmail_submit.
Stopping sendmail_clientmqueue.
exim#

И добавляем в /etc/rc.conf такие строки:

sendmail_enable="NO"
sendmail_submit_enable="NO"

/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'а. Для этого редактируем /usr/local/etc/exim/configure:

#!/bin/sh
# Файл конфигурации: /usr/local/etc/exim/configure

## От fr33man'а: Мои комменты будут начинатся с "##"
## конфиг переведен Лисом(www.lissyra.su).
## Тут не очень много моих опций, но они все
## касаются ldap'а или ssl.

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

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

## LDAP сервера
## указывается ip сервера и через два
## двоеточия - номер порта.
## Указать несколько серверов можно
## через одинарное двоеточие
ldap_default_servers = 192.168.1.250::389

## Я сделал свой макрос, в котором определил логин
## и пароль для подключения к LDAP серверу
LDAP_AUTH = user="cn=exim,ou=system,dc=l1523,dc=ru" pass="123456"

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

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

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

# Вводим названия 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

## Включаем SSL-соединение
## Всем показываем возможность использовать ssl
tls_advertise_hosts = *
## путь к сертейикату
tls_certificate = /usr/local/etc/ssl/mail.pem
tls_privatekey = /usr/local/etc/ssl/mail.pem

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

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

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

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

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

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

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

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

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

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

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

# Список хостов, почта от которых принимается, несмотря
# на ошибки в HELO/EHLO
helo_accept_junk_hosts = 192.168.1.0/24

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

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

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

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

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

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

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

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

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

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

# разрешаем неположенные символы в 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

# system filter
# А тут у начальства заскок - желание контролировать всё.
# Вот и пришлось сделать копию всей почты.
# Вот тока в IT отделе, как выяснилось, никто никому не пишет :)
#system_filter = /usr/local/etc/exim/copy_mail.conf


begin acl

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

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

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

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

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

#  accept  local_parts   = postmaster
#          domains       = +local_domains

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

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



# Рубаем нах, тех, кто подставляет свой IP в HELO
  deny    message       = "Не надо пихать свой IP в качестве HELO!"
          hosts         =  *:!+relay_from_hosts
          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       = "Это мой IP-адрес! Пшёл прочь!"

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

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

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


  # Рубаем тех, кто в блэк-листах. Серваки перебираются
  # сверху вниз, если не хост не найден на первом, то
  # запрашивается второй, и т.д. Если не найден ни в одном
  # из списка - то почта пропускается.
#  deny    message       = "host in blacklist - $dnslist_domain \n $dnslist_text"
#          dnslists      = opm.blitzed.org : \
#                          proxies.blackholes.easynet.nl : \
#                          cbl.abuseat.org : \
#                          bl.spamcop.net : \
#                          bl.csma.biz : \
#                          dynablock.njabl.org : \


  # Задержка. (это такой метод борьбы со спамом,
  # основанный на принципе его рассылки) На этом рубается
  # почти весь спам. Единственно - метод неприменим на
  # реально загруженных MTA - т.к. в результате ему
  # приходится держать много открытых соединений.
  # но на офисе в сотню-две человек - шикарный метод.
  #
  # более сложный вариант, смотрите в статье по exim и
  # курьер имап. Т.к. там метод боле умный (просто правил
  # больше :), то можно и на более загруженные сервера ставить)
  warn
        # ставим дефолтовую задержку в 20 секунд
        set acl_m0 = 25s
  warn
        # ставим задержку в 0 секунд своим хостам и
        # дружественным сетям (соседняя контора :))
        hosts = +relay_from_hosts
        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       = "В этом домене нет такого пользователя"
          verify        = recipient

  # Проверяем получателя в релейных доменах
  # Опять-таки если не проходит -> следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +relay_to_domains
          endpass
          message       = "Моя сервера не знать маршрут на этот хост..."
          verify        = recipient

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

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


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

acl_check_data:

# Рубаем письма с китайскими сиволами
  deny message = "this is spam - denied"
  condition = ${if match{$message_body} \
              {105[-_]*51[-_]*86|778[-_]*98[-_]*94} \
              {yes}{no}}

  # Проверяем письмо на вирусы
#  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

system_aliases:
    driver      = redirect
    allow_fail
    allow_defer
## ищем в ldap алиасы и выбираем поле mail.
    data = ${lookup ldapm{LDAP_AUTH \
	    ldap:///ou=exim,dc=l1523,dc=ru?mail?sub?(&(accountStatus=active) \
	    (mailAlternateAddress=${quote_ldap:$local_part}$ \
            {quote_ldap:@}${quote_ldap:$domain}))}}
ldapuser:
  driver = accept
## проверяем есть ли в локальных доменах данный пользователь
## если есть, то отсылаем письмо на транспорт ldap_delivery
  condition = ${if eq{}{${lookup ldapdn{LDAP_AUTH \
		ldap:///ou=exim,dc=l1523,dc=ru??sub?(&(accountStatus=active) \
		(mail=${quote_ldap:$local_part}${quote_ldap:@}$ \
                {quote_ldap:$domain}))}}}{no}{yes}}
  transport = ldap_delivery

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

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

ldap_delivery:
    driver = appendfile
    check_string = ""
    create_directory
    delivery_date_add
## ищем хомяк пользователя
    directory = ${lookup ldap{LDAP_AUTH \
		ldap:///ou=exim,dc=l1523,dc=ru?homeDirectory?sub? \
                (&(accountStatus=active) \
                mail=${quote_ldap:$local_part}${quote_ldap:@}$ \ 
                {quote_ldap:$domain}))}{/var/spool/mail/$value/Maildir/} }
    directory_mode = 770
    envelope_to_add
    maildir_use_size_file
    group = mail
    maildir_format
    maildir_tag = ,S=$message_size
    message_prefix = ""
    message_suffix = ""
    mode = 0600
## смотрим квоту пользователя
    quota = ${lookup ldap{LDAP_AUTH \
	    ldap:///ou=exim,dc=l1523,dc=ru?mailQuotaSize? \
            sub?(&(accountStatus=active) \
	    (mail=${quote_ldap:$local_part}$ \
            {quote_ldap:@}${quote_ldap:$domain}))}{$value}fail}
    quota_warn_message = "\
    To: $local_part@$domain\n\
    From: postmaster@$domain\n\
    Subject: Your maildir is going full\n\
    This message is automaticaly gnerated by your mail server.\n\
    This means, that your mailbox is 80% full. If you would \n\
    override this limit new mail would not be delivered to you!\n\n\
    Please, clean your mailbox."
    quota_warn_threshold = 80%
    return_path_add

address_file:
    driver = appendfile
    delivery_date_add
    envelope_to_add
    return_path_add

# Имя программы
address_pipe:
  driver = pipe
  return_output

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



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

# Этот кусок я не трогал. Думаю разработчики лучше знают,
# какие тут должны быть цифирьки. Если же вы это знаете
# лучше их - меняйте. Хотя... А какого, если Вы такой
# умный, читаете этот мануал? Может ну, их, цифирьки, а? :)
# Address or Domain  Error   Retries
# -----------------  -----   -------

## Все письма, которые не удалось доставить из-за квоты,
## больше не пытаться доставлять
*                    quota
*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h


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


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

# А вот по какому методу авторизуется оутглюк - я уже и
# не помню... Хотя в своё время долго ковырялся,
# пока настроил... Толь plain, толь login...
auth_plain:
  driver = plaintext
  public_name = PLAIN
## ищем dn пользователя с данным логином и паролем
## если нашли, то все ок, если не прошли, то
## шлем пользователя лесом
## Можно было использовать не поиск, а ldapauth,
## то есть если пользователь аутентифицируется в ldap,
## то все ок. Но мне это не подходит, т.к. 
## у меня несколько доменов и пользователи в них
## пересекаются.
  server_condition = ${lookup ldapdn{LDAP_AUTH \
			ldap:///ou=exim,dc=l1523,dc=ru??sub?(& \
                        (accountStatus=active)(mail=${quote_ldap:$2}) \ 
			(clearPassword=${quote_ldap:$3}))}{yes}{no}}
  server_prompts = :
  server_set_id = $2

# Вроде по этому оутглюк, а по предыдущему нетскейп.
auth_login:
  driver = plaintext
  public_name = LOGIN
## тоже самое, что и для PLAIN
  server_condition = ${lookup ldapdn{LDAP_AUTH \
			ldap:///ou=exim,dc=l1523,dc=ru??sub? \
                        (&(accountStatus=active)(mail=${quote_ldap:$1}) \ 
			(clearPassword=${quote_ldap:$2}))}{yes}{no}}
  server_prompts = Username:: : Password::
  server_set_id = $1

# А так авторизуется "Летучая Мышь" - TheBat!
auth_cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
## ищем clearPassword пользователя
  server_secret = ${lookup ldap{LDAP_AUTH \
		ldap:///ou=exim,dc=l1523,dc=ru?clearPassword?sub? \
                (&(accountStatus=active)(mail=${quote_ldap:$1}) \ 
		)}{$value}fail}
  server_set_id = $1

# Фсё. Конфиг кончился. Два дня убил.
# © lissyara       2006-02-25, 01:19

Вот такой конфиг получился. ) Теперь можно запускать exim:

exim# echo exim_enable=\"YES\" >> /etc/rc.conf
exim# /usr/local/etc/rc.d/exim.sh start
Starting exim.
exim#

Усе.. Можно проверять, но мы должны еще установить и настроить courier-imap, так что проверка откладывается. :)

4. Courier-authlib.

Courier-authlib потребуется для аутентификации пользователей.
Ставим:

exim# cd /usr/ports/security/courier-authlib
exim# make config

     ---------------------------------------------------------------------¬
     ¦                Options for courier-authlib 0.59.1                  ¦
     ¦ -----------------------------------------------------------------¬ ¦
     ¦ ¦        [ ] GDBM         Use gdbm instead of system bdb         ¦ ¦
     ¦ ¦        [X] AUTH_LDAP    LDAP support                           ¦ ¦
     ¦ ¦        [ ] AUTH_MYSQL   MySQL support                          ¦ ¦
     ¦ ¦        [ ] AUTH_PGSQL   PostgreSQL support                     ¦ ¦
     ¦ ¦        [ ] AUTH_USERDB  Userdb support                         ¦ ¦
     ¦ ¦        [ ] AUTH_VCHKPW  Vpopmail/vchkpw support                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     +-L------------------------------------------------------------------+
     ¦                       [  OK  ]       Cancel                        ¦
     L---------------------------------------------------------------------

exim# make install clean

... skipped ...

exim#

Переходим к настройке. Редактируем /usr/local/etc/authlib/authdaemonrc:

# Список аутентификационных модулей:
authmodulelist="authldap"
authmodulelistorig="authldap"

# Кол-во запускаемых демонов authdaemon
daemons=5

# Директория var для authdaemon
authdaemonvar=/var/run/authdaemond

# Для syslog
subsystem=mail

# Уровень отладки
DEBUG_LOGIN=2

DEFAULTOPTIONS="wbnodsn=1"

LOGGEROPTS=""

/usr/local/etc/authlib/authldaprc:

# URL LDAP сервера
LDAP_URI                ldaps://spider.teachers
# Версия протокола
LDAP_PROTOCOL_VERSION   3
# корень для поиска данных о пользователях
LDAP_BASEDN             ou=exim,dc=l1523,dc=ru
# под кем коннектится
LDAP_BINDDN             cn=exim,ou=system,dc=l1523,dc=ru
# пароль
LDAP_BINDPW             123456
# timeout
LDAP_TIMEOUT            5
# проверять пароль подключением к LDAP
# нам не подходит, так как у нас вирт. домены
LDAP_AUTHBIND           0
# аттрибут, где хранится название ящика
LDAP_MAIL               mail
# фильтр для поиска
LDAP_FILTER           (accountStatus=active)
# default domain. Если не указан домен, то
# значение указанное здесь добавится к 
# имени пользователя
LDAP_DOMAIN             exim.teachers
# UID, GID пользователя, от когорого работаем
LDAP_GLOB_UID           mailnull
LDAP_GLOB_GID           mailnull
# Аттрибут, где хранится путь к 
# хомяку пользователя
LDAP_HOMEDIR            homeDirectory
# Если путь к хомяку не абсолютный, то он
# будет отсчитываться от данной директории
LDAP_MAILROOT        /var/spool/mail
# аттрибут, где хранится размер квоты
LDAP_MAILDIRQUOTA       mailQuotaSize
# аттрибут, где хранится имя пользователя
LDAP_FULLNAME           gecos
# аттрибут, где хранится пароль пользователя
# в чистом виде
LDAP_CLEARPW            clearPassword
LDAP_DEREF              never
# Использовать TLS
LDAP_TLS                0
# корень для поиска данных о пользователях
LDAP_EMAILMAP_BASEDN    ou=exim,dc=l1523,dc=ru

Теперь запускаем:

exim# echo courier_authdaemond_enable=\"YES\" >> /etc/rc.conf
exim# /usr/local/etc/rc.d/courier-authdaemond.sh start
Starting courier_authdaemond.
exim#

5. Courier-imap.

Ставим:

exim# cd /usr/ports/mail/courier-imap/
exim# make config

     ---------------------------------------------------------------------¬
     ¦                 Options for courier-imap 4.1.2,1                   ¦
     ¦ -----------------------------------------------------------------¬ ¦
     ¦ ¦     [X] OPENSSL      Build with OpenSSL support                ¦ ¦
     ¦ ¦     [ ] FAM          Build in fam support for IDLE command     ¦ ¦
     ¦ ¦     [ ] DRAC         Build in DRAC support                     ¦ ¦
     ¦ ¦     [ ] TRASHQUOTA   Include deleted mails in the quota        ¦ ¦
     ¦ ¦     [ ] GDBM         Use gdbm db instead of system bdb         ¦ ¦
     ¦ ¦     [ ] IPV6         Build with IPv6 support                   ¦ ¦
     ¦ ¦     [X] AUTH_LDAP    LDAP support                              ¦ ¦
     ¦ ¦     [ ] AUTH_MYSQL   MySQL support                             ¦ ¦
     ¦ ¦     [ ] AUTH_PGSQL   PostgreSQL support                        ¦ ¦
     ¦ ¦     [ ] AUTH_USERDB  Userdb support                            ¦ ¦
     ¦ ¦     [ ] AUTH_VCHKPW  Vpopmail/vchkpw support                   ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     ¦ ¦                                                                ¦ ¦
     +-L------------------------------------------------------------------+
     ¦                       [  OK  ]       Cancel                        ¦
     L---------------------------------------------------------------------

exim# make install clean

... skipped ...

exim#

Создаем конфиг для скрипта, который создает сертефикаты:

exim# cd /usr/local/etc/courier-imap/
exim# cp imapd.cnf.dist imapd.cnf

И редактируем его до такого состояния:

RANDFILE = /dev/random

[ req ]
default_bits = 2048
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=RU
ST=Russia Federaton
L=Moscow
O=Exim Mail Server
OU=IT department
CN=exim.teachers
emailAddress=postmaster@l1523.ru


[ cert_type ]
nsCertType = server

Теперь создаем сертефикаты и перемещаем их в другую директорию:

exim# cd /usr/local/share/courier-imap/
exim# ./mkimapdcert
Generating a 2048 bit RSA private key
..............................................................
...............+++
..........+++
writing new private key to '/usr/local/share/courier-imap/imapd.pem'
-----
512 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
..+..........+.......+.............++*++*++*++*++*++*
subject= /C=RU/ST=Russia Federaton/L=Moscow/O=Exim Mail Server/OU=IT 
department/CN=exim.teachers/emailAddress=postmaster@l1523.ru
notBefore=Feb 20 15:35:04 2007 GMT
notAfter=Feb 20 15:35:04 2008 GMT
MD5 Fingerprint=D5:61:69:16:3E:AF:FF:A0:B3:64:67:5B:E8:28:4A:76
exim# mkdir /usr/local/etc/ssl/
exim# mv imapd.pem /usr/local/etc/ssl/mail.pem
exim# chown mailnull /usr/local/etc/ssl/mail.pem
exim# ls -la /usr/local/etc/ssl/mail.pem
-rw-------  1 mailnull  wheel  3250 Feb 20 16:48 /usr/local/etc/ssl/mail.pem
exim#

Теперь непосредственно редактируем /usr/local/etc/courier-imap/imapd-ssl, изменяя параметр TLS_CERTFILE до такого состояния:

TLS_CERTFILE=/usr/local/etc/ssl/mail.pem

И комментируем строку MAILDIRPATH.
Теперь запускаем:

exim# echo courier_imap_imapd_ssl_enable=\"YES\" >> /etc/rc.conf
exim# /usr/local/etc/rc.d/courier-imap-imapd-ssl.sh start
Starting courier_imap_imapd_ssl.
exim# sockstat | grep 993
root     couriertcp 19750 3  tcp4   *:993                 *:*
exim#

Теперь можно переходить к тестированию.

6. Тестирование.

Тестирование не займет много времени. Мы просто проверим работу exim'а:

6.1 Тестирование вирусов.

Проверим, как exim справляется с вирусами:

exim# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mx.exim.teachers, ESMTP EXIM 4.66
helo localhost
250 mx.exim.teachers Hello localhost [127.0.0.1]
mail from: fr33man@l1523.ru
250 OK
rcpt to: test@exim.teachers
250 Accepted
data
354 Enter message, ending with "." on a line by itself
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
550 "In e-mail found VIRUS - Eicar-Test-Signature"
quit
221 mx.exim.teachers closing connection
Connection closed by foreign host.
exim#

Как видите, exim не принял сообщение, так как clamav обнаружил в нем вирус. Посмотрим что в это время происходило в логах:

exim# tail /var/log/maillog
Feb 20 18:41:56 exim exim[19757]: Delay 0s for localhost [127.0.0.1] with HELO=localhost. Mail from fr33man@l1523.ru to test@exim.teachers.
Feb 20 18:42:00 exim exim[19757]: 1HJX7t-00058f-VT H=localhost [127.0.0.1] I=[127.0.0.1]:25 F=<fr33man@l1523.ru> rejected after DATA: "In e-mail found VIRUS - Eicar-Test-Signature"
Feb 20 18:42:00 exim exim[19757]: [1\8] 1HJX7t-00058f-VT H=localhost [127.0.0.1] I=[127.0.0.1]:25 F=<fr33man@l1523.ru> rejected after DATA: "In e-mail found VIRUS - Eicar-Test-Signature"
Feb 20 18:42:00 exim exim[19757]: [2\8] Envelope-from: <fr33man@l1523.ru>
Feb 20 18:42:00 exim exim[19757]: [3\8] Envelope-to: <test@exim.teachers>
Feb 20 18:42:00 exim exim[19757]: [4\8] P Received: from localhost ([127.0.0.1])
Feb 20 18:42:00 exim exim[19757]: [5\8] by mx.exim.teachers with smtp (Exim 4.66 (FreeBSD))
Feb 20 18:42:00 exim exim[19757]: [6\8] (envelope-from <fr33man@l1523.ru>)
Feb 20 18:42:00 exim exim[19757]: [7\8] id 1HJX7t-00058f-VT
Feb 20 18:42:00 exim exim[19757]: [8/8] for test@exim.teachers; Tue, 20 Feb 2007 18:41:59 +0300
exim#

6.2 Квоты:

Отправляем письмо пользователю, с маленькой квотой и смотрим логи:

Feb 20 18:43:23 exim exim[19761]: 1HJX9H-00058j-4B <= root@exim.teachers U=root P=local S=1802 from <root@exim.teachers> for test@exim.teachers
Feb 20 18:43:23 exim exim[19762]: 1HJX9H-00058j-4B == test@exim.teachers R=ldapuser T=ldap_delivery defer (-22): mailbox is full (MTA-imposed quota exceeded while writing to tmp/1171986203.H294868P19763.mx.exim.teachers)
Feb 20 18:43:23 exim exim[19762]: 1HJX9H-00058j-4B ** test@exim.teachers: retry timeout exceeded

Как видите, письмо не было доставлено, так как у пользователя нет места для новых сообщений.

6.3 Отправка локальному получателю:

Установим пользователю test@exim.teachers квоту побольше и отправим ему письмо:

Feb 20 18:46:12 exim exim[19785]: 1HJXC0-000597-6r <= root@exim.teachers U=root P=local S=1802 from <root@exim.teachers> for test@exim.teachers
Feb 20 18:46:12 exim exim[19786]: 1HJXC0-000597-6r => test <test@exim.teachers> R=ldapuser T=ldap_delivery
Feb 20 18:46:12 exim exim[19786]: 1HJXC0-000597-6r Completed

Письмо было доставлено в домашнюю директорию пользователя.

6.4 Теперь попробуем отправить письмо на внешний сервер:

Feb 20 18:48:06 exim exim[19808]: 1HJXDq-00059U-Cd <= root@exim.teachers U=root P=local S=1798 from <root@exim.teachers> for fr33man@l1523.ru
Feb 20 18:48:08 exim exim[19809]: 1HJXDq-00059U-Cd => fr33man@l1523.ru R=dnslookup T=remote_smtp H=mail.l1523.ru [10.10.20.5] X=TLSv1:DHE-RSA-AES256-SHA:256 C="250 2.0.0 Ok: queued as 66A7C7E8FB"
Feb 20 18:48:08 exim exim[19809]: 1HJXDq-00059U-Cd Completed

7. В заключении.

Ну вот и все. Эпопея про настройку exim'а закончена. От себя хочу добавить, что exim понравился намного больше, чем postfix.



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

размещено: 2007-03-27,
последнее обновление: 2007-03-28,
автор: fr33man

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

KrivoSoft, 2007-03-28 в 9:34:30

http://fr33man.ru/files/mail.schema.txt.
ссылка битая.

fr33man, 2007-03-28 в 10:54:51

Сори, когда переносил - поменять забыл. Сейчас поменяю.

i_mon, 2007-03-28 в 11:00:23

Спасибо за статью.
Если не ошибаюсь sendmail в /etc/rc.conf отключается коммандой:
sendmail_enable="NONE"

GD, 2007-03-28 в 15:54:31

# Рубаем письма с китайскими сиволами
 deny message = "this is spam - denied"
 condition = ${if match{$message_body} \
             {105[-_]*51[-_]*86|778[-_]*98[-_]*94} \
             {yes}{no}}


это не по китайский
это про центр американского инглийского
...чтоб его...

lissyara, 2007-03-28 в 15:59:16

Я, кстати, после высказываний ginger, щас убираю это из своих конфигов.
==========
P.S. Никто же не утверждает, что у неё 2/3 конфига стырены у Филипа Хаззела.. :)))

Jay, 2007-03-28 в 16:06:06

Статья, в целом, нужная, но есть несколько спорных моментов.

1. Не рекомендую блокировать почту на postmaster'а домена (равно, как рекомендую разрешить хождение почты на адреса root@domain и abuse@domain). Эти адреса должны использоваться другими администраторами для контактов с вами. postmaster - по вопросам работы почтовой системы, abuse - по вопросам плохого поведения пользователей из вашей сети, root - по всем остальным. Хотя спама на эти адреса, действительно, идет очень много..

2. Я плохо помню rfc на smtp, но что-то мне говорит, что не стоит использовать восьмибитные символы в строках message. Лучше бы перевести на английский.

xz, 2007-03-28 в 22:24:10

clamav-clamd.sh существует только в 5.Х ветках, в 6.Х он по-другому называется.

f0s, 2007-08-13 в 17:23:29

в статье вот тут:

## ищем хомяк пользователя
   directory = ${lookup ldap{LDAP_AUTH \
       ldap:///ou=exim,dc=l1523,dc=ru?homeDirectory?sub? \
               (&(accountStatus=active) \
               mail=${quote_ldap:$local_part}${quote_ldap:@}$ \
               {quote_ldap:$domain}))}{/var/spool/mail/$value/Maildir/} }

перед mail нужна скобка

ce$$, 2007-09-11 в 3:05:40

По мимо вышесказанного, в целом, после устранения неточностей и не домолвок всё работает!!!!
Спасибо.

REDiska, 2008-04-21 в 14:10:38

Автору респект и уважуха !!!
выложи на linux.org.ru !!!  

JSN, 2008-05-21 в 11:40:58

В конфиге EXIM были обнаружены ошибки.
[url=http://forum.lissyara.su/viewtopic.php?f=20&t=8739&start=0&st=0&sk=t&sd=a]

Также пришлось добавить права пользователю exim в ldap.

access to *
by dn="cn=exim,ou=system,dc=l1523,dc=ru" read

SergeyKa, 2008-08-18 в 15:00:37

При сборке exim пишет:
unknown OpenLDAP version: auto.
В make.conf добавляем:
WITH_OPENLDAP_VER=    24

SergeyKa, 2008-08-19 в 12:58:59

В целом статья удачная, наконец-то смог установить и запустить эту связку. Автору огромное спасибо за труд!
(антивирус надо разремить незабыть)

stratos, 2008-11-16 в 19:19:32

2008-11-16 08:10:27 1L1kCh-0005NQ-CX == webmaster@host.ru R=system_aliases defer (-1): failed to expand "${lookup ldapm{user="cn=exim,ou=System,dc=host-own,dc=com" pass=xxxxxx ldap:///ou=exim,dc=host-own,dc=com?mail?sub?(&(accountStatus=active) (mailAlternateAddress=${quote_ldap:$local_part}$ {quote_ldap:@}${quote_ldap:$domain}))}}": $ not followed by letter, digit, or {

o_O, что с этим хозяйством можно поделать

nearbird, 2008-11-26 в 17:08:07

2 stratos

Вот такое  $\ как в статье не катит , надо переносить  символ на другую строку

yura, 2008-12-05 в 18:17:22

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

yura, 2008-12-05 в 18:23:08

извените не домены а хосты, как сделать чтоб только с нормальных хостов, 3-4 днс уровня

Гость, 2009-07-20 в 16:58:48

Думаю, автор статьи неверно понимает назначение списка relay_to_domains. Объяснюсь.
У автора написано: "делаем список доменов с которых разрешены релеи" и далее "тогда пропускается всё, что похоже на *.my.domen.su, но от spam.my.domen.su релеится почта не будет".
Это не верно.
Домены, перечисленные в этом списке, это те домены, на которые ЛЮБОЙ хост может делать неавторизованный релей.
Об этом даже приведён пример в конфиге, снабженный соответствующий комментом:
"domainlist relay_to_domains = *.myco.com : my.friend.org

This will allow any host to relay through your host to those domains. See the section of the manual entitled "Control of relaying" for more information."

svi0105, 2010-09-22 в 18:49:45

Господа, скиньте плз файлик mail.schema, а то ссылка на него нерабочая..
Прошу прощения, что сюда с вопросами, но топик в форуме закрыт.

fletch, 2010-09-23 в 10:47:14

http://openpaste.org/en/23390/

ttys, 2012-04-18 в 9:35:44

у меня при её подключении этой схемы выдаёт:

slaptest
/usr/local/etc/openldap/schema/mail.schema: line 37 objectclass: AttributeType not found: "homeDirectory"
slaptest: bad configuration file!


Оставьте свой комментарий:
Ваше имя:   *
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)
2009-03-16, Cancer
Принт-Сервер Samba+LPD & AD

Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
2009-03-04, Mad_caterpillar
ipsec_vpnc

Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
2009-02-18, Andy
Free-SA

Программа анализирует log файлы Squid'а и формирует по ним отчет.
2009-02-02, Cancer
Openfire Jabber Server

Установка Jabber сервера на примере Openfire
2009-01-28, Cancer
mpd5 + сжатие и шифрование

Установка VPN сервера mpd5 + сжатие и шифрование
2009-01-26, vp
freebsd + webcamera

Подключение и настройка вебмкамеры для работы с freebsd на примере Logitech QCam STX
2009-01-10, Grishun_U_S
конфиг для офисов

В статье разбирается конфиг для офиса, пользователи которого имеют строгие ограничения по портам. Заворачиваем www трафик на транспарентный прокси, а остальное NAT'им. Эффективно делим канал интернет
2008-12-27, Storoge
sftp+chroot

Возникла необходимость дать возможность нескольким пользователям заливать на сервер контент для своих сайтов через sftp, чтобы при этом не страдала безопасность.
2008-12-13, Morty
PurefFTPd

Администрирование pureftpd-сервера с помощью вэб интерфейса Usermanager
2008-12-11, lissyara
termlog

Небольшая простая утилита, использующаяся для записи в файл всего что происходит на терминалах системы. Полезно, когда есть доступ по ssh у тех, кому не очень доверяете. Паранойя - это не плохо =)
2008-11-26, Cancer
SQUID+SAMS +Rejik-(ADLDAP)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-11-22, dvg_lab
php5-oci8

Решение проблем segmentation fault (core dumped) при работе с oracle8-client и php5-oci8
2008-11-21, m0ps
NTP

Пример настройки NTP сервера для локальной сети и клиента, для синхронизации времени с локальный NTP сервером. Обновление ntpd из портов.
2008-11-20, Cancer
SQUID+SAMS +Rejik-(NTLM)

Установка Прокси сервера SQUID с аутентификацией по NTL с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf, РЕЖИК собственно рубит банеры и запрещает пользователям хо
2008-11-20, UA
Hotspot

Настройка безпроводной точки доступа (WiFi) на freebsd
2008-11-12, Shaman
Enemy Territory

Появилась у меня такое желание поднять сервер Enemy Territory. Поискал погуглил, ничего толкового не нашел пришлось все самому делать. И вот решил поделиться опытом. Начинаем......
2008-11-11, lissyara
Samba+ NT ACL

Использование vfs самбы - модули full_audit и recycle. Настройка для использования в качестве файлопомойки с 500+ одновременно работающих юзеров. Раздача прав через нативный виндовый интерфейс.
2008-11-11, Raven2000
Upgrading OpenBSD

Сегодня мы будем обновлять OpenBSD. Систему необходимо поддерживать в актуальном виде и следить, чтобы все работало, как часы и все дырки были залатаны до прихода врага =)
2008-11-10, lexy
SMSTools 3

Как автоматизировать отправку и обработку входящих сообщений при помощи мобильного телефона, датакабеля и компа
2008-11-06, Cancer
Asterisk IP PBX

Установка VoiP сервера Asterisk IP PBX для соединения двух шлюзов и АТС
2008-10-30, atrium
Samba & CUPS & AD & ACL

Настройка Samba в роли доменного файл-сервера, и CUPS в роли принт-сервера для Windows клиентов
2008-10-17, Raven2000
src & ports

Конечно, в OpenBSD система портов никогда не сможет быть полной сравнение с той же системой во FreeBSD. Связано это с тем, что разработчики включают в порты лишь те приложение которые протестированн
2008-10-13, Morty
Mysql - базовое описание

Базовое описание и принципы работы с MySQL
2008-10-10, Cancer
exim&dovecot + fetchmail + SSL

Exim & Dovecot + Postfixadmin & Roundcube + Fetchmail & smtp_relay С возможностью отправлять письма через смтп релей провайдера. С использование SSL шифрование: POP3s IMAPs sSMTP
2008-10-09, m0ps
Дополнительные порты для роутера

Увеличение количества Ethernet портов маршрутизатора за счет свободных портов коммутатора пробросив vlan с сабинтерфейса роутера на интерфейс коммутатора.
2008-10-06, princeps
Bacula

Настройка сервера системы резервного копирования Bacula на FreeBSD для бэкапов FreeBSD и Windows машин
2008-10-02, zheromo
Postfix + DBMail

Создание почтовой системы на основе Postfix + DBMail + SASL2 + TLS + DSpam + ClamAV + RoundCubeWebMail
2008-10-02, Cancer
SugarForge CRM

SugarForge CRM предоставляет подавляющее большинство функциональных возможностей CRM систем
2008-09-12, arksu
ng_ipacct + squid

Подсчет трафика с помощью ng_ipacct. Связка ng_ipacct + squid + парсер логов + авторизатор + nginx + mysql и куча служебных скриптов для работы всей системы.
2008-09-03, Raven2000
GLPI

Мне надо было найти замену существующей программы инвентаризации, чтобы за компьютерами, принтерами, картриджами, лицензиями и тп был учет. Желательно с дополнительными бонусами типа системы подачи...
2008-09-03, salimk
POWERDNS

Статья о том как мигрировать с DNS сетвера ISC Bind на POWERDNS
2008-09-03, DNK
Rinetd

Редирект TCP портов с помощью утилиты rinetd - просто до безобразия - само прилодение простое, конфиг в одну строчку - что ещё надо для счастья? =)
2008-09-03, L!Ner
eGroupWare

Это сервер групповой работы. Он укомплектован собственным веб-интерфейсом, который обеспечивает доступ к вашим данным с любой платформы по всей планете.
2008-08-30, jafff
MAC адрес

У девайса VoIP Planet VIP-000 слетел MAC адрес и стал FF-FF-FF-FF-FF-FF, как я его востанавливал
2008-08-30, Morty
clonehdd

Перенесение, бэкапирование HDD,легко и просто
2008-07-31, Raven2000
Proxy Auto Configuration

Возникла необходимость автоматически настраивать прокси для всех компов и не бегать например если поменялось что-то на сервере прокси. Для этого давно существует технология Proxy Auto Configuration.
2008-07-29, f0s
NNTP сервер

Конфигурирование собственного NNTP-сервера.
2008-07-28, Al
spamooborona

настройка yandex spamooborona в качестве smtp-proxy для работы с exim
2008-07-28, Cancer
SQUID+SAMS +Rejik-(NCSA)

Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-07-20, Raven2000
Pax

Эта замечательная утилита поставляется с FreeBSD по умолчанию, и она имеет неплохой потенциал. Можно создавать архивы модифицировать их, а так же живьем переносить всю операционную систему с данными
2008-07-16, Andy2k
BIND & AD

Настройка BIND для обслуживания запросов контроллеров Active Directory. Альтернатива поднятию DNS от Microsoft.
2008-07-16, aleksey.kravchenko
Samba (PDC+BDC)

Поднять главный (офис) и резервный (филиал) контроллер домена на базе Samba и OpenLDAP, организовать синхронизацию и репликацию между ними. Запись в LDAP должена выполняться только на PDC.
2008-07-14, aleksey.kravchenko
OpenVPN + LDAP

Статья о том, как настроить OpenVPN с авторизацией пользователей в OpenLDAP.
2008-07-14, aleksey.kravchenko
ProFTPd + LDAP

ProFTPd с авторизацией пользователей в OpenLDAP
2008-07-13, lissyara
Asus Eee PC

Дали на несколько дней поиграться Asus Eee PC - мелкий ноутбок по смешной цене. Ну, первым делом ставим правильный ОС и смотрим - что из этого получиться.
2008-07-09, terminus
DNS сервер Unbound

Установка и настройка кеширующего DNS сервера Unbound под управлением FreeBSD 7.0
2008-07-08, f0s
mozilla autoconfig

Автонастройка браузера и почты Mozilla Seamonkey пользователям
2008-07-05, lissyara
iftop

Утилита предназначена для мониторинга загрузки канала в режиме реального времени - позволяет видеть кто именно занял полосу. Полезно для организаций с FreeBSD на шлюзовой машине.
2008-07-02, manefesto
snd_hda

Патчим snd_hda для корректной работы с наушниками
2008-06-27, Grishun_U_S
dd : бэкапируем windows

Клонирование разделов windows с помощью загрузочного диска FreeBSD
2008-06-25, terminus
DNS сервер NSD

Установка и настройка авторитарного DNS сервера NSD под управлением FreeBSD 7.0
2008-06-17, Al
NetXtreme BCM5722

Драйвер для сетевой карты NetXtreme BCM5722 Gigabit Ethernet
2008-06-15, tango
Amanda

Установка и настройка сервера резервного копирования Amanda на FreeBSD.
2008-06-12, LMik
Виртуальный свитч

Статья описывает создание виртуального коммутатора для соединения удаленных физических ethernet сетей.
2008-06-08, littlesavage
SiS*Mirage*1 на D201GLY2

Как заставить работать видеоrарту SiS*Mirage*1 на материнской D201GLY2
подписка

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

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1377 секунд
Из них PHP: 79%; SQL: 21%; Число SQL-запросов: 77 шт.
Исходный размер: 266190; Сжатая: 51076