среда, 13 августа 2008 г.

postfix+fetchmail+dovecot

Связка связана с тем, что на одной компании стоял левый win 2k3 server ну и полетел native pop3 connector к exchange'у. А он потребовал 2300р. А люди жадные, 2 недели без забора почты.
Да и ... не заботятся эти люди о своей серверной, говорят единственную фразу "Это развод", хотя не шарят вообще... В качестве преамбулы сойдет.
Сгорел у них шлюз, кстати win2k3 сервер для шлюза на 10-ток машин - это тема. Решил поставить aka deb, ставил не я. Поставили настроили 3 строчки. И поехало. Поставил постфикс:
aptitude install postfix
далее dovecot:
aptitude install dovecot-common dovecot-imapd
и fetchmail:
aptitude install fetchmail

Попутно приценился к утилите fetchmailconf, конфиг сгенерить может, но долго если процесс уже известен и пользаков много.
Дано: 10 пользаков
Каждый пользователь должен получить почту и суметь передать её через почтовик ISP.
Почта находится на mail5.hc.ru (виртуальный домен другой)
Допустим 3 пользака(username:password):
user1@domain.com:123qwe
user2@domain.com:123qwe
user3@domain.com:123qwe

Вывод main.cf
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.localdomain, localhost
relayhost = mail.domain.com
mynetworks = 10.0.0.0/24, 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = eth0 localhost
home_mailbox = Maildir/
inet_protocols = all

Из него видно главное:
локальная сеть 10.0.0.0/24, почта собирается в maildir, smtp сервер ISP = mail.domain.com, интерфесов 3, причем eth0 и localhost это записи в /etc/hosts, а третий не прописан (этого в конфиге не увидишь) Интерфесом наружу ничего не светит ,ибо не надо. Предрекая споры, что можно закрыть iptables, отвечу: "Программу нужно настраивать так что бы она работала без костылей".

Далее даю вывод sender_relay(username:passwd [smtp.server.of.isp]):
user1@domain.com:qwe123 [mail.domain.com]
user2@domain.com:qwe123 [mail.domain.com]
user3@domain.com:qwe123 [mail.domain.com]
и sasl_passwd(e-mail username:passwd):
user1@domain.com user1@domain.com:qwe123
user2@domain.com user2@domain.com:qwe123
user3@domain.com user3@domain.com:qwe123

Далее приступим к dovecot'у, вывод dovecot.conf:
protocols = imap imaps
listen= eth0 #eth0 это адрес прописанный в /etc/hosts, не путайтесь, прошу вас
default_mail_env = maildir:/home/%u/Maildir
disable_plaintext_auth = no
ssl_disable = yes
protocol imap {
}
auth default {
mechanisms = plain
passdb pam {
}
userdb passwd {
}
user = root
}
plugin {
}

Любим имап, кто бамбук не курит, тот пусть читает литературу. Аутентификация by pam, а соответственно системной записи. Просто любая система sql сожрет ресурсов больше для 10 пользаков, чем сможет принести реальную пользу(обычно жрется порядко 10 Mb оперативы, порождается 3-5 процессов, жрутся файловые дескрипторы, настройка обрастает сложностью, каждый запрос порождает подключение к БД - жуть). Поэтому plain pam. Не спешите гнобить за plain, TLS все равно включите.
А далее самое интересное:
fetchmail(/etc/fetchmailrc):

poll mail.domain.com with proto POP3
user 'user1@domain.com' there with password 'qwe123' is 'user1' here options nokeep
user 'user2@domain.com' there with password 'qwe123' is 'user2' here options nokeep
user 'user3@domain.com' there with password 'qwe123' is 'user3' here options nokeep
В /etc/default/fetchmail:
OPTIONS = "-d 60"
START_DAEMON = yes

