вторник, 10 Январь, 2006

amavisd-new в Debian Etch

При обновлении в Debian'овском testing'е ( etch) пакета amavisd-new (стало ver 2.3.3) поменялось конфигурирование оного (без совместимости с предыдущим). Возникла одна проблема (остальные решились изменением новых параметров на старые значения) - перестало добавлять в хедер писем следующих полей: X-Spam-Status, X-Spam-Score и X-Spam-Level, на анализе которых procmail решал - относить письмо к спаму или нет (со складыванием в определенную папку). Решилось прописыванием в /etc/amavis/conf.d/50-user следующего:

 @local_domains_acl = ( "." );        

ЗЫ: Не забываем раскомментировать нужное в /etc/amavis/conf.d/50-user/15-content_filter_mode

понедельник, 09 Январь, 2006

Новый Archive signing key

2005 год закончился, а с ним и срок действия старого Archive signing key. Нужно обновляться. Это сделать проще так:

gpg --keyserver pgpkeys.mit.edu --recv-key 2D230C5F     

Проверить получившееся можно будет так:

apt-key list    

За подробностями: http://wiki.debian.org/SecureApt 

среда, 26 Октябрь, 2005

saslauthd + postfix + debian

Надо записать для себя, а то постоянно забываю некоторые моменты :)

Сразу оговорюсь - рассматриваю вариант, что пользователи хранятся в ldap и saslauthd сразу идет в ldap

saslauthd

/etc/default/saslauthd

START=yes
MECHANISMS="ldap"
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-O /etc/saslauthd.conf -m ${PWDIR}"

/etc/saslauthd.conf - этого файла нет - его надо создать

ldap_servers: ldap://127.0.0.1/
ldap_bind_dn: некий_bind_dn
ldap_password: некий_пароль
ldap_version: 3
ldap_timeout: 10
ldap_cache_ttl: 30
ldap_cache_mem: 32768
ldap_scope: sub
ldap_search_base: откуда_искать, у меня ou=people,dc=....
ldap_auth_method: bind

Далее "перекидываем" сокеты saslauthd'а

mkdir -p /var/spool/postfix/var/run/saslauthd
chgrp sasl /var/spool/postfix/var/run/saslauthd
chmod 710 /var/spool/postfix/var/run/saslauthd
dpkg-statoverride --remove /var/run/saslauthd
dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
rm -r /var/run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
а сейчас скриптик, для автоматического восстановления симлинка /var/run/saslauthd (при перезагрузке он удалится) /etc/init.d/socketlinks
#!/bin/sh
ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
и делаем его выполняемым при старте
chmod 750 /etc/init.d/socketlinks
ln -s /etc/init.d/socketlinks /etc/rcS.d/S99socketlinks
перезапускаем saslauthd и проверяем работу
testsaslauthd -u test -p test
0: OK "Success."

postfix

в /etc/postfix/sasl/smtpd.conf - этого файла нет - его надо создать

pwcheck_method: saslauthd
mech_list: plain login

в /etc/postfix/main.cf добавляем

# SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes

smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination

Если не опечатались - должно работать

вторник, 23 Август, 2005

Почта для удаленного(-ых) офиса - postfix

У вас возникла задача - хранить пользователей в едином хранилище, но некоторые пользователи находятся в удаленных офисах. Как лучше "разрулить" почту?

Мой рецепт - воспользуйтесь transport(5). Есть такая возможность, как:

user@domain transport:nexthop
	Deliver mail for user@domain through transport to nexthop.
, т.е. почта для выбранных пользователей будет пересылаться на указанный сервер.

НО! тут есть один нюанс. В результат поиска transport_maps не должны попасть пользователи данного хоста, иначе получите "зацикливание". Как этого избежать - да очень просто - дополнительной фильтрацией по хосту (мы же знаем, кто-где находится). Раз разговор идет об едином хранилище пользователей - сразу подразумевается ldap. Приведу пример для случая использования класса inetLocalMailRecipient (схема /etc/ldap/schema/misc.schema):

main.cf:
...
transport_maps = ldap:$config_directory/ldap_transport_maps.cf
...

ldap_transport_maps.cf:
...
query_filter = (&(objectclass=inetLocalMailRecipient)(mail=%s)(!(mailHost=host1)))
result_attribute = mailHost
result_filter = smtp:[%s]
...
здесь мы используем условие "not host1", т.е. не этот хост. В конфигурациях других почтовых серверах (удаленных), соответственно будет "не_те_хосты".

понедельник, 04 Июль, 2005

sms alerts в системе мониторинга mon

