22 апр. 2009 г.

Exim4 - включаем обработку почтовых алиасов в ubuntu 8.10

В данной заметке я расскажу как включить обработку системных почтовых алиасов Exim4 стандартной конфигурации Ubuntu 8.10.

Здесь рассматривается конфигурация на основе множества файлов в директории /etc/exim4/conf.d, конфигурация на основе плоского файла рассматриваться не будет.

Итак, в юникс-системах для указания алиасов почтовых адресов используется файл /etc/aliases.
Естественным будет использовать именно его для задания псевдонимов.

Посмотрим исходное состояние данного файла:

#cat /etc/aliases
# See man 5 aliases for format
postmaster: root
root:

Здесь видим, что для ящика "postmaster" уже задан алиас "root".
Так как данный сервер у меня является только фронтэндом для M$ Exchange 2007, и не имеет собственного почтового хранилища и pop3 сервера, естественным будет указать в качестве алиаса для "root" адрес группы рассылки администраторов на основном внутреннем почтовом сервере. Например:

#cat /etc/aliases
# See man 5 aliases for format
postmaster: root
root: admins@zavod.ru

Далее разрешим в Exim4 обработку файла псевдонимов.
В стандартной конфигурации дистрибутива ubuntu 8.10 (возможно и в Debian, не проверял) Exim4 имеет готовый маршрутизатор - находится в файле /etc/exim4/conf.d/router/400_exim4-config_system_aliases.

По умолчанию все строки данного файла закоментированы.
Нам необходимо разкомментировать все строки начиная с "system_aliases".
В моем случае разкомментированы следующие строки:

#grep -v '#' /etc/exim4/conf.d/router/400_exim4-config_system_aliases
system_aliases:
debug_print = "R: system_aliases for $local_part@$domain"
driver = redirect
domains = +local_domains
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}

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

делаем
#/etc/init.d/exim4 restart


и проверяем работу
$exim -bh <${some_ipaddr}>


На этом все. - алиасы работают и мы уже получаем отчеты от демона crond о выполнении заданий.

14 апр. 2009 г.

EQL есть EQU или очередные чудеса Window$

Вот очень понадобилось написать скрипт под виндой.
По старой традиции использую CMD/BAT.

Нужно мне было проверить простое условие - строка1 равна строке2 или нет.
итак делаем >help IF

Изменение команды IF при включении расширенной обработки команд:

IF [/I] строка1 оператор_сравнения строка2 команда
IF CMDEXTVERSION число команда
IF DEFINED переменная команда

где оператор_сравнения принимает следующие значения:

EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно

Отлично! - EQL мне и нужно, обрадовался я и начал писать.

Проверяем равно ли расширение файла
IF /I %%~xF EQL .tmp

И вдруг при выполнении получаю "Непредвиденное появление: EQL."
Был сильно озадачен и долго не мог понять где ошибка...
Погуглил и нашел на форуме что писать нужно не EQL, EQU!!! - и обнаружено это было только путем подбора!!!

Такие казусы окончательно отбивают охоту работать с чем-либо от M$.

9 апр. 2009 г.

Vnstat - смотрим статистику через веб

Итак, vnstat настроен и собирает статистику.

Не всегда удобно заходить на консоль сервера только для того чтобы посмотреть статистику. Иногда нужно предоставить доступ третьим лицам, а консольный доступ давать не хотелось бы.

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

Исходим из того что веб-сервер у нас уже установлен и настроен, дело за малым - написать скрипт!

Сервер линуксовый и чтобы не тянуть лишних зависимостей за скриптом, пишем на Shell:


#!/bin/sh

INTERFACES="LAN:eth0 WAN:eth1 DMZ:eth2"

echo "Content-Type: text/html; charset=utf8 \n\n";
echo '<HTML><head><link rel="stylesheet" href="/style.css" type="text/css" /></head>';
echo "<BODY>";