забираем с сервера ISP mail.domain.com по протоколу pop3 трем юзверям, причем почту не оставлять (в начале рекомендую параметр nokeep заметь на keep, тогда не стремно потерять). Почта передается локальным юзверям, причем насколько вкурил через postfix. Что хорошо, правда перед этим много покурил и очень долго (с час) всё работало не так. Кстати -d 60 говорит, что забирать надо раз в минуту, а след. параметр, запускать как демон. Идея с кроном мне не нравится, ибо писать настройку на несколько символов дольше. Заводим пользаков:
useradd -m -s /bin/false user1 -p qwe123
useradd -m -s /bin/false user2 -p qwe123
useradd -m -s /bin/false user3 -p qwe123
Запускаем сервисы:
/etc/init.d/postfix start
/etc/init.d/dovecot start
/etc/init.d/fetchmail start
Прописываем на машинах пользаков. Ура. Работает.
Если будут проблемы, то в комменты

суббота, 12 июля 2008 г.

Тестирование EEE PC 900

В общем я поведение железа могу предсказать по его характеристикам.
Сразу скажу, что с SSD дисками, да и вообще флеш устройствами, я много дела не имел. Ро этому мне стало интересно, какая она эта золотая рыбка.
Тестирование проводил триальной EVEREST
Вот отчет по EEE PC 900
Чтение из памяти

Celeron M ULV 353900 МГц[ TRIAL VERSION ]i910GML Int.DDR2-400 SDRAM3-3-3-82391 Мб/с
Запись в память

Celeron M ULV 353900 МГц[ TRIAL VERSION ]i910GML Int.DDR2-400 SDRAM3-3-3-82074 Мб/с
Копирование в память
Celeron M ULV 353 900 МГц [ TRIAL VERSION ] i910GML Int. DDR2-400 SDRAM 3-3-3-8 1683 Мб/с
Задержка памяти
Celeron M ULV 353 900 МГц [ TRIAL VERSION ] i910GML Int. DDR2-400 SDRAM 3-3-3-8 133.6 ns

Дальше идет тестирование FPU и СPU, в общем, система бегает от 2 пня до селеронов 1.5 ГГц Так что здесь всё вроде понятно и предсказуемо. Что ещё от селерона ждать.
Дальше идет программы драйв
Сразу скажу делал 10 измерений (5 c onboard и 5 с внешним). Думаю достаточно, по этому вот результаты.

AverLRS (MB/sec)minLRS (MB/sec)maxLRS (MB/sec)AAT (ms)maxCRS (MB/sec)
131.830.232.10.541.0
231.528.630.30.540.4
331.328.530.30.640.5
431.530.230.30.540.6
531.630.232.10.540.3
623.923.424.50.529.7

И, понимаем, что программа drive! врет, причем нагло и объясню почему: внимательно присмотритесь, при установившемся режиме max linear read speed меньше, чем среднее. Такого быть не должно. по этому разбираюсь с IOmeter. Чуть позже опубликую.
P.S.: На самом деле я не люблю установившиеся режимы, по тому как они обычно статичны до ужаса, и не дают действительных данных, когда я первый раз запустил эту программу то minLRS был 1.4 MBps, что меня заинтриговало. Так что постораюсь произвести серию тестов с нелинейным чтением и записью. хотя в среднее время доступа действительно правильное, всё таки флеш.

пятница, 11 июля 2008 г.

Лицензирование ПО

Эпилог. Я не дьявол, но и не ангел.
Лично я использовал к своему стыду пиратское ПО, да и крал в магазине как-то в детстве. Кидайте камни, но всегда есть выход.
Тогда я считал, что всё должно быть бесплатно, но ошибался, по тому как считаю, что для домашнего пользователя ОС и доп. ПО должны быть бесплатны, а вот по работе платить надо. Ну представьте себе строительную компанию с многомиллионными подрядами, а смотришь на комп архитектора, и понимаешь, что деньги от ПО ушли на вещь для директора стоящую в гараже. И конечно директор об этом ни слуху, ни духу; вот как булку украсть, так человек - вор, а вот как украсть ПО, так он - благородный пират, простите меня конечно, но этот человек на этом ПО бизнес делает, вот как бы вы отнеслись к человеку который украл мобильник и продает его, как легальный? Конечно вы скажите, что он вор. А особенно радует, что в части компаний, в которые я приходил, говорят: " Ну придет к нам инспектор, мы на эту сумму ему и дадим". Я им верю, инспекторы берут деньги, ещё как берут, особенное если знать как и куда подходить, но вот логичный вопрос: "Вы думаете, что он там будет вечно сидеть, и другой не придет? А если придет, то будут два сценария." И не надо говорить, что"команда с верху дана - нетрогать", как дана, так и взята. А на постоянство в нашей стране расчитывать не приходится.
P.S.: я уже несколько лет в своих домашних целях использую linux и доволен на все 110%. А в офисах, которые я вел и веду, там лицензионное профессиональное окно и опен оффис в придачу.