Приведу alert для отправки sms'ок в системе mon. Тот, что есть в contribs мне совершенно не понравился своей неинформативностью. Сразу хочу отметить, что у нас используется gnokii и телефон Nokia3100.

Собственно сам sms.alert:

#!/usr/bin/perl
use Getopt::Std;
getopts ("s:g:h:t:l:u");
$summary=<STDIN>;
chomp $summary;
$ALERT = $ENV{"MON_ALERTTYPE"} || "UNKNOWN ALERT";
$t = localtime($opt_t);
($wday,$mon,$day,$tm) = split (/\s+/, $t);
my $alerttext = "$ALERT : $mon $day $tm $opt_g/$opt_s $summary";
foreach $number (@ARGV) {
system("echo `date` $number $alerttext >> /var/log/mon/sms.alert.log");
open (SMS, "| /usr/bin/gnokii --sendsms $number") || die "could not open pipe to sms: $!\n";
print SMS "$alerttext";
close (SMS);
sleep 2;
}

пятница, 03 Июнь, 2005

Конфигурация lm-sensors для GA-8IPE1000MK

Ну вот и на работе пришло время upgrade'а компьютера. Мой старый Tualatin "пошел" в ремонтный фонд, а мне досталась Гигабайтовская мамка с целероном.

Итак: Организация мониторинга средствами пакета lm-sensors для mainboard GA-8IPE1000MK в Debian Sarge.

Основу для sensors.conf я взял здесь, но немного изменил - у меня процессор Celeron D 335, а у него меньшее напряжение VCore, да и лишние сведения мне без надобности.

Фрагмент файла /etc/modules:

# I2C adapter drivers
i2c-i801
i2c-isa
# I2C chip drivers
#eeprom
it87

Содержимое файла /etc/sensors.conf:

chip "it87-*"
    label in0 "VCore"
    ignore in1
    label in2 "+3.3V"
    label in3 "+5V"
    label in4 "+12V"
    ignore in5
    ignore in6
    ignore in7
    ignore in8
    compute in0 (1)*@ ,  @/(1)
    compute in1 (1)*@ ,  @/(1)
    compute in2 (1)*@ ,  @/(1)
    compute in3 (2)*@ ,  @/(2)
    compute in4 (4)*@ ,  @/(4)

    set in0_min 1.325 * 0.95
    set in0_max 1.325 * 1.05
    set in2_min 3.3 * 0.95
    set in2_max 3.3 * 1.05
    set in3_min 5.0 * 0.95
    set in3_max 5.0 * 1.05
    set in4_min 12 * 0.95
    set in4_max 12 * 1.05
    #ignore  vid

    ignore temp1
    ignore temp2
    label temp3       "CPU Temp"

    set temp3_over 65
    set temp3_hyst 55

    ignore temp1
    ignore temp2
    label temp3       "CPU Temp"

    set temp3_over 65
    set temp3_hyst 55

    label fan1  "CPU Fan"
    #label fan2  " NB Fan"
    ignore fan2
    #label fan3  "SYS Fan"
    ignore fan3

    set fan1_min 1000

На указанном оборудовании обеспечивается в "спокойном" режиме с куллером Igloo 4310:

  • Температура процессора: в районе 40 градусов;
  • Обороты: в районе 3000;
что, вроде как, соответствует выдаваемым bios сведениям.

суббота, 26 Март, 2005

linux+bluethooth+internet

Приведу и свой рецепт, как пользоваться мобильным интернетом.

Итак, исходные данные:
Дистрибутив - Debian Sarge
bluetooth адаптер - max select, id производителя - Cambridge Silicon Radio, Ltd
сотовый телефон - SonyEricsson T630
сотовый оператор - Megafon

Необходимые пакеты:
bluez-utils
bluez-pin
obexserver
obexftp

Конфигурирование телефона

Тут все просто. Идете на сайт сотового оператора и следуя инструкции выполняете настройку. Подробнее здесь. Единственное, на что хочу обратить ваше внимание - как бы у Вас не заработало б все через WAP - будете "приятно" удивлены расходованием средств с лицевого счета. Так что будьте осторожны.

Конфигурирование bluethooth адаптера

Не буду вдаваться в пространные объяснения что-к-чему. Понадобиться - сами найдете. Неплохой цикл статей здесь, там же есть ссылки и на другие ресурсы, например Of Linux, GPRS Phones, Serial Cable, Irda, Bluetooth and USB. Я же приведу лишь содержимое конфигурационных файлов.

Итак, файл /etc/bluetooth/rfcomm.conf:

rfcomm0 {
    bind yes;
    # Bluetooth address of the device
    device 11:22:33:44:55:66;
    # RFCOMM channel for the connection
    channel 1;
    # Description of the connection
    comment "Dialup Networking";
}
вместо device 11:22:33:44:55:66; у Вас будет свой идентификатор. Как его получить? Самое простое - просканировать окружение:
$ hcitool scan
/etc/bluetooth/pin:
1234
некий pin-код для доступа. Его нужно сделать цифровым.

Перезапускаем bluez-utils:

# /etc/init.d/bluez-utils restart

После сделайте обратное обращение - от телефона к компьютеру. Выбор меню Связь->Bluetooth->Мои устройства->Новое устройство произведет сканирование сети и должен будет найти bluetooth-адаптер и предложит внести его в Мои устройства, при этом будет запрошен pin-код. Введите то, что у Вас в /etc/bluetooth/pin. В результате создастся файл /etc/bluetooth/link_key, где введенные коды и сохраняются.

Немного про obexftp. Он прекрасно работает при условии выбора в телефоне языка меню - English. В случае Русского, у меня не получилось войти в каталоги со звуками, рисунками или темами. Хотя, если быть честным, я не очень то и старался. Есть идея попробовать bluetooth-filesystem - тогда и буду разбираться.

Настройка ppp

И последнее, ради чего, собственно, я и написал свое micro-howto - настройка ppp. Если про настроку телефона или bluetooth написано много, то про настройку ppp через Megafon я что-то не встречал. Хотя "настройка" это громко сказано - по конфигурационным файлам будет все понятно.

Итак /etc/ppp/peers/gprs:

# Подробная информация о работе
#debug
# Не показывать пароли в отладочных сообщениях
hide-password
# Аутентификация телефона не требуется
noauth
# Файл процедуры установки связи
connect '/usr/sbin/chat -v -f /etc/chatscripts/gprs'
# Используем устройство на скорости
/dev/rfcomm0 57600
# Используем соединение в качестве маршрута по умолчанию
defaultroute
# Установка IP адресов
noipdefault
# Имя пользователя
user "gprs"
#
ipparam gprs
# Используем DNS-сервера, получаемые при активации интерфейса
usepeerdns
# Для нахождения правильного пароля в файле secrets
remotename gprs
# Используем аппаратное управление
crtscts
# Игнорировать управляющие сигналы модема
local
# Не использовать LCP echo. Megafon не отвечает на LCP echo.
lcp-echo-failure 0
lcp-echo-interval 0

/etc/ppp/pap-secrets:

"gprs" gprs "gprs"

/etc/chatscripts/gprs:

ABORT        BUSY
ABORT        "NO CARRIER"
ABORT        VOICE
ABORT        "NO DIALTONE"
''           ATZ
''           'AT+CGDCONT=1,"IP","internet.nw"'
''           'AT+CGQREQ=1,0,0,0,0,0'
''           'AT+CGQMIN=1,0,0,0,0,0'
''           'ATD*99#'
CONNECT      \d\c

Команды управления:

Соединение:

pon gprs

Разрыв связи:

poff gprs

Если нужно увидеть отладочную информацию:

pon gprs debug nodetach

Перезапуск интерфейса:

poff gprs
rfcomm release 0
rfcomm bind 0
pon gprs

пятница, 25 Март, 2005

Конфигурация lm-sensors для ASUS K8V SE Deluxe

Организация мониторинга средствами пакета lm-sensors для mainboard ASUS K8V SE Deluxe в Debian Sarge.

Сенсоры: winbond w83697hf
Cooler: Igloo 7200
BIOS: ver.1006 beta1

Фрагмент файла /etc/modules:

# I2C adapter drivers
i2c-isa
i2c-viapro
# I2C chip drivers
w83627hf

Содержимое файла /etc/sensors.conf:

chip "w83697hf-*"
    set beep_enable 0
    #ignore alarms

    label in0 "VCore"
    label in2 "+3.3V"
    label in3 "+5V"
    label in4 "+12V"
    compute in3 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)
    compute in4 ((30/10)+1)*@  ,  @/((30/10)+1)
    ignore in5
    ignore in6
    ignore in7
    ignore in8

    set in0_min vid * 0.95
    set in0_max vid * 1.05
    set in2_min 3.3 * 0.95
    set in2_max 3.3 * 1.05
    set in3_min 5.0 * 0.95
    set in3_max 5.0 * 1.05
    set in4_min 12 * 0.95
    set in4_max 12 * 1.05

    label temp1 "MB Temp"
    label temp2 "CPU Temp"
    set temp1_over 50
    set temp1_hyst 40
    set temp2_over 60
    set temp2_hyst 50

    ignore fan1
    label fan2 "CPU Fan"
    set fan2_div 4
    set fan2_min 2000

