- Скачать образ диска с обновлениями Dell Server Updates с сайта support.dell.com (3,5-4 Гб) на сервер
- Проверить наличие 32-х битных библиотек compat-libstdc++-33 и compat-libstdc++-296 (именно 32-х битные!)
- rpm -qa | grep compat-libstdc
- Установить данные библиотеки, если их нет в системе
- sudo yum -y install compat-libstdc
- Смонтировать образ диска с обновлениями в какую-нибудь папку, например,
- sudo mount -o loop OM_6.2.0_SUU.iso /mnt/
- Зайти в данную папку
- cd /mnt
- Запустить в консоли sudo ./suu -c для сравнения текущей версии прошивок и поставляемых на образе
- При наличие доступных обновлений запустить sudo ./suu -u
- Перегрузить сервер sudo reboot
Возможные проблемы:
/var/log/dell/suu/invcolOutput.log (No such file or directory)
[/DIR/./bin/Linux/invcol]
Problem reading from inventory output file [/var/log/dell/suu/invcolOutput.log]
exiting SUU application ...
Проблемы с запуском invcol. Стоит зайти в указанный каталог и вручную запустить ./invcol. В моем случае ругалось об отсутствии следующих пакетов/файлов:
- zlib.i686 (libz.so.1)
- procmail.x86_64 (no lockfile in $PATH)
суббота, 30 октября 2010 г.
Обновление прошивок (firmware) на серверах Dell R200, 2950 под RHEL.
четверг, 28 октября 2010 г.
Автосохранение конфигурационного файла маршрутизатора Cisco на tftp-сервер.
Иногда приходится возиться с маршрутизаторами Cisco по роду деятельности. Расскажу о такой приятной возможности как автосохранение конфигурации маршрутизатора на tftp-сервер.
Установка/настройка tftp-сервера
sudo yum -y install tftp-server xinetd
vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -vvvc
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
- disable поменять с yes на no, тем самым разрешив сервис.
- Опция -c позволяет создавать новые файлы. По умолчанию, tftpd позволит выложить файл, если тот уже существует. По умолчанию, файлы создаются с разрешениями 666 (доступны на чтение/запись всем), пока не установлены опции --permissive или —umask.
- Опция -v позволяет увеличить уровень логгирования tftpd, можно указать несколько раз.
- Опция -s задает корневую директорию при старте.
Запуск сервиса
# запускать сервис на уровнях 3,4,5
sudo /sbin/chkconfig xinetd --level 345 on
# перезапустить сервер xinetd, который является посредником для tftpd
sudo /sbin/service xinetd restart
# создаем необходимые директории для хранения конфигурационных файлов
mkdir -p /var/lib/tftpboot/cisco/{krrog,kiev,poltava}
chmod -R 777 /var/lib/tftpboot/cisco
Для ограничения сервиса использовать либо iptables (tftp-сервер использует порт 69 udp), либо tcp_wrappers (бинарник in.tftpd).
Настройка cisco.
# указываем сервер имен
ip name-server 10.1.11.3
# далее директивы для управления автосохранением
archive
# путь куда будем сохранять конфигурацию
path tftp://mitra.office.com/cisco/vinnitsa/vn-branch-config
# делать сохранение по команде write memory
write-memory
# в некоторых случаях важно явно указать интерфейс, с которого связываться с tftp-сервером, например, в случае использования IPSec.
ip tftp source-interface Vlan1
Теперь, сделав
Cisco2811-Vinnica#wr me
Building configuration...
[OK]!!
Cisco2811-Vinnica#
получаем копию конфига в директории на tftp-сервере.
Установка/настройка tftp-сервера
sudo yum -y install tftp-server xinetd
vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -vvvc
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
- disable поменять с yes на no, тем самым разрешив сервис.
- Опция -c позволяет создавать новые файлы. По умолчанию, tftpd позволит выложить файл, если тот уже существует. По умолчанию, файлы создаются с разрешениями 666 (доступны на чтение/запись всем), пока не установлены опции --permissive или —umask.
- Опция -v позволяет увеличить уровень логгирования tftpd, можно указать несколько раз.
- Опция -s задает корневую директорию при старте.
Запуск сервиса
# запускать сервис на уровнях 3,4,5
sudo /sbin/chkconfig xinetd --level 345 on
# перезапустить сервер xinetd, который является посредником для tftpd
sudo /sbin/service xinetd restart
# создаем необходимые директории для хранения конфигурационных файлов
mkdir -p /var/lib/tftpboot/cisco/{krrog,kiev,poltava}
chmod -R 777 /var/lib/tftpboot/cisco
Для ограничения сервиса использовать либо iptables (tftp-сервер использует порт 69 udp), либо tcp_wrappers (бинарник in.tftpd).
Настройка cisco.
# указываем сервер имен
ip name-server 10.1.11.3
# далее директивы для управления автосохранением
archive
# путь куда будем сохранять конфигурацию
path tftp://mitra.office.com/cisco/vinnitsa/vn-branch-config
# делать сохранение по команде write memory
write-memory
# в некоторых случаях важно явно указать интерфейс, с которого связываться с tftp-сервером, например, в случае использования IPSec.
ip tftp source-interface Vlan1
Теперь, сделав
Cisco2811-Vinnica#wr me
Building configuration...
[OK]!!
Cisco2811-Vinnica#
получаем копию конфига в директории на tftp-сервере.
вторник, 26 октября 2010 г.
Настройка web-интерфейса RoundCube на RHEL 5.2
О программе.
RoundCube Webmail — это клиент для работы с электронной почтой с веб-интерфейсом, написанный на PHP с использованием CSS и XHTML и технологии AJAX. RoundCube Webmail устанавливается практически на любой сервер с поддержкой PHP и MySQL и предоставляет вам возможность работы с почтовыми ящиками по протоколам IMAP и SMTP.
Возможности программы
- Основана на PHP и MySQL
- Поддержка мультиязычности
- Полная поддержка MIME и HTML сообщений
- Вложения к письмам
- Поддержка IMAP
- Отправка писем сразу нескольким адресатам
- Простая адресная книга
- Система подсказки имени адресата при вводе
- Пересылка сообщений с вложениями
- Создание или удаление персональных папок
- Кэширование для ускорения доступа к письмам
- Поддержка внешнего SMTP сервера
- Расширенный пользовательский интерфейс
- Неограниченное количество пользователей и сообщений
- Полное изменение внешнего вида с помощью скинов
- Реализована область предпросмотра письма
- Проверка правописания
Делается допущение, что IMAP и SMTP серверы, MySQL сервер, а также сам RoundCube работают на одной машине с внутренним именем gw.ИМЯ_ФИЛИАЛА.office.com и внешним www.ИМЯ_ВНЕШНЕГО_ДОМЕНА (например, внутренний адрес — gw.nikolaev.office.com, внешний адрес — www.DOMAIN.nikolaev.ua). Разнести эти сервисы в разные места не составит большого труда, но тогда конфигурацию нужно будет соответствующим образом изменить.
Требования к установке RoundCube можно найти в файле INSTALL в корне архива с исходниками.
Основные требования:
- Поддержка вэб-сервером (Apache или Lighttpd) .htaccess
- PHP версии 5.2 и выше, включая
- PCRE, DOM, JSON, XML, Session, Sockets (необходимо)
- libiconv (рекомендуемо)
- mbstring, fileinfo, mcrypt (опционально)
- PHP с поддержкой OpenSSL
- MySQL (4.0.8 или выше), PostgreSQL, MSSQL
Проверка выполнения необходимых условий
Первым делом убеждаемся, что установлены все необходимые пакеты php.
$ rpm -qa | grep php
php-common-5.1.6-20.el5
php-cli-5.1.6-20.el5
php-mysql-5.1.6-20.el5
php-pdo-5.1.6-20.el5
php-5.1.6-20.el5
php-ldap-5.1.6-20.el5
$ php -v
PHP 5.1.6 (cli)
$ rpm -qa | grep mysql
mysql-5.0.45-7.el5
php-mysql-5.1.6-20.el5
mysql-server-5.0.45-7.el5
libdbi-dbd-mysql-0.8.1a-1.2.2
mysql-connector-odbc-3.51.12-2.2
mysql-5.0.45-7.el5
В данном случае версия php 5.1.6 меньше, чем в требованиях, а также не установлен пакет php-xml, отвечающий за поддержку расширения DOM. Требования к СУБД выполняются.
Обновление пакетов.
wget -c http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget -c http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
yum -y --enablerepo=remi,epel update mysql php
yum -y --enablerepo=remi,epel install php-xml (модуль dom.so)
yum -y --enablerepo=remi,epel install php-mbstring php-mcrypt
Проверяем версии ПО:
mysql —version
php —version
Возможные проблемы.
1. проблема
При возникновении следующих ошибок обновления mysql (для x86_64):
Transaction Check Error:
file /etc/my.cnf from install of mysql-libs-5.1.34-1.el5.remi.i386 conflicts with file from package mysql-5.0.45-7.el5.i386
file /usr/share/mysql/charsets/Index.xml from install of mysql-libs-5.1.34-1.el5.remi.i386 conflicts with file from package mysql-5.0.45-7.el5.i386
сделать:
yum remove mysql.i386
и затем снова запустить обновление php.
Если проблема осталась, запустите обновление mysql сначала:
yum -y --enablerepo=remi,epel update mysql
2. проблема:
ldd /usr/sbin/exim
выведет список разделяемых библиотек, необходимых для exim. Если там не окажется записи для какой-то библиотеки, необходимо проверить наличие ссылки на /usr/local/lib в файлах /etc/ld.so.conf.d/. Например, в выводе ldd /usr/sbin/exim libspf2 ссылается на пустое место.
ldd /usr/sbin/exim
**********
libcrypto.so.6 => /lib/libcrypto.so.6 (0x00203000)
libpcre.so.0 => /lib/libpcre.so.0 (0x006b7000)
libspf2.so.2 =>
***********
Ищем в файлах в каталоге /etc/ld.so.conf.d/ запись /usr/local/lib, если такой нет — добавляем ее в конец любого файла или создаем новый с данной записью. Выполняем следующую команду для обновления списка разделяемых библиотек.
/sbin/ldconfig -v | grep spf
Подготовка каталогов и распаковка исходников
cd /var/www
tar xzf roundcubemail-0.4.2.tar.gz
mv roundcubemail-0.4.2 rcube
cd rcube
chmod 777 temp logs
cd config
cp db.inc.php.dist db.inc.php
cp main.inc.php.dist main.inc.php
Подготовка базы данных
mysql -u root -p
> create database rcubemail;
> grant all on rcubemail.* to rcube@'localhost' identified by 'Rcube_pasS';
> flush privileges;
> exit
Проблема 1:
Если получаете ошибку после flush privileges;
ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist
То можно запустить
mysql_fix_privilege_tables --password=SUPER_PASS_WHICH_I_WILL_NEVER_SAY
Для создания таблиц в только что созданной БД можно воспользоваться 2-мя методами — инициализировать в процессе автоматической настройки БД или выполнить все необходимые действия самим. Инициализация базы осуществляется при помощи sql-скрипта mysql.initial.sql, который распространяется в дистрибутиве RoundCube.
Установка таблиц Mysql
mysql -u rcube -pRcube_pasS rcubemail < mysql.initial.sql
Настройка сервера Mysql5
cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
skip-networking
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Настройка web-сервера Apache2
vi /etc/httpd/conf.d/rcube.conf
Alias /rcube /var/www/rcube
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REMOTE_HOST} !10
RewriteCond %{REMOTE_HOST} !172
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=302,L]
<Directory /var/www/rcube/>
Order Deny,Allow
DirectoryIndex index.php
Deny from All
Allow from 127.0.0.1 10.1 172.16.0.0/12
</Directory>
cat /etc/httpd/conf.d/ssl.conf
Внутри секции <VirtualHost _default_:443> вставляем следующее:
<Directory "/var/www/rcube">
Order deny,allow
Allow from 127.0.0.1
</Directory>
SSLCertificateFile /etc/pki/tls/certs/www.YOUR_DOMAIN.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.YOUR_DOMAIN.key
Возможные ошибки:
Если у Вас используются подкаталоги в директории /var/www, например, /var/www/price, для которых Вы хотели бы отменить принудительное использование https — обратите внимание на директивы RewriteCond в файле /etc/httpd/conf.d/rcube.conf. Например, запрет на принудительное использование https для URL http://www.YOUR_DOMAIN.UA/price/price.zip, будет внесение в файл rcube.conf строчки:
RewriteCond %{REQUEST_URI} !/price/
ДО строчки RewriteRule.
Настройка полномочий/разрешений на файлы с сертификатом и ключом.
cd /etc/pki/tls/private/
chown apache.0 www.YOUR_DOMAIN.key
chmod 400 www.YOUR_DOMAIN.key
cd /etc/pki/tls/certs/
chown 0.0 www.YOUR_DOMAIN.crt
chmod 444 www.YOUR_DOMAIN.crt
Установка RoundCube
Перейти по ссылке http://gw.nikolaev.office.com/rcube/installer/ и следовать инструкциям мастера установки. На первой странице отобразятся некоторые требования, в случае если видите красные сообщения «NOT OK», то нужно доустановить или разрешить соответствующие модули.
Доустановить/включить обходимые модули для php
php -m | grep НАЗВАНИЕ_МОДУЛЯ, например, php -m | grep dom
Если в выводе не отображается ничего, либо ошибка поиска, то необходимо доустановить модуль с помощью yum, либо активировать модуль создав файл в каталоге /etc/php.d/НАЗВАНИЕ_МОДУЛЯ.ini с именем модуля и соответствующим содержанием, например:
cat /etc/php.d/dom.ini
extension=dom.so
Возможные ошибки
Ошибка в лог-файле /var/log/httpd/error_log
[error] [client 10.1.XX.XX] PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EEST/3.0/DST' instead in /var/www/rcube/config/main.inc.php on line 486
Для устранения в php.ini добавить/изменить строку:
[Date]
date.timezone = Europe/Kiev
Перезапустить httpd командой и возобновить установку:
sudo /sbin/service httpd restart
После установки удалить каталог installer.
rm -fr /var/www/rcube/installer
Настройка RoundCube
Конфигурация БД rcubemail хранится в файле db.inc.php. Изменяем строчку под свои параметры БД, например:
$rcmail_config['db_dsnw'] = 'mysql://rcube:Rcube_pasS@localhost/rcubemail';
Главный конфигурационный файл main.inc.php содержит множество опций, из которых я изменил только несколько. Все опции подробно описаны.
// $rcmail_config['enable_installer'] = true;
// Принудительно использовать https для небезопасного соединения
$rcmail_config['force_https'] = true;
// массив imap-серверов
$rcmail_config['default_host'] = "gw.nikolaev.office.com";
// предпочитаемый тип imap-аутентификации
$rcmail_config['imap_auth_type'] = PLAIN;
// имя smtp-сервера
$rcmail_config['smtp_server'] = 'gw.nikolaev.office.com';
// подставлять при аутентификации имя текущего пользователя
$rcmail_config['smtp_user'] = '%u';
// подставлять при аутентификации пароль текущего пользователя
$rcmail_config['smtp_pass'] = '%p';
// предпочитаемый тип smtp-аутентификации
$rcmail_config['smtp_auth_type'] = 'PLAIN';
// Отключение встроенного spell checker, проверяющего данные посредством Google
$rcmail_config['enable_spellcheck'] = false;
// Тип персональной адресной книги (ldap или sql)
$rcmail_config['address_book_type'] = 'sql';
// описание LDAP-каталога (AD, доступен только для чтения)
$rcmail_config['ldap_public']['FIRMA'] = array(
'name' => 'FIRMA address book',
'hosts' => array('vnk-dc02.nikolaev.office.com','vdp-dc04.office.com'),
'port' => 3268,
'use_tls' => false,
'user_specific' => false,
'base_dn' => 'dc=office,dc=com',
'bind_dn' => 'nikolaev\user',
'bind_pass' => 'USER_PASS',
'writable' => false,
'LDAP_Object_Classes' => array("top", "inetOrgPerson"),
'required_fields' => array("cn", "sn", "mail"),
'LDAP_rdn' => 'mail',
'ldap_version' => 3, // использовать LDAPv3
'search_fields' => array('mail', 'cn'), // поля поиска
'name_field' => 'cn', // поле, представляющее контакт
'email_field' => 'mail', // поле, представляющее e-mail контакта
'surname_field' => 'sn', // поле, представляющее фамилию контакта
'firstname_field' => 'gn', // поле, представляющее имя контакта
'sort' => 'cn', // Поле, по которому сортируются результаты поиска.
'scope' => 'sub', // режим поиска: sub|base|list
'filter' => '(&(|(objectclass=user)(objectclass=contact))(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=*))',
'fuzzy_search' => true, // Разрешение wildcard поиска
'sizelimit' => '0', //Ограничение количества записей результата, 0 — без лимита.
'timelimit' => '0', // Число секунд для поиска, 0 — без ограничений.
);
// Упорядоченный массив адресных книг, в которых осуществляется поиск
$rcmail_config['autocomplete_addressbooks'] = array('sql','FIRMA');
// Кодировка по умолчанию для принимаемых сообщений
$rcmail_config['default_charset'] = 'Windows-1251';
// Строка заголовка, было Roundcube, я убрал.
$rcmail_config['product_name'] = '';
Украшательства
Заменить файл /var/www/rcube/skins/default/images/roundcube_logo.png на свой логотип с тем же именем.
/var/www/rcube/program/localization/ru_RU/labels.inc
Изменить по своему усмотрению строку:
$labels['welcome'] = 'Добро пожаловать в Firma-BRANCH Webmail';
Обновление до новой версии
1.Скачать новую версию
2.Сделать backup каталога /var/www/rcube и используемой БД
3.Переименовать каталог /var/www/rcube в /var/www/rcube-old
4.Создать новый каталог и распаковать туда новую версию
5.Скопировать старые config/main.inc.php и config/db.inc.php файлы в каталог config новой версии
6.Проверить файлы на наличие новых и изменения старых опций
7.Проверить в каталоге SQL наличие файлов "*.update.sql" и следовать инструкциям в них.
Дополнительные настройки:
http://trac.roundcube.net/wiki/Howto_Performance
Плагины
DKIMSTATUS
DKIMSTATUS — плагин для отображения статуса сигнатуры DKIM в каждом сообщении. Домашняя страница проекта в списке литературы.
Установка.
Распаковать архив в директорию с плагинами и добавить 'dkimstatus' в список активных плагинов в конфигурационном файле main.inc.php. Например,
// List of active plugins (in plugins/ directory)
$rcmail_config'plugins' = array('managesieve', 'vcard_attachments', 'dkimstatus');
Известные проблемы:
http://trac.roundcube.net/wiki/Howto_KnownIssues
Литература:
http://trac.roundcube.net/wiki/Howto_Install
http://blogs.ungrund.org/xio/2008/08/13/roundcube-on-debian-testing/
http://trac.roundcube.net/wiki/User_Guide_RU
http://jve.linuxwall.info/blog/index.php?pages/DKIMSTATUS-plugin-for-roundcube
RoundCube Webmail — это клиент для работы с электронной почтой с веб-интерфейсом, написанный на PHP с использованием CSS и XHTML и технологии AJAX. RoundCube Webmail устанавливается практически на любой сервер с поддержкой PHP и MySQL и предоставляет вам возможность работы с почтовыми ящиками по протоколам IMAP и SMTP.
Возможности программы
- Основана на PHP и MySQL
- Поддержка мультиязычности
- Полная поддержка MIME и HTML сообщений
- Вложения к письмам
- Поддержка IMAP
- Отправка писем сразу нескольким адресатам
- Простая адресная книга
- Система подсказки имени адресата при вводе
- Пересылка сообщений с вложениями
- Создание или удаление персональных папок
- Кэширование для ускорения доступа к письмам
- Поддержка внешнего SMTP сервера
- Расширенный пользовательский интерфейс
- Неограниченное количество пользователей и сообщений
- Полное изменение внешнего вида с помощью скинов
- Реализована область предпросмотра письма
- Проверка правописания
Делается допущение, что IMAP и SMTP серверы, MySQL сервер, а также сам RoundCube работают на одной машине с внутренним именем gw.ИМЯ_ФИЛИАЛА.office.com и внешним www.ИМЯ_ВНЕШНЕГО_ДОМЕНА (например, внутренний адрес — gw.nikolaev.office.com, внешний адрес — www.DOMAIN.nikolaev.ua). Разнести эти сервисы в разные места не составит большого труда, но тогда конфигурацию нужно будет соответствующим образом изменить.
Требования к установке RoundCube можно найти в файле INSTALL в корне архива с исходниками.
Основные требования:
- Поддержка вэб-сервером (Apache или Lighttpd) .htaccess
- PHP версии 5.2 и выше, включая
- PCRE, DOM, JSON, XML, Session, Sockets (необходимо)
- libiconv (рекомендуемо)
- mbstring, fileinfo, mcrypt (опционально)
- PHP с поддержкой OpenSSL
- MySQL (4.0.8 или выше), PostgreSQL, MSSQL
Проверка выполнения необходимых условий
Первым делом убеждаемся, что установлены все необходимые пакеты php.
$ rpm -qa | grep php
php-common-5.1.6-20.el5
php-cli-5.1.6-20.el5
php-mysql-5.1.6-20.el5
php-pdo-5.1.6-20.el5
php-5.1.6-20.el5
php-ldap-5.1.6-20.el5
$ php -v
PHP 5.1.6 (cli)
$ rpm -qa | grep mysql
mysql-5.0.45-7.el5
php-mysql-5.1.6-20.el5
mysql-server-5.0.45-7.el5
libdbi-dbd-mysql-0.8.1a-1.2.2
mysql-connector-odbc-3.51.12-2.2
mysql-5.0.45-7.el5
В данном случае версия php 5.1.6 меньше, чем в требованиях, а также не установлен пакет php-xml, отвечающий за поддержку расширения DOM. Требования к СУБД выполняются.
Обновление пакетов.
wget -c http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget -c http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
yum -y --enablerepo=remi,epel update mysql php
yum -y --enablerepo=remi,epel install php-xml (модуль dom.so)
yum -y --enablerepo=remi,epel install php-mbstring php-mcrypt
Проверяем версии ПО:
mysql —version
php —version
Возможные проблемы.
1. проблема
При возникновении следующих ошибок обновления mysql (для x86_64):
Transaction Check Error:
file /etc/my.cnf from install of mysql-libs-5.1.34-1.el5.remi.i386 conflicts with file from package mysql-5.0.45-7.el5.i386
file /usr/share/mysql/charsets/Index.xml from install of mysql-libs-5.1.34-1.el5.remi.i386 conflicts with file from package mysql-5.0.45-7.el5.i386
сделать:
yum remove mysql.i386
и затем снова запустить обновление php.
Если проблема осталась, запустите обновление mysql сначала:
yum -y --enablerepo=remi,epel update mysql
2. проблема:
ldd /usr/sbin/exim
выведет список разделяемых библиотек, необходимых для exim. Если там не окажется записи для какой-то библиотеки, необходимо проверить наличие ссылки на /usr/local/lib в файлах /etc/ld.so.conf.d/. Например, в выводе ldd /usr/sbin/exim libspf2 ссылается на пустое место.
ldd /usr/sbin/exim
**********
libcrypto.so.6 => /lib/libcrypto.so.6 (0x00203000)
libpcre.so.0 => /lib/libpcre.so.0 (0x006b7000)
libspf2.so.2 =>
***********
Ищем в файлах в каталоге /etc/ld.so.conf.d/ запись /usr/local/lib, если такой нет — добавляем ее в конец любого файла или создаем новый с данной записью. Выполняем следующую команду для обновления списка разделяемых библиотек.
/sbin/ldconfig -v | grep spf
Подготовка каталогов и распаковка исходников
cd /var/www
tar xzf roundcubemail-0.4.2.tar.gz
mv roundcubemail-0.4.2 rcube
cd rcube
chmod 777 temp logs
cd config
cp db.inc.php.dist db.inc.php
cp main.inc.php.dist main.inc.php
Подготовка базы данных
mysql -u root -p
> create database rcubemail;
> grant all on rcubemail.* to rcube@'localhost' identified by 'Rcube_pasS';
> flush privileges;
> exit
Проблема 1:
Если получаете ошибку после flush privileges;
ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist
То можно запустить
mysql_fix_privilege_tables --password=SUPER_PASS_WHICH_I_WILL_NEVER_SAY
Для создания таблиц в только что созданной БД можно воспользоваться 2-мя методами — инициализировать в процессе автоматической настройки БД или выполнить все необходимые действия самим. Инициализация базы осуществляется при помощи sql-скрипта mysql.initial.sql, который распространяется в дистрибутиве RoundCube.
Установка таблиц Mysql
mysql -u rcube -pRcube_pasS rcubemail < mysql.initial.sql
Настройка сервера Mysql5
cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
skip-networking
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Настройка web-сервера Apache2
vi /etc/httpd/conf.d/rcube.conf
Alias /rcube /var/www/rcube
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REMOTE_HOST} !10
RewriteCond %{REMOTE_HOST} !172
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=302,L]
<Directory /var/www/rcube/>
Order Deny,Allow
DirectoryIndex index.php
Deny from All
Allow from 127.0.0.1 10.1 172.16.0.0/12
</Directory>
cat /etc/httpd/conf.d/ssl.conf
Внутри секции <VirtualHost _default_:443> вставляем следующее:
<Directory "/var/www/rcube">
Order deny,allow
Allow from 127.0.0.1
</Directory>
SSLCertificateFile /etc/pki/tls/certs/www.YOUR_DOMAIN.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.YOUR_DOMAIN.key
Возможные ошибки:
Если у Вас используются подкаталоги в директории /var/www, например, /var/www/price, для которых Вы хотели бы отменить принудительное использование https — обратите внимание на директивы RewriteCond в файле /etc/httpd/conf.d/rcube.conf. Например, запрет на принудительное использование https для URL http://www.YOUR_DOMAIN.UA/price/price.zip, будет внесение в файл rcube.conf строчки:
RewriteCond %{REQUEST_URI} !/price/
ДО строчки RewriteRule.
Настройка полномочий/разрешений на файлы с сертификатом и ключом.
cd /etc/pki/tls/private/
chown apache.0 www.YOUR_DOMAIN.key
chmod 400 www.YOUR_DOMAIN.key
cd /etc/pki/tls/certs/
chown 0.0 www.YOUR_DOMAIN.crt
chmod 444 www.YOUR_DOMAIN.crt
Установка RoundCube
Перейти по ссылке http://gw.nikolaev.office.com/rcube/installer/ и следовать инструкциям мастера установки. На первой странице отобразятся некоторые требования, в случае если видите красные сообщения «NOT OK», то нужно доустановить или разрешить соответствующие модули.
Доустановить/включить обходимые модули для php
php -m | grep НАЗВАНИЕ_МОДУЛЯ, например, php -m | grep dom
Если в выводе не отображается ничего, либо ошибка поиска, то необходимо доустановить модуль с помощью yum, либо активировать модуль создав файл в каталоге /etc/php.d/НАЗВАНИЕ_МОДУЛЯ.ini с именем модуля и соответствующим содержанием, например:
cat /etc/php.d/dom.ini
extension=dom.so
Возможные ошибки
Ошибка в лог-файле /var/log/httpd/error_log
[error] [client 10.1.XX.XX] PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EEST/3.0/DST' instead in /var/www/rcube/config/main.inc.php on line 486
Для устранения в php.ini добавить/изменить строку:
[Date]
date.timezone = Europe/Kiev
Перезапустить httpd командой и возобновить установку:
sudo /sbin/service httpd restart
После установки удалить каталог installer.
rm -fr /var/www/rcube/installer
Настройка RoundCube
Конфигурация БД rcubemail хранится в файле db.inc.php. Изменяем строчку под свои параметры БД, например:
$rcmail_config['db_dsnw'] = 'mysql://rcube:Rcube_pasS@localhost/rcubemail';
Главный конфигурационный файл main.inc.php содержит множество опций, из которых я изменил только несколько. Все опции подробно описаны.
// $rcmail_config['enable_installer'] = true;
// Принудительно использовать https для небезопасного соединения
$rcmail_config['force_https'] = true;
// массив imap-серверов
$rcmail_config['default_host'] = "gw.nikolaev.office.com";
// предпочитаемый тип imap-аутентификации
$rcmail_config['imap_auth_type'] = PLAIN;
// имя smtp-сервера
$rcmail_config['smtp_server'] = 'gw.nikolaev.office.com';
// подставлять при аутентификации имя текущего пользователя
$rcmail_config['smtp_user'] = '%u';
// подставлять при аутентификации пароль текущего пользователя
$rcmail_config['smtp_pass'] = '%p';
// предпочитаемый тип smtp-аутентификации
$rcmail_config['smtp_auth_type'] = 'PLAIN';
// Отключение встроенного spell checker, проверяющего данные посредством Google
$rcmail_config['enable_spellcheck'] = false;
// Тип персональной адресной книги (ldap или sql)
$rcmail_config['address_book_type'] = 'sql';
// описание LDAP-каталога (AD, доступен только для чтения)
$rcmail_config['ldap_public']['FIRMA'] = array(
'name' => 'FIRMA address book',
'hosts' => array('vnk-dc02.nikolaev.office.com','vdp-dc04.office.com'),
'port' => 3268,
'use_tls' => false,
'user_specific' => false,
'base_dn' => 'dc=office,dc=com',
'bind_dn' => 'nikolaev\user',
'bind_pass' => 'USER_PASS',
'writable' => false,
'LDAP_Object_Classes' => array("top", "inetOrgPerson"),
'required_fields' => array("cn", "sn", "mail"),
'LDAP_rdn' => 'mail',
'ldap_version' => 3, // использовать LDAPv3
'search_fields' => array('mail', 'cn'), // поля поиска
'name_field' => 'cn', // поле, представляющее контакт
'email_field' => 'mail', // поле, представляющее e-mail контакта
'surname_field' => 'sn', // поле, представляющее фамилию контакта
'firstname_field' => 'gn', // поле, представляющее имя контакта
'sort' => 'cn', // Поле, по которому сортируются результаты поиска.
'scope' => 'sub', // режим поиска: sub|base|list
'filter' => '(&(|(objectclass=user)(objectclass=contact))(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=*))',
'fuzzy_search' => true, // Разрешение wildcard поиска
'sizelimit' => '0', //Ограничение количества записей результата, 0 — без лимита.
'timelimit' => '0', // Число секунд для поиска, 0 — без ограничений.
);
// Упорядоченный массив адресных книг, в которых осуществляется поиск
$rcmail_config['autocomplete_addressbooks'] = array('sql','FIRMA');
// Кодировка по умолчанию для принимаемых сообщений
$rcmail_config['default_charset'] = 'Windows-1251';
// Строка заголовка, было Roundcube, я убрал.
$rcmail_config['product_name'] = '';
Украшательства
Заменить файл /var/www/rcube/skins/default/images/roundcube_logo.png на свой логотип с тем же именем.
/var/www/rcube/program/localization/ru_RU/labels.inc
Изменить по своему усмотрению строку:
$labels['welcome'] = 'Добро пожаловать в Firma-BRANCH Webmail';
Обновление до новой версии
1.Скачать новую версию
2.Сделать backup каталога /var/www/rcube и используемой БД
3.Переименовать каталог /var/www/rcube в /var/www/rcube-old
4.Создать новый каталог и распаковать туда новую версию
5.Скопировать старые config/main.inc.php и config/db.inc.php файлы в каталог config новой версии
6.Проверить файлы на наличие новых и изменения старых опций
7.Проверить в каталоге SQL наличие файлов "*.update.sql" и следовать инструкциям в них.
Дополнительные настройки:
http://trac.roundcube.net/wiki/Howto_Performance
Плагины
DKIMSTATUS
DKIMSTATUS — плагин для отображения статуса сигнатуры DKIM в каждом сообщении. Домашняя страница проекта в списке литературы.
Установка.
Распаковать архив в директорию с плагинами и добавить 'dkimstatus' в список активных плагинов в конфигурационном файле main.inc.php. Например,
// List of active plugins (in plugins/ directory)
$rcmail_config'plugins' = array('managesieve', 'vcard_attachments', 'dkimstatus');
Известные проблемы:
http://trac.roundcube.net/wiki/Howto_KnownIssues
Литература:
http://trac.roundcube.net/wiki/Howto_Install
http://blogs.ungrund.org/xio/2008/08/13/roundcube-on-debian-testing/
http://trac.roundcube.net/wiki/User_Guide_RU
http://jve.linuxwall.info/blog/index.php?pages/DKIMSTATUS-plugin-for-roundcube
Заметка о настройке IPSec на Cisco871.
IPsec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, позволяет осуществлять подтверждение подлинности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет.
Протоколы IPsec работают на сетевом уровне (уровень 3 модели OSI). IPsec-протоколы можно разделить на два класса: протоколы отвечающие за защиту потока передаваемых пакетов и протоколы обмена криптографическими ключами. На настоящий момент определён только один протокол обмена криптографическими ключами — IKE (Internet Key Exchange) — и два протокола, обеспечивающих защиту передаваемого потока: ESP (Encapsulating Security Payload — инкапсуляция зашифрованных данных) обеспечивает целостность и конфиденциальность передаваемых данных, в то время как AH (Authentication Header — аутентифицирующий заголовок) гарантирует только целостность потока (передаваемые данные не шифруются).
Существует два режима работы IPsec: транспортный режим и туннельный режим.
В транспортном режиме шифруется (или подписывается) только информативная часть IP-пакета. Маршрутизация не затрагивается, так как заголовок IP пакета не изменяется (не шифруется). Транспортный режим как правило используется для установления соединения между хостами. Он может также использоваться между шлюзами, для защиты туннелей, организованных каким-нибудь другим способом (IP tunnel, GRE и др.).
В туннельном режиме IP-пакет шифруется целиком. Для того, чтобы его можно было передать по сети, он помещается в другой IP-пакет. По существу, это защищённый IP-туннель. Туннельный режим может использоваться для подключения удалённых компьютеров к виртуальной частной сети или для организации безопасной передачи данных через открытые каналы связи (например, Интернет) между шлюзами для объединения разных частей виртуальной частной сети.
Режимы IPsec не являются взаимоисключающими. На одном и том же узле некоторые SA могут использовать транспортный режим, а другие — туннельный.
Схема подключения (рисовал в GNS, сильно не пинайте):где LAN_192.168.100.144 - это пример подсети представительства.
Требования: компьютеры из подсети представительства должны получать доступ к ресурсам ЦО (подсеть 10.0.0.0/8) и филиала (подсети 172.ХХ.0.0/16).
Итак, приступим.
1. Подключаем синий кабель в консольный порт Cisco871, настраиваем параметры подключения Hyperterm или Putty, включаем питание Cisco871 и ждем пока появится приглашение для входа
2. Логин/пароль для первого входа — cisco/cisco, как написано в приглашении.
3. Удаляем существующий конфигурационный файл startup-config (нам он при настройке не понадобится, потому как придётся удалять 5-7 лишних настроек)
yourname#wr erase
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]
[OK]
Erase of nvram: complete
yourname#
*Mar 1 00:11:16.363: %SYS-7-NV_BLOCK_INIT: Initialized the geometry of nvram
4. Проверяем, что конфигурационный файл удалился (можно сокращать, если команда уникальна).
yourname#sh start
startup-config is not present
5. Перезагрузка маршрутизатора в новый (пустой) конфигурационный файл.
yourname#reload
System configuration has been modified. Save? [yes/no]: no
Proceed with reload? [confirm]
6. Когда маршрутизатор загрузился — отказываемся от диалога начальной конфигурации, так как будем все конфигурировать вручную.
--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]:
% Please answer 'yes' or 'no'.
Would you like to enter the initial configuration dialog? [yes/no]: n
Press RETURN to get started!
7. Переходим в привилегированный режим
Router>en
8. Переходим в режим конфигурации (приглашение командной строки C871-Apt24Nk(config)#
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
9. Задать имя маршрутизатора
C871-Apt24Nk(config)#hostname C871-Apt24Pl
10. Определить пул адресов, раздаваемых по DHCP, с именем, например, Apt24Pl_POOL и такие параметры как подсеть, домен, маршрутизатор по умолчанию и список серверов днс.
ip dhcp pool Apt24Pl_POOL
network 192.168.100.144 255.255.255.240
domain-name Poltava.Office.com
default-router 192.168.100.145
dns-server 10.1.11.2 10.1.11.3
Если надо сделать постоянную привязку IP-MAC, то нужно сделать отдельный пул с необходимыми параметрами. client-identifier формируется как 01+MAC, т.е. начинается на 01 далее идет MAC-адрес.
ip dhcp pool Apt24KhKassaSRV_POOL
host 192.168.100.147 255.255.255.240
client-identifier 0100.2618.d976.08
domain-name Poltava.Office.com
default-router 192.168.100.145
dns-server 10.1.11.2 10.1.11.3
11.Исключаем IP-адрес маршрутизатора из пула адресов, выдаваемых DHCP
ip dhcp excluded-address 192.168.100.145
12. Задаём имя домена, в котором находится маршрутизатор (необходимо для ssh)
ip domain name Poltava.Office.com
13. Задаем IP-адреса серверов имен, полученные от провайдера
ip name-server 212.XXX.YY.5
ip name-server 212.XXX.YY.9
ip name-server 10.1.11.2
14. Создаем своего пользователя с правами администратора
username admin privilege 15 secret ***********
15. Настройка IKE, ISAKMP Policy
# создаем полиси с номером 20, первыми отрабатываются полиси с наименьшими номерами, номера полиси на удаленных устройствах могут не совпадать.
crypto isakmp policy 20
# шифрование. Бывает aes 128,192,156; des; 3des
encr aes
# аутентификация удаленной стороны по заданному ключу
authentication pre-share
# для обмена ключами использовать Diffie-Helman group 2 (1024 бит)
group 2
# время жизни ключа 28800 секунд (8 часов)
lifetime 28800
16.Добавляем Pre-shared key для удаленного хоста
crypto isakmp key *********-Ku-Ku address 195.24.XX.10 no-xauth
17.Создаем access-list для трафика, который будет направляться в туннель. Все пакеты из локальной подсети аптеки на внутренние адреса компании.
ip access-list extended IPSEC_TRAFFIC
permit ip 192.168.100.144 0.0.0.15 10.0.0.0 0.255.255.255
permit ip 192.168.100.144 0.0.0.15 172.16.0.0 0.15.255.255
permit ip 192.168.100.144 0.0.0.15 192.168.0.0 0.0.255.255
18.Создание transform-set
crypto ipsec transform-set VPNSET_AES_SHA esp-aes esp-sha-hmac
19.Создание crypto map, которая объединяет transform-set, isakmp-policy, access-list и удаленный хост.
# Создать можно ТОЛЬКО одну crypto map для одного исходящего интерфейса. В одной crypto map можно указать несколько ipsec-туннелей, используя порядковый номер, который обрабатывается в порядке возрастания.
crypto map APT24MAP 20 ipsec-isakmp
# описание
description tunnel_to_cisco
# указать удаленный хост
set peer 195.24.156.130
# указать transform-set
set transform-set VPNSET_AES_SHA
# указать access-list
match address IPSEC_TRAFFIC
20.Настройка внутреннего интерфейса vlan 1
interface Vlan1
ip address 192.168.100.145 255.255.255.240
# указываем, что данный интерфейс участвует в nat изнутри
ip nat inside
21.Настройка внешнего интерфейса FastEthernet4
interface FastEthernet4
ip address 89.**.***.** 255.255.255.252
# указываем, что данный интерфейс участвует в nat снаружи
ip nat outside
# повесить crypto map на интерфейс
crypto map APT24MAP
Если вы счастливый обладатель pppoe-соединения с провайдером: изменить следует настройки исходящего интерфейса и указания маршрута по умолчанию, а также изменить правило ip nat inside ....
Описываем ФИЗИЧЕСКИЙ ИНТЕРФЕЙС
interface FastEthernet4
no ip address
ip virtual-reassembly
no ip route-cache cef
no ip route-cache
duplex auto
speed auto
pppoe enable group global
pppoe-client dial-pool-number 1
Описываем ЛОГИЧЕСКИЙ ИНТЕРФЕЙС.
interface Dialer0
ip address negotiated
ip mtu 1492
ip nat outside
ip virtual-reassembly
encapsulation ppp
dialer pool 1
dialer-group 1
no cdp enable
ppp authentication chap pap callin
ppp chap hostname ЛОГИН
ppp chap password 0 ПАРОЛЬ
ppp pap sent-username ЛОГИН password 0 ПАРОЛЬ
crypto map APT24MAP
Тогда ip route и ip nat inside станет таким:
ip route 0.0.0.0 0.0.0.0 Dialer0
ip nat inside source list NONAT interface Dialer0 overload
22.Создание access-list для указания правил nat
ВАЖНО: первые 3 строчки запрещают nat для внутренних адресов компании, потому, как nat применяется к интерфейсу ДО ipsec. Без данной настройки nat заберет пакет, отправит его на роутер по умолчанию, который, увидя «серый» внутренний IP, удалит пакет.
ip access-list extended NONAT.
deny ip any 10.0.0.0 0.255.255.255
deny ip any 172.16.0.0 0.15.255.255
deny ip any 192.168.0.0 0.0.255.255
permit ip 192.168.100.144 0.0.0.15 any
23.Собственно, правило, описывающее nat.
ip nat inside source list NONAT interface FastEthernet4 overload
24.Добавим ключ rsa для корректной работы ssh
C871-Apt24Nk(config)#crypto key generate rsa modulus 1024
25. Параметры для логгирования сообщений
C871-Apt24Nk(config)#service timestamps log datetime msec localtime show-timezone
26. Настройка автосохранения конфига на tftp-сервере.
C871-Apt24Nk(config)#ip tftp source-interface Vlan1
C871-Apt24Nk(config)#archive
C871-Apt24Nk(config-archive)#path tftp://IP_OR_NAME_OF_TFTP-SERVER/cisco/BRANCH/XX-branch-config
C871-Apt24Nk(config-archive)#write-memory
Теперь каждый раз после сохранения конфигурации командой write, копия конфигурационного файла будет отправляться на tftp сервер, с именем XX-branch-config-[+1] и мы будем иметь на сервере все версии конфигов (XX-branch-config-1, XX-branch-config-2, XX-branch-config-3 и.т.д.). Для тех кто не понял, BRANCH - название филиала, например, nikolaev, XX - двубуквенный код филиала, например, nk, pl kiev (исключение) и т.п.
27. Настройка синхронизации времени и часового пояса. Параметр source указывает на интерфейс, с которого будут отправляться запросы на синхронизацию времени.
C871-Apt24Nk(config)#ntp server 10.1.11.2 source Vlan1
C871-Apt24Nk(config)#ntp server 10.1.11.3 source Vlan1
C871-Apt24Nk(config)#clock timezone KIEV 2
C871-Apt24Nk(config)#clock summer-time KIEV recurring last Sun Mar 2:00 last Sun Oct 3:00
28. Магическая строчка. Без нее интернета НЕ будет.
ip route 0.0.0.0 0.0.0.0 ИСХОДЯЩИЙ_ИНТЕРФЕЙС (например, Dialer0 или Fa4)
или
ip route 0.0.0.0 0.0.0.0 GATEWAY_OF_YOUR_PROVIDER
29.Выходим из режима конфигурации
C871-Apt24Nk(config)#^Z
30.Записываем (сохраняем) конфигурационный файл startup-config
C871-Apt24Nk#wr me
Building configuration...
[OK]
Литература:
http://ru.wikipedia.org/wiki/IPsec
http://www.xgu.ru/wiki/IPsec_в_Cisco
Первое сообщение в блоге.
Немного о том, о чем мне хотелось бы рассказывать в данном блоге. В первую очередь это будет записная книжка. Здесь будут публиковаться небольшие заметки/наработки по профилю работы системным администратором. За то время, что я занимаюсь системным администрированием, скопилось много материала, который надо бы перебрать, обработать. Ну чтож... посмотрим что из этого выйдет.
Подписаться на:
Сообщения (Atom)