вторник, 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;
суббота, 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