При приведенных коэффицентах, выдаваемые сведения соотносятся со сведениями, выдаваемыми BIOS->Power->Hardware Monitor.

На указанном оборудовании (для процессора AMD64 3000+) обеспечивается в "спокойном" режиме:

  • Температура процессора: в районе 35-39 градусов;
  • Обороты: в районе 2750;
  • При любой нагрузке температура процессора ни разу не превышала 50 градусов.

четверг, 10 Март, 2005

Организация локального зеркала репозитариев в Debian

У нас организовано зеркалирование нескольких репозитариев:

  • Это Debian Sarge (i386),
  • Довольно необходимый(?) репозитарий с mplayer'ом со товарищами
  • Ну, и неофициальный репозитарий xfce

Зеркалирование организовано с помощью apt-mirror

Запуск на синхронизацию осуществляется по крону. Содержимое файла /etc/cron.d/apt-mirror:

30 6 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

Конфигурационный файл находится в /etc/apt/mirror.list Фрагмент конфигурационного файла:

deb http://ftp.fi.debian.org/debian sarge main contrib non-free
deb ftp://ftp.nerim.net/debian-marillat/ testing main
deb http://www.os-works.com/debian testing main
clean http://ftp.fi.debian.org/debian/
clean ftp://ftp.nerim.net/debian-marillat/
clean http://www.os-works.com/debian/
skip-clean http://ftp.fi.debian.org/debian/iso

Основываясь на конфигурационный файл apt-mirror осуществляет "закачку" новых пакетов из удаленных репозитариев (опции deb:...) и генерирует файл /var/spool/apt-mirror/var/clean.sh (опции clean:...), который необходимо запустить для удаления из локальных репозитариев устаревших пакетов. В моем случае удаление устаревших пакетов выполняется "по требованию", т.е. скрипт clean.sh в cron не прописан

четверг, 03 Март, 2005

VPN подключение в Debian'е

Привожу содержимое конфигурационных файлов для организации VPN-подключения в сети АТК-Интернет для системы под управлением GNU/Linux Debian Sarge

Конфигурационные файлы:

/etc/ppp/options.pptp:

lock
noauth
nobsdcomp
nodeflate

/etc/ppp/peers/atknet:

pty "/usr/sbin/pptp vpn-1.atknet.ru --nolaunchpppd"
name username
remotename PPTP
file /etc/ppp/options.pptp
ipparam atknet
persist

/etc/ppp/chap-secrets:

username PPTP password *

/etc/ppp/ip-up.d/atknet: (файл должен быть исполняемым)

#!/bin/sh
# pppd ip-up script for all-to-tunnel routing
# name of primary network interface
PRIMARY=eth0
# address of tunnel server
SERVER=vpn-1.atknet.ru
# provided by pppd: string to identify connection aka ipparam option
CONNECTION=$6
if [ "${CONNECTION}" = "" ]; then CONNECTION=${PPP_IPPARAM}; fi
# provided by pppd: interface name
TUNNEL=$1
if [ "${TUNNEL}" = "" ]; then TUNNEL=${PPP_IFACE}; fi
# if we are being called as part of the tunnel startup
if [ "${CONNECTION}" = "atknet" ] ; then
    # direct tunnelled packets to the tunnel server
    route add -host ${SERVER} dev ${PRIMARY}
    # direct all other packets into the tunnel
    route del default ${PRIMARY}
    route add default dev ${TUNNEL}
fi
/etc/ppp/ip-down.d/atknet: (файл должен быть исполняемым)
#!/bin/sh
# pppd ip-up script for all-to-tunnel routing
# name of primary network interface
PRIMARY=eth0
# provided by pppd: string to identify connection aka ipparam option
CONNECTION=$6
if [ "${CONNECTION}" = "" ]; then CONNECTION=${PPP_IPPARAM}; fi
# provided by pppd: interface name
TUNNEL=$1
if [ "${TUNNEL}" = "" ]; then TUNNEL=${PPP_IFACE}; fi
# if we are being called as part of the tunnel startup
if [ "${CONNECTION}" = "atknet" ] ; then
    # direct packets back to the original interface
    route del default ${TUNNEL}
    route add default dev ${PRIMARY}
fi

Команды управления:

Соединение:

pon atknet

Разрыв связи:

poff atknet

Если нужно увидеть отладочную информацию:

pon atknet debug nodetach

Если нужен автоматический запуск при загрузке системы:
добавьте в файл /etc/network/interfaces следующую секцию:

auto tunnel
iface tunnel inet ppp
provider atknet