вторник, 8 июля 2008 г.

Комтек

По долгу своей профессии работаю на аудиторскую компанию (они ещё и бухгалтерию делают). В общем часто слышу "1с" то, "1с" сё. А вот нас эта учесть миновала. Хочу представить на суд общественности систему "Комтек версия 8". Сразу оговорюсь, переход на 9 версию (aka Комтек системы для бизнеса) бесплатен и безболезненный. Ну в общем совсем.
Эта система давно кушает sql, а точнее sybase anywhere studio 9, а для тех кто в курсе - бонусы. П.С. В общем рай, да и только. Только стоит не мало, но тот кто разбирается в лапше на ушах оценит эту программу по достоинству.

пятница, 4 июля 2008 г.

ASUS EEE PC 900

Заказал для своих бухов сей девайс в oldi. Сразу отмечу, что он белый, а не как у них на картинке черный, это минус. Меня уже достаточно давно не устраивает эта контора, но это моё ИМХО, которое я полноценно озвучивать сейчас не собираюсь.

В общем... это книжка, такая книжечка. Не большая книжечка ( хочу взять фотик у своего свояка, классный креатифщег, что бы заснять в нормальном виде.)
Удобен для моих админских дел, сея устройство подходит, причем очень. Правда клавиатура совсем не привычная. Зато чехол к буку меня радует. Слабая печатная машинка с функцией mp3 плеера, если вам это подходит, то берите.
P.S.: Не курю, поэтому нарушу традицию с зажигалкой, кстати на нем фото его соседа, это фото сделано тем же соседом, которым я пользовался для написания этого сообщения.
P.P.S.: Заказал третий ноут, на этот раз пришел негретенок. Кстати, смотрится симпатично.
Несколько знакомых уже оценили это чудо, ждут денег на покупку.

четверг, 3 июля 2008 г.

DBMAIL+POSTFIX+MYSQL+SASL(PAM) DEBIAN

Собственно решил настроить эту связку. Парился долго.

Пролог.
Как-то не раз парился с mbox и maildir и вот посмотрел на dbmail и понял, чем он меня заинтересовал:
1. Управление через БД
2. Хорошая возможность репликации

