Переход с Microsoft Exchange на Postfix+cyrus-imapd+clamav+OpenLDAP
Автор: Филиппов Алексей
Связь: fa13@bk.ru
Дата создания: 16 мая 2007
Постоянный адрес статьи: http://phas13.blogspot.com/2008/08/microsoft-exchange-postfixcyrus.html
Задача – выкосить Microsoft Exchange.
Используемые для этого дела компоненты:
l SuSE Linux Enterprise Server 10
postfix-2.2.9-10.2
cyrus-sasl-2.1.21-18.4
cyrus-imapd-2.2.12-27.2
openldap2-2.3.19-18.7
apache2-2.2.0-21.2
phpLDAPadmin 1.0.2
clamav-0.90.2-0.1
Необходимо, чтоб работала почта, адресная книга, группы рассылки, антивирусная проверка проходящей почты.
Подготовка файловой системы
Как всем известно, в Linux много рецептов подготовки файловой системы. Я делаю следующим образом:
- Под swap выделаю объем равный двойному объему оперативной памяти. В принципе, на серверах с 2-мя гектарами мозгов которые не будут выполнять функции серверов баз данных или еще чего-нибудь жрущего оперативку можно давать меньше места на swap, но я перестраховываюсь – а вдруг через месячишко из-за дефицита мощностей на этом сервере добавят какую-нибудь нехилую задачку.
- Выделяю под /boot отдельную точку монтирования. Размер 150 метров, файловая система ext3. Для /boot можно было бы использовать и ext2, так как содержимое этого раздела меняется только при установке нового ядра, но я опять же перестраховываюсь.
- Под / на данном сервере выделил 8 гектар. Файловая система ext3.
- Ну и под самый веселый раздел /var выдедил все оставшееся место. Получилось 56 Гб.
CLAMAV
Как настоящие пацаны сначала настраиваем антивирус. Для этого используем clamav-0.90.2-0.1. В дистрибутиве SLES10 идет более старая версия, поэтому качаем из инета версию поновее (на www.clamav.net есть, где взять). Устанавливаем и настраиваем.
Первым делом в каталоге /var/log создаем директорию, куда clamav будет складывать логи работы. Так как clamav будет работать под пользователем vscan, то даем этому пользователю права на эту директорию:
root> mkdir /var/log/clamav
root> chown vscan:vscan /var/log/clamav -R
Настраиваем clamav. Все настройки clamav находятся в файле /etc/clamav.conf:
ArchiveMaxFileSize 10M
ArchiveMaxRecursion 10
ArchiveMaxFiles 1000
ArchiveMaxCompressionRatio 0
FixStaleSocket yes
Foreground no
LocalSocket /var/lib/clamav/clamd-socket
LogFacility LOG_MAIL
LogFile /var/log/clamav/clamav.log
LogFileMaxSize 0
LogSyslog yes
LogVerbose yes
PidFile /var/lib/clamav/clamd.pid
User vscan
После этого необходимо запустить демон clamd:
root> /etc/init.d/clamd start
Кроме того, нам необходимо, чтоб clamd автоматически стартовал при запуске системы:
root> ln -s /etc/init.d/clamd /etc/init.d/rc3.d/K08clamd
root> ln -s /etc/init.d/clamd /etc/init.d/rc3.d/S14clamd
root> ln -s /etc/init.d/clamd /etc/init.d/rc5.d/K08clamd
root> ln -s /etc/init.d/clamd /etc/init.d/rc5.d/S14clamd
Чтоб не делать это руками, можно использовать «Runlevel Editor» в yast. Указать там автостарт сервиса.
Теперь настраиваем автоматическое обновление антивирусных баз clamav. За сие замечательное занятие отвечает демон freshclam. Все его настройки хранятся в файле /etc/freshclam.conf:
Checks 24
DatabaseMirror database.clamav.net
DatabaseOwner vscan
HTTPProxyServer 10.77.11.70
HTTPProxyPort 3128
LogFacility LOG_MAIL
LogSyslog yes
NotifyClamd /etc/clamd.conf
PidFile /var/lib/clamav/freshclam.pid
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose yes
ScriptedUpdates yes
Кроме того, нам необходимо, чтоб freshclam автоматически стартовал при запуске системы:
root> ln -s /etc/init.d/freshclam /etc/init.d/rc3.d/K08freshclam
root> ln -s /etc/init.d/freshclam /etc/init.d/rc3.d/S14freshclam
root> ln -s /etc/init.d/freshclam /etc/init.d/rc5.d/K08freshclam
root> ln -s /etc/init.d/freshclam /etc/init.d/rc5.d/S14freshclam
Чтоб не делать это руками, можно использовать «Runlevel Editor» в yast. Указать там автостарт сервиса.
Теперь нужно установить clamsmtp, приблуда необходима для связи postfix с clamav. В моем случае я выкачал http://memberwebs.com/nielsen/software/clamsmtp/clamsmtp-1.8.tar.gz. Когда вы будете эту штуку ставить – проверьте, может есть версия поновее. Архив распаковал во временную директорию /_tmp/clamsmtpd. Далее устанавливаем:
root> cd /_tmp/clamsmtpd/clamsmtp-1.8
root> ./configure
root> make
root> make check
root> make install
root> mkdir /usr/local/etc
root> cp doc/clamsmtpd.conf /usr/local/etc
root> cd /
root> rm -r /_tmp
Настраиваем этот самый clamsmtp. Его настройки хранятся в файле /usr/local/etc/clamsmtpd.conf. Оригинал сохраняем, исходную копию редактируем:
OutAddress: 10026
Listen: 0.0.0.0:10025
ClamAddress: /var/run/clamav/clamd-socket
TempDirectory: /tmp
User: clamav
Теперь нужно, чтоб clamsmtpd стартовал при запуске системы... Качаем http://memberwebs.com/nielsen/software/clamsmtp/contrib/clam_x_rc_script.tar.gz. Это есть скрипт для автостарта clamsmtpd, созданный специально для SuSE. Из архива файлик clamgate копируем в /etc/init.d. После этого редактируем его:
user=clamav меняем на user=vscan
Ставим # (то есть по виндузятному наречию рэмим) перед строчками:
su -m $user -c "$prefix/sbin/clamd"
rc_check
[ -f $piddir/clamd.pid ] && kill `cat $piddir/clamd.pid`
rc_check
checkproc -p $piddir/clamd.pid $prefix/sbin/clamd
rc_check
Смысл сего шага в том, чтоб отключить запуск демона clamd через сей замечательный скрипт. Ну ведь логично – зачем нам это делать здесь, если это уже сделано в другом месте???
Потом выполняем:
root> ln -s /var/lib/clamav /var/run/clamav
root> ln -s /usr/sbin/clamd /usr/local/sbin/clamd
Это делается для того, чтоб удовлетворить требования скрипта по расположению каталогов. Можно конечно руками его отрихтовать, но в данном случае работы меньше, да и глюков тоже.
Теперь собственно ставим линки на автозагрузки:
root> ln -s /etc/init.d/clamgate /etc/init.d/rc3.d/K08clamgate
root> ln -s /etc/init.d/clamgate /etc/init.d/rc3.d/S14clamgate
root> ln -s /etc/init.d/clamgate /etc/init.d/rc5.d/K08clamgate
root> ln -s /etc/init.d/clamgate /etc/init.d/rc5.d/S14clamgate
Тут засада есть в том, что yast какого-то перца не дает сделать линки через Runlevel Editor, поэтому придется ручками :).
POSTFIX
Базовые параметры почтового сервера PostFIX настраиваются в конфигурационном файле main.cf. При добавлении или изменении параметра необходимо следить, чтоб параметр не повторялся. Кроме параметров по умолчанию, приписанных в этом файле при установке, дописываем и модифицируем следующие:
alias_maps = hash:/etc/aliases,
hash:/etc/postfix/aliases,
hash:/etc/postfix/aliases4bank
inet_interfaces = all
header_checks = regexp:/etc/postfix/header_checks
local_recipient_maps =
mailbox_size_limit = 0
message_size_limit = 4096000
mailbox_transport = cyrus
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = co.mycorp.com.ua
myhostname = antares.co.mycorp.com.ua
mynetworks = 127.0.0.0/8
10.77.1.0/24
10.77.9.0/24
10.77.11.0/24
10.77.13.0/24
10.77.253.0/24
10.77.254.0/24
relay_domains = $mydestination, $mydomain
relayhost = 10.77.11.60
# for clamav
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings
После этого проверяем корректность файла параметров:
root> postfix check
Если никаких ошибок не было выдано - значит синтаксис файла корректен.
Теперь беремся за файлик /etc/postfix/master.cf. Дописываем в этот файл следующее:
# AV scan filter (used by content_filter)
scan unix - - n - 16 smtp
-o smtp_send_xforward_command=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
И меняем строки
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
на
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} $(recipient)
Настраиваем группы рассылки. Например добавим группу All_ProgrammerRes@co.mycorp.com.ua и all_abon@co.mycorp.com.ua. Для этого создаем файл /etc/postfix/aliases под пользователь root и заполняем его следующим содержимым:
all_programmerres: admin@brres.mycorp.gov.ua,
admin@bzres.mycorp.gov.ua,
admin@cpres.mycorp.gov.ua,
admin@crres.mycorp.gov.ua,
admin@gnres.mycorp.gov.ua,
admin@gpres.mycorp.gov.ua,
admin@gsres.mycorp.gov.ua,
admin@ivres.mycorp.gov.ua,
admin@klres.mycorp.gov.ua,
admin@kvres.mycorp.gov.ua,
admin@nkres.mycorp.gov.ua,
admin@nsres.mycorp.gov.ua,
admin@ntres.mycorp.gov.ua,
admin@nvres.mycorp.gov.ua,
admin@skres.mycorp.gov.ua,
admin@vares.mycorp.gov.ua,
admin@vlres.mycorp.gov.ua,
admin@vpres.mycorp.gov.ua,
admin@vrres.mycorp.gov.ua,
admin@gs.mycorp.gov.ua
all_abon: abon@brres.mycorp.gov.ua,
abon@bzres.mycorp.gov.ua,
abon@cpres.mycorp.gov.ua,
abon@crres.mycorp.gov.ua,
abon@gnres.mycorp.gov.ua,
abon@gpres.mycorp.gov.ua,
abon@gsres.mycorp.gov.ua,
abon@ivres.mycorp.gov.ua,
abon@klres.mycorp.gov.ua,
abon@kvres.mycorp.gov.ua,
abon@nkres.mycorp.gov.ua,
abon@nsres.mycorp.gov.ua,
abon@ntres.mycorp.gov.ua,
abon@nvres.mycorp.gov.ua,
abon@skres.mycorp.gov.ua,
abon@vares.mycorp.gov.ua,
abon@vlres.mycorp.gov.ua,
abon@vpres.mycorp.gov.ua,
abon@vrres.mycorp.gov.ua,
abon@gs.mycorp.gov.ua,
kanc@gs.mycorp.gov.ua,
Alexandr.Belous@co.mycorp.com.ua,
Ostrov@co.mycorp.com.ua,
Vitaliy.Stavickiy@gs.mycorp.gov.ua,
tavrik_esu@gs.mycorp.gov.ua,
centr_esu@gs.mycorp.gov.ua,
shumen_esu@gs.mycorp.gov.ua
В случае, если необходимо создать новую группу рассылки – добавляйте ее в этот файл.
Теперь создаем из данного файла базу:
root> postalias /etc/postfix/aliases
Теперь объясняем MTA, как отправлять почту на эти группы рассылки. Редактируем файл /etc/postfix/transport. Добавляем следующее:
# mail groups
all_abon@co.mycorp.com.ua local:all_abon
all_programmerres@co.mycorp.com.ua local:all_programmerres
Создаем из этого файла базу:
root> postmap /etc/postfix/transport
После изменений в файлах aliases и transport обязательно пересоздавать базу указанными командами и делать перезагрузку (не перезапуск) postfix.
Ну и ставим postfix на автозагрузку:
root> ln -s /etc/init.d/postfix /etc/init.d/rc3.d/K12postfix
root> ln -s /etc/init.d/postfix /etc/init.d/rc3.d/S10postfix
root> ln -s /etc/init.d/postfix /etc/init.d/rc5.d/K12postfix
root> ln -s /etc/init.d/postfix /etc/init.d/rc5.d/S10postfix
или делаем это через «Runlevel Editor» в YaST. Через YaST проще и правильнее :).
И не забываем запустить postfix, если вы этого еще не сделали:
root> /etc/init.d/postfix start
Теперь еще одна тема – необходимо, чтобы приходящая банковская выписка в зависимости от темы письма рассылалась по районам и оставалась в ящике, куда приходит. Приходит она у нас в buh-bank1@co.mycorp.com.ua. Создаем файлик /etc/postfix/header_checks со следующим содержимым:
/^Subject: Vipiska - 035/
REDIRECT bank035@co.mycorp.com.ua
/^Subject: Vipiska - 036/
REDIRECT bank036@co.mycorp.com.ua
, и так далее для всех возможных вариантов тем для автоматической рассылки (их у нас штук 20). Обратите внимание, что перенаправление осуществляется только на основании темы письма. Как сделать более сложную схему я пока не знаю. После этого создаем файлик с алиасами для рассылки, который называется /etc/postfix/aliases4bank со следующим содержимым:
bank035: buh-bank1@co.mycorp.com.ua,
buhsbyt@bzres.mycorp.gov.ua
bank036: buh-bank1@co.mycorp.com.ua,
buhsbyt@brres.mycorp.gov.ua
, и так далее для всех необходимых групп рассылки. После этого создаем базу данны из файла алиасов:
root> postalias /etc/postfix/aliases4bank
Ну и добавляем правила отправки на данные группы рассылки в файл /etc/postfix/transport:
# mail groups for banks
bank035@co.mycorp.com.ua local:bank035
bank036@co.mycorp.com.ua local:bank036
, и так для всех групп необходимых рассылки. Теперь пересоздаем базу:
root> postmap /etc/postfix/transport
Не забываем перезагрузить конфигурацию postfix:
root> /etc/init.d/postfix reload
Напоследок создаем каталог, куда будут системные сообщения почтовой системы:
root> mkdir /var/log/post
Cyrus-SASL
Эта штука нам нужна для одной простой вещи – она будет хранить логины и пароли пользователей почтовой системы cyrus-imapd. Вперед, с песней:
root> /etc/init.d/saslauthd start
root> saslpasswd2 -c cyrus
Password: вводим пароль для пользователя cyrus
Again (for verification): опять вводим тот же пароль
root> chmod 644 /etc/sasldb2
root> chown cyrus:mail /etc/sasldb2
Ставим наш дорогой sasl на автозагрузку. Либо как обычно (задолбался повторять) через YaST, либо руками:
root> ln -s /etc/init.d/saslauthd /etc/init.d/rc3.d/K16saslauthd
root> ln -s /etc/init.d/saslauthd /etc/init.d/rc3.d/S06saslauthd
root> ln -s /etc/init.d/saslauthd /etc/init.d/rc5.d/K16saslauthd
root> ln -s /etc/init.d/saslauthd /etc/init.d/rc5.d/S06saslauthd
Все, с этим разобрались. Дальше...
Cyrus-IMAPD
Теперь настраиваем IMAP4/POP3 сервер. Все основные настройки cyrus-imapd хранятся в файле /etc/imapd.conf. При добавлении или изменении параметра необходимо следить, чтоб параметр не повторялся. Кроме параметров по умолчанию, приписанных в этом файле при установке, дописываем и модифицируем следующие:
altnamespace: yes
autocreatequota: 25000
defaultdomain: co.mycorp.com.ua
quotawarn: 95
sasl_pwcheck_method: auxprop
sasl_sasldb_path: /etc/sasldb2
timeout: 720
virtdomains: userid
Запускаем cyrus-imapd:
root> /etc/init.d/cyrus start
Создаем новый почтовый ящик:
root> su – cyrus
cyrus> /usr/sbin/saslpasswd2 -c fa
cyrus> cyradm –user cyrus localhost
localhost> cm user.fa@co.mycorp.com.ua
localhost> cm user.fa.Sent@co.mycorp.com.ua
localhost> cm user.fa.Trash@co.mycorp.com.ua
localhost> cm user.fa.Drafts@co.mycorp.com.ua
localhost> sam user.fa@co.mycorp.com.ua fa write
localhost> sq user.fa@co.mycorp.com.ua 25000
localhost> exit
Поздравляю – первый почтовый ящик создан.
Пока жив Exchange
Дело в том, что на данном этапе у нас есть 2 почтовки, которые будут держать домен co.mycorp.com.ua – это Exchange и та, что мы настраиваем (antares). Нужно сделать так, чтоб почта работала нормально во всех направлениях :) (не знаю как сказать по другому). Поэтому нам сейчас придется понасоздавать временных костылей, от которых мы со смертью Exchange избавимся.
Для начала в свойствах протокола SMTP Exchange сервера (Default SMTP Virtual Server) во вкладке «Messages» для опции «Forward all mail with unresolved recipients to host» устанавливаем значение «[10.77.11.60]» (это ip-адрес вышестоящей самой главной почтовки). Кроме того надо четко осознавать, что как только пользователь переедет в новую почтовку – он исчезнет из адресной книги Exchange.
Затем на вышестоящей почтовке, ну то есть на самой главной, для всех адресов, которые будут обрабатываться новой почтовкой необходимо прописать жесткие маршруты движения. После кончины Exchange это будет убрано и вся почта домена co.mycorp.com.ua будет отправляться на новую почтовку. Делается это следующим образом. В файл /etc/postfix/transport вышестоящего MTA для каждого адреса, обрабатываемого новой почтовкой добавляется строка:
fa@co.mycorp.com.ua smtp:10.77.11.51
, где 10.77.11.51 – ip-адрес новой почтовки. Затем:
root> postmap /etc/postfix/transport
root> /etc/init.d/postfix reload
Затем на новой почтовке делаем примерно то же самое. В файл /etc/postfix/transport нового MTA для каждого адреса, обрабатываемого новой почтовкой добавляется строка:
fa@co.mycorp.com.ua cyrus:localhost
, после чего:
root> postmap /etc/postfix/transport
root> /etc/init.d/postfix reload
Все, после этого адрес fa@co.mycorp.com.ua будет корректно обрабатываться всеми участвующими в его жизни почтовыми серверами. Нехило, да?
Так, осталась адресная книга. Угадайте, чем? Правильно,
OpenLDAP2
Избалованные пользователи привыкли, что у них в почтовом клиенте есть адресная книга, и без нее они уже не могут, поэтому начинаем. У нас будет 2 LDAP сервера, один из которых будет master, второй – slave. Изменения с master будут реплицироваться на slave. Необходимость наличия 2-х LDAP серверов обусловлена требованиями к отказоустойчивости системы.
Master находится у нас на 10.77.11.51, slave на 10.77.11.60.
Настраиваем master сервер. Настройки LDAP сервера находятся в файле /etc/openldap/slapd.conf. Мой файл выглядит следующим образом:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/rfc2307bis.schema
include /etc/openldap/schema/yast.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
modulepath /usr/lib/openldap/modules
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
access to attrs=userPassword,userPKCS12
by self write
by * auth
access to attrs=shadowLastChange
by self write
by * read
access to *
by * read
#######################################################################
# BDB database definitions
#######################################################################
database bdb
suffix "dc=mycorp,dc=com,dc=ua"
checkpoint 1024 5
cachesize 10000
rootdn "cn=admin,dc=mycorp,dc=com,dc=ua"
rootpw {MD5}/b8HnGMRXvKCbMz4jWCtHQ==
directory /var/lib/ldap/mycorp.com.ua
index objectClass eq
replica host=10.77.11.60
binddn="cn=admin,dc=mycorp,dc=com,dc=ua"
bindmethod=simple
credentials=htgkbrfwbz
replogfile /var/lib/ldap/mycorp.com.ua/replica.log
replicationinterval 30
Значение пароля {MD5}/b8HnGMRXvKCbMz4jWCtHQ== я получил следующим образом:
root> slappasswd -h {MD5}
На запрос ввел пароль, который мне надо зашифровать, подтвердил его и получил эту загадочную строку символов. Обратите внимание на строчку credentials=htgkbrfwbz – это в незашифрованом виде то, что на slave сервере прописано в зашифрованом виде в строке rootpw.
Создаем каталоги, в которых будет храниться база mycorp.com.ua и куда будет логироваться OpenLDAP:
root> mkdir /var/log/ldap
root> su – ldap
ldap> mkdir /var/lib/ldap/mycorp.com.ua
ldap> cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/mycorp.com.ua
Запускаем необходимые сервисы и ставим их на автозапуск, через YaST или руками:
root> /etc/init.d/ldap start
root> /etc/init.d/slurpd start
root> ln -s /etc/init.d/ldap /etc/init.d/rc3.d/K13ldap
root> ln -s /etc/init.d/ldap /etc/init.d/rc3.d/S09ldap
root> ln -s /etc/init.d/ldap /etc/init.d/rc5.d/K13ldap
root> ln -s /etc/init.d/ldap /etc/init.d/rc5.d/S09ldap
root> ln -s /etc/init.d/slurpd /etc/init.d/rc3.d/K12slurpd
root> ln -s /etc/init.d/slurpd /etc/init.d/rc3.d/S10slurpd
root> ln -s /etc/init.d/slurpd /etc/init.d/rc5.d/K12slurpd
root> ln -s /etc/init.d/slurpd /etc/init.d/rc5.d/S10slurpd
После запуска LDAP сервера в каталоге mycorp.com.ua должны появится файлы базы данных LDAP. Кстати, хотя процесс slurpd (занимается репликацией изменений с master на slave сервер) и запущен, но реплицировать ему пока нечего и некуда, ведь база у нас пустая да и slave сервер пока отсутствует. Давайте его создадим.
Итак, настраиваем slave LDAP сервер. slapd.conf этого сервера выглядит почти так же, как и на master сервере:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/rfc2307bis.schema
include /etc/openldap/schema/yast.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
modulepath /usr/lib/openldap/modules
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
access to attrs=userPassword,userPKCS12
by self write
by * auth
access to attrs=shadowLastChange
by self write
by * read
access to *
by * read
#######################################################################
# BDB database definitions
#######################################################################
database bdb
suffix "dc=mycorp,dc=com,dc=ua"
checkpoint 1024 5
cachesize 10000
rootdn "cn=admin,dc=mycorp,dc=com,dc=ua"
rootpw {MD5}UQiLwCP2DA8ecWNe6h3rLQ==
directory /var/lib/ldap/mycorp.com.ua
index objectClass eq
updatedn "cn=admin,dc=mycorp,dc=com,dc=ua"
Создаем каталоги, в которых будет храниться база mycorp.com.ua и куда будет логироваться OpenLDAP:
root> mkdir /var/log/ldap
root> su – ldap
ldap> mkdir /var/lib/ldap/mycorp.com.ua
ldap> cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/mycorp.com.ua
Запускаем необходимые сервисы и ставим их на автозапуск, через YaST или руками:
root> /etc/init.d/ldap start
root> /etc/init.d/slurpd start
root> ln -s /etc/init.d/ldap /etc/init.d/rc3.d/K13ldap
root> ln -s /etc/init.d/ldap /etc/init.d/rc3.d/S09ldap
root> ln -s /etc/init.d/ldap /etc/init.d/rc5.d/K13ldap
root> ln -s /etc/init.d/ldap /etc/init.d/rc5.d/S09ldap
root> ln -s /etc/init.d/slurpd /etc/init.d/rc3.d/K12slurpd
root> ln -s /etc/init.d/slurpd /etc/init.d/rc3.d/S10slurpd
root> ln -s /etc/init.d/slurpd /etc/init.d/rc5.d/K12slurpd
root> ln -s /etc/init.d/slurpd /etc/init.d/rc5.d/S10slurpd
После запуска LDAP сервера в каталоге mycorp.com.ua должны появится файлы базы данных LDAP.
Ну и после этого процесс slurpd с master сервера уже может колбасить изменения в slave.
Так, ну и теперь нам нужно удобное средство для работы с OpenLDAP. Можно конечно все изменения делать из консоли с использованием *.ldif файлов через такой замечательный набор консольных утилит как slapadd, ldapadd, ldapdelete, ldapmodify, ldapsearch и т.д., но это скучно и некрасиво, да и долго, и знать надо много, и ваще... Добрые люди для ленивых придумали такую классную штуку, как
phpLDAPadmin
Первым делом дуем на http://phpldapadmin.sourceforge.net и качаем самую свежую стабильную версию phpLDAPadmin. Архив выкладываем на сервер и содержимое папки phpldapadmin-x.x.x распаковываем в папку /opt/phpldapadmin. Далее:
root> cd /opt/phpldapadmin/config
root> cp config.php.example config.php
В принципе можно ничего и не настраивать, разве что сделать осмысленное название LDAP сервера на стартовой страничке. Для этого в файле config.php меняем строку
$ldapservers->SetValue($i,'server','name','My LDAP Server');
на строку
$ldapservers->SetValue($i,'server','name','Херсоноблэнерго LDAP Server');
Ну а так как морда у phpLDAPadmin написано на PHP, как видно из названия продукта, то нам нужен Web Server с PHP. Для этого ставим apache2, PHP версии 4 или выше и модули PHP для apache2, ну и такую штуку, как gettext. Из всего этого хозяйства настроить нужно только
Apache2
Тут все более-менее просто :), а вы как думали – тут все просто, стоит только прочитать несколько предыдущих страниц текста :). Редактируем файл /etc/apache2/httpd.conf, добавляем в самый конец такое:
ServerAdmin sit@co.mycorp.com.ua
ServerName antares.mycorp.com.ua
# For OpenLDAP WEB Access (phpLDAPadmin)
Alias /ldap "/opt/phpldapadmin"
Order Deny,Allow
Allow from all
Options -Indexes
После этого запускаем apache2 и ставим его на автозагрузку:
root> /etc/init.d/apache2 start
root> ln -s /etc/init.d/apache2 /etc/init.d/rc3.d/K11apache2
root> ln -s /etc/init.d/apache2 /etc/init.d/rc3.d/S11apache2
root> ln -s /etc/init.d/apache2 /etc/init.d/rc5.d/K11apache2
root> ln -s /etc/init.d/apache2 /etc/init.d/rc5.d/S11apache2
После этого если вы зайдете на http://antares/ldap, или как там он у вас называется, то увидите очень симпатичную можду phpLDAPadmin. Все, можете создавать адресную книгу.
Настройки логирования и ротации
Без этого никуда. Что подразумеваем под системными настройками – логирование информационных систем, описанных выше, и ротацию журнальных файлов.
Настраиваем syslog-ng. Если не знаете, что это такое – это более новая версия всеми любимого syslog, только мощнее. В каталоге /etc/syslog-ng, есть два файла с идентичным содержимым, но разными названиями (когда я говорю об идентичности, я исключаю из рассмотрения комментарии – они отличаются). Редактируем файл syslog-ng.conf.in (syslog.conf редактировать нельзя). Добавляем в самый конец следующее:
# clamsmtpd
filter fff_clamsmtpd { match('clamsmtpd') and not match(accepted); };
destination ddd_clamsmtpd { file("/var/log/post/clamsmtpd"); };
log { source(src); filter(fff_clamsmtpd); destination(ddd_clamsmtpd); };
# cyrus
filter fff_cyrus { match('cyrus'); };
destination ddd_cyrus { file("/var/log/post/cyrus"); };
log { source(src); filter(fff_cyrus); destination(ddd_cyrus); };
# imap
filter fff_imap { match('imap'); };
destination ddd_imap { file("/var/log/post/imap"); };
log { source(src); filter(fff_imap); destination(ddd_imap); };
# pop
filter fff_pop { match('pop'); };
destination ddd_pop { file("/var/log/post/pop"); };
log { source(src); filter(fff_pop); destination(ddd_pop); };
# postfix
filter fff_postfix { match('postfix'); };
destination ddd_postfix { file("/var/log/post/postfix"); };
log { source(src); filter(fff_postfix); destination(ddd_postfix); };
# openldap
filter fff_ldap { match('slapd'); };
destination ddd_ldap { file("/var/log/ldap/slapd"); };
log { source(src); filter(fff_ldap); destination(ddd_ldap); };
Не факт, что вы добавите именно это, возможно у вас свой взгляд на систему логирования этого комплекса событий.
Теперь из файла syslog-ng.conf.in делаем файл syslog-ng.conf:
root> SuSEconfig
А, как просто, да?
Ну и настраиваем ротацию журнальных файлов. Для этого в каталоге /etc/logrorate.d создаем файлы clamav, ldap, post со следующим содержимым:
/etc/logrotate.d/clamav:
/var/log/clamav/* {
dateext
compress
copytruncate
weekly
missingok
notifempty
olddir /var/log/arhiv/clamav
rotate 100
}
/etc/logrotate.d/ldap:
/var/log/ldap/* {
dateext
compress
copytruncate
daily
missingok
notifempty
olddir /var/log/arhiv/ldap
rotate 100
}
/etc/logrotate.d/post:
/var/log/post/* {
dateext
compress
copytruncate
daily
missingok
notifempty
olddir /var/log/arhiv/post
rotate 100
}
Ну вроде все. Что вспомню - добавлю.
Комментариев нет:
Отправить комментарий