Итак, сегодня в нашей организации стартовал проект Внедрение никсов ))
Я должен был проводить вводный семинар по данной теме, но опоздал на него на полтора часа, благодоря МГТСникам, работу коих по прокладке оптики сегодня принимал на 2-х объектах. Тем не менее семинар состоялся: внедрению никсов - быть! )
среда, 30 июля 2008 г.
пятница, 25 июля 2008 г.
Open source и государство
Сегодня говорил с сотрудником одного федерального агенства, занимается он там тем, чем в коммерческой структуре занимается IT директор. Заговорили о линуксе и государстве, он показал мне брошюру от info-foss.ru. В ней шла речь о необходимости внедрения опенсорса в госструктурах, о GPL, об опыте других стран и пр. Вступление было от минсвязи. Этот человек сказал, что эти книжечки распространяются по госслужбам. Может, начало действительно положено? Хотелось бы верить.
Деньги за предустановленную винду
Как один человек вернул деньги за отказ от использования предустановленной свисты:
ссылка
ссылка
четверг, 24 июля 2008 г.
среда, 23 июля 2008 г.
суббота, 19 июля 2008 г.
пятница, 18 июля 2008 г.
Преобразование IP адреса в целое число
Для осуществления моего проекта почтового клиента мне потребовалась функция, для перевода строки, содержащий IP адрес в челое число. Нигде не нашёл решения для C++, решил написать свою функцию. Вот, может кому пригодится:
#include <iostream>
#include <cstdlib>
using namespace std;
int iptoint(char* str)
{
int ip = 0;
int i;
str = str - 1;
for (i = 3; i >= 0; i--)
ip = ip + (strtol(str + 1, &str, 10) << 8 * i);
return ip;
}
Мой будущий почтовый клиент
Параллельно с изучением Postfix начал писать в образовательных целях одну штуку. Это будет простой почтовый клиент, к которому я со временем прикручу гуй на Qt, а впоследствии поддержку шифрования. Таким образом, я укреплю свои знания в области сокетов и smtp протокола, а также окунусь в ООП.
Пишу на C++, пытаясь максимально придерживаться парадигмы ООП.
Пока готов набросок класса Socket, кот. будет использоваться для соединения с сервером и готов класс Message, объект которого будет письмом.
Пишу на C++, пытаясь максимально придерживаться парадигмы ООП.
Пока готов набросок класса Socket, кот. будет использоваться для соединения с сервером и готов класс Message, объект которого будет письмом.
воскресенье, 13 июля 2008 г.
Postfix + TLS
Здесь я буду постить результаты своих попыток прикручивания TLS к Постфиксу.
Для начала нам нужен сертификат нашего центра сертификации:
В процессе создания говорим, что common name - имя нашего хоста.
Получаем каталог /usr/share/ssl/demoCA, в кот. есть файлик cacert.pem, ставим этот сертификат конкверором.
Делаем сертификат Постфикса:
из каталога /usr/share/ssl
Дальше делаем каталог /etc/postfix/certs, куда копируем /usr/share/ssl/demoCA/cacert.pem и созданные для постфикса закрытый ключ postfix_private_key.pem и сертификат postfix_public_cert.pem. Устанавливаем на ключ права 600.
Пишем в /etc/postfix/main.cf :
Внимание - грабли!
В /etc/postfix/master.cf раскомментируйте строку
А так, как ранее мы прикрутили к нашему серваку plaintext аутентификацию, то имеет смысл засунуть её под шифрование, /etc/postfix/main.cf:
для оптимизации шифрования добавляем в конфиг:
Продолжение следует...
Для начала нам нужен сертификат нашего центра сертификации:
#cd /usr/share/ssl/misc
#./CA.pl -newca
В процессе создания говорим, что common name - имя нашего хоста.
Получаем каталог /usr/share/ssl/demoCA, в кот. есть файлик cacert.pem, ставим этот сертификат конкверором.
Делаем сертификат Постфикса:
из каталога /usr/share/ssl
#openssl req -new -nodes -keyout postfix_private_key.pem -out postfix_private_key.pem -days 730если в процессе выполнения второй команды получаем ошибки открытия файлов - значит есть проблема с путями (т.к. путь к закрытому ключу сервера относительный, то имеет значение, откуда даётся команда).
#openssl ca -policy policy_anything -out postfix_public_cert.pem -infiles postfix_private_key.pem
Дальше делаем каталог /etc/postfix/certs, куда копируем /usr/share/ssl/demoCA/cacert.pem и созданные для постфикса закрытый ключ postfix_private_key.pem и сертификат postfix_public_cert.pem. Устанавливаем на ключ права 600.
Пишем в /etc/postfix/main.cf :
smtpd_use_tls = yesТаким образом мы включили TLS, сказали, где генератор случайных чисел, сертификаты, а таже установили детальные логи для tls и добавление заголовков.
tls_random_source = dev:/dev/urandom
smtpd_tls_key_file = /etc/postfix/certs/postfix_private_key.pem
smtpd_tls_cert_file = /etc/postfix/certs/postfix_public_cert.pem
smtpd_tls_CAfile = /etc/postfix/certs/cacert.pem
smtpd_tls_loglevel = 2
smtpd_tlsreceived_header = yes
Внимание - грабли!
В /etc/postfix/master.cf раскомментируйте строку
tlsmgr unix - - n 1000? 1 tlsmgrИначе получите ошибки, вроде:
Jul 15 15:26:19 deck postfix/smtpd[3098]: initializing the server-side TLS engineУбеждаемся, что всё работает:
Jul 15 15:26:19 deck postfix/smtpd[3098]: warning: connect to private/tlsmgr: Connection refused
Jul 15 15:26:19 deck postfix/smtpd[3098]: warning: problem talking to server private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: connect to private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: problem talking to server private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: no entropy for TLS key generation: disabling TLS support
Если мы видим данные о сертификате и ожидание дальнейшего ввода - значит всё правильно.
#openssl s_client -starttls smtp -connect localhost:25
А так, как ранее мы прикрутили к нашему серваку plaintext аутентификацию, то имеет смысл засунуть её под шифрование, /etc/postfix/main.cf:
smtpd_tls_auth_only = yesКоннектимся телнетом и убеждаемся, что нам не предлагают аутентификацию, а только STARTTLS, опять коннектимся, используя openssl, потом приветствуем сервер и убеждаемся, что теперь аутентификация возможна.
для оптимизации шифрования добавляем в конфиг:
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
Продолжение следует...
четверг, 10 июля 2008 г.
Postfix + SASL
Сразу оговорюсь, что всё как следует написано в Postfix SASL Howto, этот мануальчик я пишу на всякий случай. Мануал не будет "пошаговым" и подробным, только необходимое. Скорее всего, по мере моего продвижения в этой теме, пост будет пополняться.
Итак, предполагается, что сам постфикс и сасл уже стоят, а в конфиге постфикса прописаны всякие там myhosname и пр.
Пока рассмотрим механизм plain и использования sasldb (обычная берклевская БД).
В конфиге /etc/sasl2/smtpd.conf пишем:
В конфиге постфикса /etc/postfix/main.cf добавляем:
Теперь надо указать, юзерам какой области (realm) разрешить аутентификацию, например для нашего хоста это будет:
Тогда постфикc в базе sasldb будет искать юзеров из домена myhostname, таким образом, правильно заводить юзеров надо так:
Чтобы постфикс мог обращаться к sasldb, надо его сделать хозяином файлика.
Теперь сделаем так, чтобы через наш сервак могли отправлять почту только прошедшие аутентификацию юзеры, за исключеним случая отправки писем нам самим:
Итак, предполагается, что сам постфикс и сасл уже стоят, а в конфиге постфикса прописаны всякие там myhosname и пр.
Пока рассмотрим механизм plain и использования sasldb (обычная берклевская БД).
В конфиге /etc/sasl2/smtpd.conf пишем:
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login
В конфиге постфикса /etc/postfix/main.cf добавляем:
smtpd_sasl_auth_enable = yesэтим мы включаем аутентификацию.
Теперь надо указать, юзерам какой области (realm) разрешить аутентификацию, например для нашего хоста это будет:
smtpd_sasl_local_domain = $myhostname
Тогда постфикc в базе sasldb будет искать юзеров из домена myhostname, таким образом, правильно заводить юзеров надо так:
#saslpasswd2 -c -u `postconf -h myhostname` yakrevedkoЕстественно, в качестве сасловской области можно прописать mydomain, тогда и юзеры должны быть соответствующие.
Чтобы постфикс мог обращаться к sasldb, надо его сделать хозяином файлика.
Теперь сделаем так, чтобы через наш сервак могли отправлять почту только прошедшие аутентификацию юзеры, за исключеним случая отправки писем нам самим:
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination,Возможность аутентификации для "ущербных" клиентов:
permit_sasl_authenticated,reject_unauth_destination
broken_sasl_auth_clients = yesПока вроде всё..
Ура!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Аааааааааааааааааа!!!!!!!!!!!!!!!!!
получилось!!!!!!!!!!!!!!!!!!!!!
Наконец-то я завёл sasl аутентификацию. Долго у меня каменная чаша не выходила, а всё из-за того, что проморгал в манах строчку:
получилось!!!!!!!!!!!!!!!!!!!!!
235 2.7.0 Authentication successful!!!
Наконец-то я завёл sasl аутентификацию. Долго у меня каменная чаша не выходила, а всё из-за того, что проморгал в манах строчку:
IMPORTANT: To get sasldb running, make sure that you set the SASL domain (realm) to a fully qualified domain name.Ладно, пора спать идти, завтра напишу краткий ман по прикручиванию сасла к постфиксу.
среда, 9 июля 2008 г.
Катание на супербайке
Сегодня, вернее уже вчера, товарищ Мегавольт подбросил меня до метро на своём Кавасаки. Вообще, круто было прокатиться, только несколько отвлекали две вещи - я пытался не свалиться с мотоцикла и пытался не потерять шлем Мегавольта, который я как следует не закрепил )
Особо порадовало, как мотик рвёт с места, правда, особо разогнаться было негде, но оно к лучшему )
Особо порадовало, как мотик рвёт с места, правда, особо разогнаться было негде, но оно к лучшему )
четверг, 3 июля 2008 г.
Рекорд состоялся!
Цитата с Spreadfirefox :
Благодаря поддержке изумительного сообщества Mozilla, мы установили Мировой Рекорд Гиннесса для программы с наибольшим количеством загрузок за 24 часа.
среда, 2 июля 2008 г.
Происки АОЛ
Вчера копытцо мне сказало - аська не работает, старый клиент. Обновил копыту - заработало. Сегодня прочитал, что асечные сервера стали требовать поддержку 6 протокола. Интересно, нет ли тут связи с пропихиванием аккаунта 12111 ?.. ИМХО, аол всё же ищет пути впаривания людям, юзающих квип, пиджин и т.д., своего поганого клиента.
Подписаться на:
Сообщения (Atom)