Поэтому начнем.
Часть 1. debian
За основу был выбран debian lenny, кто-то проругается, кто-то нет. Ибо из коробки dbmail есть и ничего лишнего прописывать не надо.
~# Подразумевается корневая директория рута, ну и собственно пользователь root
Часть 2. mysql
Вопрос стал в том, что база уже есть и по ней идет регистрация пользователей в системе по средством pam. Т.е. связка pam+mysql уже реализована.
Итак:
~# aptitude install mysql-server mysql-common
Часть 3. dbmail
~# aptitude install dbmail-mysql ~# mysql
А теперь добавим БД и пользователя dbmail
mysql> create database dbmail;
mysql> grant all privileges on dbmail.* to dbmail identified by 'dbmail_pass';
mysql>exit
Зайдем в каталог, где хранится пример базы данных для dbmail'a
~# cd /usr/share/dosc/dbmail-mysql/examples
Разархивируем в файл dbmail.mysql (вдруг понадобиться подредактировать)
~# gzip -cd create_tables.mysql.gz > dbmail.mysql
И создадим все таблицы в БД dbmail
~# mysql -h 127.0.0.1 -u dbmail -p dbmail <>Затем заменяем строки в файле /etc/dbmail/dbmail.conf на:
driver = mysql
authdriver = sql
host = 127.0.0.1
sqlport = 3306
user = dbmail
pass = dbmail_pass
db = dbmail
encoding = latin1
С поледним пунктом не всё так ясно, по идее utf8 проходить должен, но dbmail ругается, по этому решил использовать latin1.
Тут ещё можно добавить в секцию [lmtp] опцию BINDIP=127.0.0.1, ну да ладно, хотя сделать это стоит.
Далее идем в /etc/default/dbmail и дописывает
dbmail-lmtpd
dbmail-imapd
Сюда можно было и dbmail-pop3d, но мне этот протокол не нравится, ввиду его древности.
Далее говорим
~# /etc/init.d/dbmail start
Советую проверить как работает dbmail
~# dbmail-util -a
На этом наше повествование по поводу dbmail'а закончено.
Часть 4. postfix
Один из интереснейших разделов, ибо конфиг до жути простой получается:
Надо добавить строчку в /etc/postfix/master.cf
dbmail-lmtp unix - - n - - lmtp
Далее привожу пример пробного рабочего конфига /etc/postfix/main.cf

biff = no

append_dot_mydomain = no
readme_directory = no

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes

myhostname = mail.first_domain.ru
mydomain = first_domain.ru
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = first_domain.ru, second_domain.org, localhost
mynetworks = 127.0.0.0/8
mynetworks_style = host
local_recipient_maps =
mailbox_transport = dbmail-lmtp:localhost:24
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000

Несколько моментов к пояснению. В mydestination дописывать надо те доменные имена для которых вы хотите получать почту (на самом деле, не этот параметр, но настройки в таком виде пойдут). И chech_policy_service inet:127.0.0.1:60000 опращается к сервису greylist висящем на 60000 (прочтите про него, если не знаете), устанавливается он
~# aptitude install postgrey
Т.е. данный конфиг не сильно отличается от того, который по умолчанию.
На этом с postfix'ом я заканчиваю, сюда можно навернуть ещё многое чего (антиспам, антивирь, tls), но для моих практических изысканий подошло в самый раз.
Часть 5. SASL + PAM +MYSQL
Вот с этой связкой я нарыбачился, очень нарыбачился.
в качестве sasl будем использовать вот такое:
~# aptitude install libsasl2-2 libsasl2-modules sasl2bin
Далее следуя логике того, что наш доблестный postfix почему-то chroot'ился, накой его бес попутал - я не знаю, делаем следующее:
~# mkdir -p /var/spool/postfix/var/run/saslauthd
~# chown :sasl /var/spool/postfix/var/run/saslauthd
~# ln -sf /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
~# adduser postfix sasl
На самом деле вышеизложенные строчки, далеко не так очевидны, из-за отсутствия одной из них убил день, при этом долго не понимал, что происходит.
Далее создадим файл /etc/postfix/sasl/smtpd.conf со следующим содержанием:
pwcheck_method: saslauthd
Затем скажем так:
~# ln -sf /etc/postfix/sasl/smtpd.conf /usr/lib/sasl2/smtpd.conf
И создадим /etc/pam.d/smtp c таким содержанием:
auth required pam_mysql.so user=dbmail passwd=dbmail_pass db=dbmail table=dbmail_users usercolumn=userid passwdcolumn=passwd crypt=1
account sufficient pam_mysql.so user=dbmail passwd=dbmail_pass db=dbmail table=dbmail_users usercolumn=userid passwdcolumn=passwd crypt=1
И... всё.
Эпилог.
Проверка аутентификации производите через
~# testsaslauthd -u username -p password
Для добавления пользователей я использовал
~# dbmail-users -a test -s test@first_domain.ru -W -p crypt

От автора.
В ходе этой работы, я ещё глубже копнул в постфикс и настучал себе шишек, что пропорционально набранному опыту.
Учится на чужих ошибках тяжело, а на своих ещё тяжелее.