# evalute variables
for int in `echo ${INTERFACES} \
| sed -e 's/ /\n/g'`;
do
int_name=`echo ${int} | cut --delimiter=: --fields=1`
intf=`echo ${int} | cut --delimiter=: --fields=2-2`

echo "<p><h2>${int_name} interface (${intf})</h2>"
echo '<pre class="tab1">'
vnstat -q -d -i ${intf}
echo "</pre></p>"

done;


Переменная INTERFACES определяет пары "Название интерфейса"-интерфейс по которым необходимо выводить статистику.

Размещаем этот скрипт на сервере, где снимаем статистику с интерфейсов, и настраиваем веб-сервер.



7 апр. 2009 г.

Считаем трафик на интерфейсах сервера

Дано:
Почтовый сервер на базе Ubuntu 8.10
Четыре сетевых интерфейса

Необходимо:
Считать трафик на каждом интерфейсе, вести статистику.

Решение:
vnstat - маленький консольный пакет, который считает трафик на указанных интерфейсах и не загружает систему. Статистика считается отдельно для каждого интерфейса, трафик по ip-адресам и портам не делится. Статистика выводится по запросу с детализацией по часам, дням, неделям и тд.

Хранится статистика в файлах в каталоге /var/lib/vnstat.
Занимает места мало - у меня за три дня работы 4кб для каждого интерфейса, итого 12кб для трех наблюдаемых интерфейсов.

Устанавливаем vnstat:
#apt-get install vnstat

Инициализируем базу данных для каждого необходимого интерфейса:
#vnstat -u -i eth0
#vnstat -u -i eth1
#vnstat -u -i eth2

Далее необходимо сказать vnstat запустить мониторинг интерфейса.
Это можно сделать путем ifdown/ifup для каждого интерфейса,
либо, если нет желания разрывать соединения выполнить для каждого:
#IFACE=eth${i}
#export IFACE
#/bin/sh -x /etc/network/if-up.d/vnstat

где ${i} порядковый номер интерфейса.

Все, мониторинг готов, теперь по прошествии нескольких минут можно смотреть статистику
#vnstat -q

15 янв. 2009 г.

Ubuntu Server 8.10 и GRUB на HP Proliant 580G5

Ставим Ubuntu Server 8.10.

Итак, проблема возникла сразу после окончания установки - машина перезагрузилась и упала в Red Screen of Death.

Так как на экране не успевало появится даже приглашение GRUB сделал вывод, что проблема появилась именно в нем (да и в англоязычных источниках об этом писали, правда применительно к серверам предыдущих поколений).

Дальше грузимся например с диска Ubuntu Desktop, монтируем разделы:

#mkdir /media/root
#mount /dev/cciss/c0d0p2 /media/root
#mount /dev/cciss/c0d0p1 /media/root/boot
#mount --bind /dev /media/root/dev

меняем корень
#chroot /media/root

настраиваем GRUB
#grub
#grub> device (hd0) /dev/cciss/c0d0
#grub> root (hd0,0)
#grub> setup (hd0)

Примечание:
/dev/cciss/c0d0p2 - раздел где размещен корень файловой системы
/dev/cciss/c0d0p1 - раздел /boot

24 нояб. 2008 г.

Удаляем кластер M$ Windows 2003

Случается такое иногда - нужно удалить кластер :)

делаем так:
1. удаляем из кластера все ноды, кроме последнего;
2. на последнем ноде выполняем команду: cluster node %CLUSTER_NAME% /forcecleanup
3. проверяем отсутствие/наличие кластера в списке доступных кластеров командой: cluster /list

8 окт. 2008 г.

Увеличиваем память больше 4Гб в ОС SCO Unixware 7.1.3

Возникла необходимость нарастить серверу память до 8Гб.

Для того чтобы SCO Unixware пыталась определить больше 4Гб ОЗУ необходимо в файле /stand/boot указать ENABLE_4GB_MEM=YES (см. boot parameters).

перезагружаем машину и смотрим как ОС определяет ОЗУ.

Может понадобится настройка параметров распределения ОЗУ (см. Virtual memory (VM) parameters)