<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jared.kiev.ua</title>
	<atom:link href="http://jared.kiev.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://jared.kiev.ua</link>
	<description>Сетап как стиль жизни</description>
	<lastBuildDate>Thu, 12 Aug 2010 13:08:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Exim &#8211; ошибка в конфиге</title>
		<link>http://jared.kiev.ua/2010/07/exim-bug/</link>
		<comments>http://jared.kiev.ua/2010/07/exim-bug/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 11:10:09 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[Exim]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[Почта]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[Spamassassin]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=228</guid>
		<description><![CDATA[<p>К сожалению, в мою <a href="http://jared.kiev.ua/2010/01/isp-mailserver-1-exim/">конфигурацию</a> Экзима закралась ошибка, которая хоть и появлялась редко, была довольно досадной. В частности, при определенных условиях, ACL, который проверяет почту на спам, не видел переменную, в которой хранился адрес адресата и не отрабатывал. В основную статью изменения уже добавлены, решил выложить дополнительный пост для тех, кто ее не будет перечитывать. Итак, надо поправить 2 файла: 500.acl-check-data.conf и configure.</p>
<p><a href="http://jared.kiev.ua/2010/07/exim-bug/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>К сожалению, в мою <a href="http://jared.kiev.ua/2010/01/isp-mailserver-1-exim/">конфигурацию</a> Экзима закралась ошибка, которая хоть и появлялась редко, была довольно досадной. В частности, при определенных условиях, ACL, который проверяет почту на спам, не видел переменную, в которой хранился адрес адресата и не отрабатывал. В основную статью изменения уже добавлены, решил выложить дополнительный пост для тех, кто ее не будет перечитывать. Итак, надо поправить 2 файла: 500.acl-check-data.conf и configure.</p>
<p>500.acl-check-data.conf: после &laquo;.ifdef USE_SPAMD&raquo; добавляем строку:</p>
<pre>warn set acl_m5 = $acl_c_lp
</pre>
<p>configure: после строки &laquo;acl_check_rcpt:&raquo; вставляем:</p>
<pre>warn set acl_c_lp       = $local_part@$domain</pre>
<p>Перед обоими вставками лучше вставить пустую строку.</p>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/07/exim-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновляем систему по-быстрому</title>
		<link>http://jared.kiev.ua/2010/06/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83-%d0%bf%d0%be-%d0%b1%d1%8b%d1%81%d1%82%d1%80%d0%be%d0%bc%d1%83/</link>
		<comments>http://jared.kiev.ua/2010/06/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83-%d0%bf%d0%be-%d0%b1%d1%8b%d1%81%d1%82%d1%80%d0%be%d0%bc%d1%83/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 14:12:33 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[cvsup]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=224</guid>
		<description><![CDATA[<p>Почти во всех руководствах по FreeBSD для обновления системы прелдагают использовать классический cvsup, либо как вариант &#8211; cvsup-without-gui. Однако, то же самое можно делать, не устанавливая в систему никаких дополнительных пакетов и гораздо быстрее. Для этого мы воспользуемся аналогом cvsup, поставляемым с базовой системой &#8211; csup.</p>
<p><a href="http://jared.kiev.ua/2010/06/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83-%d0%bf%d0%be-%d0%b1%d1%8b%d1%81%d1%82%d1%80%d0%be%d0%bc%d1%83/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Почти во всех руководствах по FreeBSD для обновления системы прелдагают использовать классический cvsup, либо как вариант &#8211; cvsup-without-gui. Однако, то же самое можно делать, не устанавливая в систему никаких дополнительных пакетов и гораздо быстрее. Для этого мы воспользуемся аналогом cvsup, поставляемым с базовой системой &#8211; csup.</p>
<p>Файлы для обновления портов и системы сразу после установки доступны в каталоге /usr/share/examples/cvsup. Там же и поправим нужный: в моем случае &#8211; файл обновления портов ports-supfile:</p>
<pre># ee /usr/share/examples/cvsup/ports-supfile

<span style="color: #000000;"># Сервер, с которого обновляться, в моем случае ftp6.ua.FreeBSD.org</span>
*default host=ftp6.ua.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix

*default compress

# Обновлять все дерево портов
ports-all
</pre>
<p>Вот и все, дальше остается только запустить обновление командой:</p>
<pre># csup /usr/share/examples/cvsup/ports-supfile
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/06/%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83-%d0%bf%d0%be-%d0%b1%d1%8b%d1%81%d1%82%d1%80%d0%be%d0%bc%d1%83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мониторинг с помощью Zabbix: установка Zabbix</title>
		<link>http://jared.kiev.ua/2010/03/zabbix-install/</link>
		<comments>http://jared.kiev.ua/2010/03/zabbix-install/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 22:06:34 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[jail]]></category>
		<category><![CDATA[Мониторинг]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=210</guid>
		<description><![CDATA[<p style="text-align: justify;">Как и многие коллеги-администраторы, долгое время я пользовался для мониторинга всего и вся либо Nagios, либо чем-то самописным &#8211; так сложилось исторически. В последнее время стало изрядно лениво лазить по конфигурационным файлам, чтоб добавить хост, сервис и т.п., а потом еще и проверять в веб-интерфейсе, все ли видно хорошо. Захотелось некой удобной софтины для мониторинга, с конфигурацией в БД, удобным веб-интерфейсом и прочими прелестями. В качестве таковой был выбран Zabbix и честно говоря, вполне себя оправдывает, разве что ресурсов ест многовато. Им сегодня и займемся:</p>
<p><a href="http://jared.kiev.ua/2010/03/zabbix-install/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Как и многие коллеги-администраторы, долгое время я пользовался для мониторинга всего и вся либо Nagios, либо чем-то самописным &#8211; так сложилось исторически. В последнее время стало изрядно лениво лазить по конфигурационным файлам, чтоб добавить хост, сервис и т.п., а потом еще и проверять в веб-интерфейсе, все ли видно хорошо. Захотелось некой удобной софтины для мониторинга, с конфигурацией в БД, удобным веб-интерфейсом и прочими прелестями. В качестве таковой был выбран Zabbix и честно говоря, вполне себя оправдывает, разве что ресурсов ест многовато. Им сегодня и займемся:</p>
<pre># cd /usr/ports/net-mgmt/zabbix-server
# make install
┌────────────────────────────────────────────────────────────────────┐
 │                Options for zabbix-server 1.8.1,2                   │
 │ ┌────────────────────────────────────────────────────────────────┐ │
 │ │         [X] MYSQL   Use MySQL backend                          │ │
 │ │         [ ] PGSQL   Use PostgreSQL backend                     │ │
 │ │         [ ] SQLITE  Use SQLite backend                         │ │
 │ │         [ ] IPV6    Support for IPv6                           │ │
 │ │         [ ] LDAP    Support for checking LDAP servers          │ │
 │ │         [X] JABBER  Use jabber media type                      │ │
 │ │         [X] FPING   Use fping for pinging hosts                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 ├─└────────────────────────────────────────────────────────────────┘─┤
 │                       [  OK  ]       Cancel                        │
 └────────────────────────────────────────────────────────────────────┘
</pre>
<p style="text-align: justify;">Пока он ставится, немного расскажу о идеологии софтины. Состоит она из нескольких частей: сервера, агента, фронтенда. Сервер умеет опрашивать агентов или сами объекты мониторинга (в случае с последними поддерживаются протоколы SNMP и IPMI). Агент ставится на объект мониторинга (версии агента есть для широкого перечня операционных систем, включая винды) и шлет данные на сервер, также умеет выполнять на объекте заданные команды, фронтенд стоит на веб-сервере и показывает весь процесс. К базе данных обращаются сервер и фронтенд, агентам она не нужна. Создаем ее (исходим из того, что MySQL у нас на том же хосте, где zabbix-сервер):</p>
<pre># mysql
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpassword';
GRANT USAGE ON * . * TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpassword' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE DATABASE IF NOT EXISTS `zabbix` ;
GRANT ALL PRIVILEGES ON `zabbix` . * TO 'zabbix'@'localhost';
quit;
# cd /usr/local/share/zabbix/server/create
# cat schema/mysql.sql data/data.sql data/images_mysql.sql | mysql -uzabbix -pzabbixpassword zabbix
# echo zabbix_server_enable=\"YES\" &gt;&gt; /etc/rc.conf
# cp /usr/local/etc/zabbix/zabbix_server.conf.sample /usr/local/etc/zabbix/zabbix_server.conf
# ee /usr/local/etc/zabbix/zabbix_server.conf
</pre>
<p>Настройки по умолчанию достаточно разумны, потому файл /usr/local/etc/zabbix/zabbix_server.conf небольшой, для справки потом можно будет заглянуть в дефолтный файл:</p>
<pre><span style="color: #000000;"># Исходящий IP, с него будут осуществляться соединения с агентами и объектами мониторинга
</span>SourceIP=192.168.1.10

<span style="color: #000000;"># Лог-файл
</span>LogFile=/var/log/zabbix_server.log

<span style="color: #000000;"># Размер лог-файла, в мегабайтах, 0 отключает ротацию лога
</span>LogFileSize=10

<span style="color: #000000;"># Уровень дебага, 0 - отключить, 1 - критические ошибки, 2 - ошибки, 3 - предупреждения, 4 - дебаг
</span>DebugLevel=3

<span style="color: #000000;"># Хост БД
</span>DBHost=localhost

<span style="color: #000000;"># Название БД
</span>DBName=zabbix

<span style="color: #000000;"># Пользователь БД
</span>DBUser=zabbix

<span style="color: #000000;"># Пароль БД
</span>DBPassword=zabbixpassword

<span style="color: #000000;"># Путь к Mysql-сокету
</span>DBSocket=/tmp/mysql.sock

<span style="color: #000000;"># Порт SQL-сервера, если используем сокет - не надо
</span># DBPort=3306
</pre>
<p>Если заббикс стоит, как в моем случае, в джейле, то на хост-машине надо в /etc/sysctl.conf добавить:</p>
<pre>security.jail.sysvipc_allowed=1
kern.ipc.shmall=2097152
kern.ipc.shmmax=2147483648</pre>
<p>На этом все, сервер можно запускать:</p>
<pre># touch /var/log/zabbix_server.log
# chown zabbix:zabbix /var/log/zabbix_server.log
# /usr/local/etc/rc.d/zabbix_server start</pre>
<p>Теперь займемся фронтендом.</p>
<pre># cd /usr/ports/math/php5-bcmath
# make install
# cd /usr/ports/net-mgmt/zabbix-server/work/zabbix-1.8.1/frontends/php
# cp -R * /usr/local/www/vhosts/zabbix.jared.kiev.ua
# cd /usr/local/www/vhosts/zabbix.jared.kiev.ua/conf/
# cp zabbix.conf.php.example zabbix.conf.php
# ee zabbix.conf.php
</pre>
<p>Тут вписываем параметры доступа к БД и прочее:</p>
<pre>&lt;?php
global $DB;

$DB["TYPE"]             = "MYSQL";
$DB["SERVER"]           = "localhost";
$DB["PORT"]             = "0";
$DB["DATABASE"]         = "zabbix";
$DB["USER"]             = "zabbix";
$DB["PASSWORD"]         = "zabbixpassword";
$ZBX_SERVER             = "localhost";
$ZBX_SERVER_PORT        = "10051";
$ZBX_SERVER_NAME        = "";

$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;
?&gt;
</pre>
<p>Все, теперь можно смело заходить в фронтенд с логином Admin и паролем zabbix и заниматься дальнейшей настройкой системы.</p>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/03/zabbix-install/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Fastest CVSUP &#8211; обновляемся быстро</title>
		<link>http://jared.kiev.ua/2010/02/fastest-cvsup/</link>
		<comments>http://jared.kiev.ua/2010/02/fastest-cvsup/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 20:15:34 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[cvsup]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=208</guid>
		<description><![CDATA[<p>При обновлении системы, портов и т.п. неизменно хочется, чтоб оно прошло побыстрее. В этом нам поможет утилита fastest cvsup, которая подберет самый быстрый cvsup-сервер. В установке и настройке она очень проста:</p>
<p><a href="http://jared.kiev.ua/2010/02/fastest-cvsup/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>При обновлении системы, портов и т.п. неизменно хочется, чтоб оно прошло побыстрее. В этом нам поможет утилита fastest cvsup, которая подберет самый быстрый cvsup-сервер. В установке и настройке она очень проста:</p>
<pre># cd /usr/ports/sysutils/fastest_cvsup
# make install

 ┌────────────────────────────────────────────────────────────────────┐
 │                Options for fastest_cvsup 0.2.9_6                   │
 │ ┌────────────────────────────────────────────────────────────────┐ │
 │ │           [ ] ROUNDTRIP  Build with round-trip patch           │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 │ │                                                                │ │
 ├─└────────────────────────────────────────────────────────────────┘─┤
 │                       [  OK  ]       Cancel                        │
 └────────────────────────────────────────────────────────────────────┘</pre>
<p>Опции у утилиты достаточно просты и по большому счету, нам понадобится только опция -c, после которой задается 2-буквенный код страны. Дальше она выбирает самый близкий по пингу к нам официальный sup-сервер:</p>
<pre># fastest_cvsup -c ua
&gt;&gt;  Querying servers in countries: ua
--&gt; Connecting to cvsup.ua.freebsd.org [83.218.232.71]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 14.70 ms
--&gt; Connecting to cvsup2.ua.freebsd.org [62.244.55.197]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 2.15 ms
--&gt; Connecting to cvsup3.ua.freebsd.org [212.42.64.9]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 2.93 ms
--&gt; Connecting to cvsup4.ua.freebsd.org [82.193.96.50]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 1.81 ms
--&gt; Connecting to cvsup5.ua.freebsd.org [213.186.196.224]...
 * error: connect: timeout
--&gt; Connecting to cvsup6.ua.freebsd.org [62.149.2.9]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 1.99 ms
--&gt; Connecting to cvsup7.ua.freebsd.org [213.186.196.224]...
 * error: connect: timeout
--&gt; Connecting to cvsup8.ua.freebsd.org [83.218.232.71]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 2.31 ms
--&gt; Connecting to cvsup9.ua.freebsd.org [80.249.224.11]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 12.62 ms
--&gt; Connecting to cvsup10.ua.freebsd.org [78.152.160.14]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 16.40 ms
--&gt; Connecting to cvsup11.ua.freebsd.org [217.20.163.35]...
 - server replied: OK 17 0 SNAP_16_1h CVSup server ready
 - time taken: 2.46 ms

&gt;&gt;  Speed Daemons:
 - 1st: cvsup4.ua.freebsd.org
 - 2nd: cvsup6.ua.freebsd.org
 - 3rd: cvsup2.ua.freebsd.org</pre>
<p>Вот и все, теперь осталось только вписать понравившийся сервер в конфиг.</p>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/02/fastest-cvsup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ищем ошибки в работе exim</title>
		<link>http://jared.kiev.ua/2010/02/exim-debug/</link>
		<comments>http://jared.kiev.ua/2010/02/exim-debug/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 15:21:20 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[Exim]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Почта]]></category>
		<category><![CDATA[e-mail]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=204</guid>
		<description><![CDATA[<p>Бывает, что какое-либо письмо не проходит и в логах видно что-то странное, причем методы диагностики без включения полных логов не помогают. Тогда  приходится делать так:</p>
<pre># /usr/local/etc/rc.d/exim stop
# exim -bd -d+all &#62; /var/log/exim-debug.log 2&#62;&#38;1
</pre>
<p>Здесь мы потушили Exim и пустили его в ручном режиме с выводом полной информации о его работе (-d+all). Неприятная особенность заключается в том, что Exim пишет лог своей работы в stderr, с которым довольно неудобно работать. Потому конструкция &#171;&#62; /var/log/exim-debug.log 2&#62;&#38;1&#8243; перенаправляет stderr в файл /var/log/exim-debug.log.</p>
<p><a href="http://jared.kiev.ua/2010/02/exim-debug/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Бывает, что какое-либо письмо не проходит и в логах видно что-то странное, причем методы диагностики без включения полных логов не помогают. Тогда  приходится делать так:</p>
<pre># /usr/local/etc/rc.d/exim stop
# exim -bd -d+all &gt; /var/log/exim-debug.log 2&gt;&amp;1
</pre>
<p>Здесь мы потушили Exim и пустили его в ручном режиме с выводом полной информации о его работе (-d+all). Неприятная особенность заключается в том, что Exim пишет лог своей работы в stderr, с которым довольно неудобно работать. Потому конструкция &laquo;&gt; /var/log/exim-debug.log 2&gt;&amp;1&#8243; перенаправляет stderr в файл /var/log/exim-debug.log.</p>
<p>Все, теперь можно ждать копии проблемного письма, другие пользователи при этом продолжат спокойно работать. После того, как собрали нужное для устранения ошибки количество информации, останавливаем ручной режим нажатием Ctrl-C и запускаем Exim в нормальном режиме работы:</p>
<pre># /usr/local/etc/rc.d/exim start</pre>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/02/exim-debug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FreeBSD jail по-быстрому</title>
		<link>http://jared.kiev.ua/2010/02/freebsd-quick-jail/</link>
		<comments>http://jared.kiev.ua/2010/02/freebsd-quick-jail/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 22:53:44 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[jail]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=196</guid>
		<description><![CDATA[<p>Итак, как следует из названия, сейчас мы будем в ускоренном темпе поднимать jail на FreeBSD 7.2. Почему в ускоренном? В сети есть масса статей на эту тему, там все разжевывается достаточно подробно и, как правило, с кучей лишних действий, которые в современной системе уже не обязательны. Потому мы обойдемся без лишних движений и сделаем так, чтоб все работало. Итак, начнем с обновления системных исходников:</p>
<p><a href="http://jared.kiev.ua/2010/02/freebsd-quick-jail/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Итак, как следует из названия, сейчас мы будем в ускоренном темпе поднимать jail на FreeBSD 7.2. Почему в ускоренном? В сети есть масса статей на эту тему, там все разжевывается достаточно подробно и, как правило, с кучей лишних действий, которые в современной системе уже не обязательны. Потому мы обойдемся без лишних движений и сделаем так, чтоб все работало. Итак, начнем с обновления системных исходников:</p>
<pre># pkg_add -r cvsup-without-gui
# ee /usr/share/examples/cvsup/stable-supfile
</pre>
<p>Правим *default host=CHANGE_THIS.FreeBSD.org на хост, который нам подходит, в моем случае это ftp6.ua.freebsd.org. Потом подготовим структуру каталогов для джейла (мой джейл будет носить гордое имя mon) и запускаем сам процесс обновления:</p>
<pre># mkdir -p /usr/local/jails/mon
# cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile
</pre>
<p>Пока он идет,  добавим несколько строк в файл /etc/rc.conf :</p>
<pre><span style="color: #000000;"># Говорим syslogd не логгировать ничего из сети, чтоб не мешать логи в кучу</span>
syslogd_flags="-ss"

<span style="color: #000000;"># Общие настройки для всех джейлов</span>
jail_enable="YES"
jail_devfs_enable="YES"
jail_procfs_enable="YES"

<span style="color: #000000;"># Тут список джейлов, которые надо запускать при старте системы, указываются через пробел</span>
jail_list="mon"

<span style="color: #000000;"># Интерфейс, на который система повесит алиасы для джейлов, на самих интерфейсах прописывать ничего не надо</span>
jail_interface="lo0"

jail_exec_start="/bin/sh /etc/rc"
jail_exec_stop="/bin/sh /etc/rc.shutdown"

<span style="color: #000000;"># Настройки для джейла mon</span>
jail_mon_rootdir="/usr/local/jails/mon"
jail_mon_hostname="mon.jared.kiev.ua"
jail_mon_ip="192.168.10.1"</pre>
<p>Заодно поправим /etc/ssh/sshd_config, чтоб при попытке попасть по SSH в джейл мы не попадали на хост-машину:</p>
<pre>ListenAddress 192.168.23.1
</pre>
<p>Теперь, когда исходники обновили, можем собирать всю конструкцию воедино:</p>
<pre># cd /usr/src
# make buildworld
# make installworld DESTDIR=/usr/local/jails/mon
# cd /usr/src/etc
# make distribution DESTDIR=/usr/local/jails/mon
</pre>
<p>Все, взлетаем и проверяем наличие нашего джейла:</p>
<pre># /etc/rc.d/jail start
Configuring jails:.
Starting jails: mon.jared.kiev.ua.
# jls
   JID  IP Address      Hostname                      Path
     1  192.168.10.1    mon.jared.kiev.ua             /usr/local/jails/mon
</pre>
<p>Теперь, набрав на хост-машине jexec 1 tcsh, мы запустим в джейле с JID 1 оболочку tcsh и окажемся внутри нашей виртуальной машины.</p>
<p>Полезные sysctl-переменные для джейлов:<br />
security.jail.set_hostname_allowed &#8211; если 1, то внутри jail можно поменять имя хоста;<br />
security.jail.socket_unixiproute_only &#8211; если 1 , то сокет в jail можно создать только для доменов PF_LOCAL, PF_INET или PF_ROUTE, иначе, возвращается ошибка;<br />
security.jail.sysvipc_allowed &#8211; если 1, то то в jail можно получить доступ к глобальному System V IPC;<br />
security.jail.getfsstatroot_only &#8211; если 1, то в jail можно получить информацию (df)только о той файловой системе на которой создан jail;<br />
security.jail.allow_raw_sockets &#8211; если 1, то в jail можно создавать raw sockets;<br />
security.jail.chflags_allow &#8211; если 1, то процессы в jail могут модифицировать флаги ФС.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span style="font-family: Verdana;"><span style="color: #3366ff;"># ee /usr/share/examples/cvsup/stable-supfile<br />
</span>Там правим *default host=CHANGE_THIS.FreeBSD.org на хост, который нам подходит, в моем случае это был ftp2.ua.freebsd.org.</p>
<p></span><span style="font-family: Verdana;"><span style="color: #0000bb;"><span style="color: #3366ff;"># cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile</span></span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/02/freebsd-quick-jail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exim: чистим базу грейлистинга</title>
		<link>http://jared.kiev.ua/2010/02/exim-clear-greylist-base/</link>
		<comments>http://jared.kiev.ua/2010/02/exim-clear-greylist-base/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:56:16 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[Почта]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[Greylisting]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=192</guid>
		<description><![CDATA[<p>После публикации <a href="http://jared.kiev.ua/2010/01/isp-mailserver-1-exim/">статьи про экзим</a> принялись мне знакомые, отстроившие по ней сервера, говорить, мол грейлистовая база растет и конца-края ей нету. На самом деле ее вполне реально поддерживать в компактном и актуальном состоянии, в этом нам поможет простой скрипт, расположим его в каталоге /root/scripts и назовем exim-clear-greylist.sh:</p>
<p><a href="http://jared.kiev.ua/2010/02/exim-clear-greylist-base/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>После публикации <a href="http://jared.kiev.ua/2010/01/isp-mailserver-1-exim/">статьи про экзим</a> принялись мне знакомые, отстроившие по ней сервера, говорить, мол грейлистовая база растет и конца-края ей нету. На самом деле ее вполне реально поддерживать в компактном и актуальном состоянии, в этом нам поможет простой скрипт, расположим его в каталоге /root/scripts и назовем exim-clear-greylist.sh:</p>
<pre>#!/bin/sh
echo "DELETE FROM exim_greylist WHERE record_expires &lt; now();" | /usr/local/bin/mysql -u&lt;имя sql-пользователя&gt; -p&lt;пароль sql-пользователя&gt; &lt;название БД экзима&gt;
</pre>
<p>Теперь присвоим скрипту исполняемый бит:</p>
<pre># chmod 700 /root/scripts/exim-clear-greylist.sh
</pre>
<p>и добавим его запуск в /etc/crontab:</p>
<pre># echo "0       0       *       *       *       root    /root/scripts/exim-clear-greylist.sh" &gt;&gt; /etc/crontab
Все, теперь раз в сутки база будет очищаться от записей, у которых истек срок действия.
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/02/exim-clear-greylist-base/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Пишем SMS из Zabbix</title>
		<link>http://jared.kiev.ua/2010/02/sms-from-zabbix/</link>
		<comments>http://jared.kiev.ua/2010/02/sms-from-zabbix/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 14:06:56 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Zabbix]]></category>
		<category><![CDATA[Мониторинг]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sms]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=180</guid>
		<description><![CDATA[<p>В последние несколько дней в нашей гермозоне регулярно творятся проблемы со светом. По состоянию на сейчас уже частично выжжена автоматика, отвечающая за включение генератора и он не включается. Т.к. новую автоматику привезут где-то в конце недели, то генератор пока приходится заводить ручками. Соответственно, от момента падения питания до момента включения генератора должно пройти не более получаса, которые держат упсы, и за эти самые полчаса надо как-то оповестить всех, кто может запустить генератор. Если днем публика читает почту, то ночью, как правило, хочет спать и ее надо будеть. Этим мы и займемся.</p>
<p><a href="http://jared.kiev.ua/2010/02/sms-from-zabbix/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>В последние несколько дней в нашей гермозоне регулярно творятся проблемы со светом. По состоянию на сейчас уже частично выжжена автоматика, отвечающая за включение генератора и он не включается. Т.к. новую автоматику привезут где-то в конце недели, то генератор пока приходится заводить ручками. Соответственно, от момента падения питания до момента включения генератора должно пройти не более получаса, которые держат упсы, и за эти самые полчаса надо как-то оповестить всех, кто может запустить генератор. Если днем публика читает почту, то ночью, как правило, хочет спать и ее надо будеть. Этим мы и займемся.</p>
<p>По умолчанию Zabbix предлагает отправку SMS через GSM-модем, подключенный к zabbix-серверу, в моем случае такого нет, однако есть масса служб, которые предлагают отправку смс за деньги. Я остановился на сервисе turbosms.com.ua, вроде как самый недорогой, плюс имеет очевидный плюс &#8211; позволяет отправлять SMS простыми SQL-запросами к их MySQL-базе.</p>
<p>Будем считать, что сам заббикс у нас стоит (про его установку я как-нибудь напишу многабукаф, не в авральном режиме). Заходим в Administration &#8211; Media Types и жмем кнопку Create Media Type. Указываем любое удобное нам имя, тип Script и название скрипта. Сам скрипт при этом должен лежать в каталоге, определенном параметром AlertScriptsPath в /usr/local/etc/zabbix/zabbix_server.conf.</p>
<p>Скрипт в итоге получился такой (на perl):</p>
<pre>#!/usr/bin/perl

use strict;
use POSIX;
use DBI;

my $phone=@ARGV[0];
my $subj=@ARGV[1];
my $msg=@ARGV[2];

my $driver = "mysql";
my $user = "Mylogin";
my $password = "Mypassword";
my $database = "users";
my $dsn = "DBI:$driver:host=77.120.116.10:3306;database=$database";
my $dbh = DBI-&gt;connect($dsn, $user, $password);

my $sql = $dbh-&gt;prepare("INSERT INTO Mylogin (number, sign, message) VALUES ('$phone', 'MyISP', '$msg')");
$sql-&gt;execute;
</pre>
<p>Сделано по-быстрому, но работает.</p>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/02/sms-from-zabbix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Мониторинг и рестарт процессов</title>
		<link>http://jared.kiev.ua/2010/01/process-monitoring-restart/</link>
		<comments>http://jared.kiev.ua/2010/01/process-monitoring-restart/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 16:59:31 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[Shell]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[Скрипты]]></category>
		<category><![CDATA[Мониторинг]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=166</guid>
		<description><![CDATA[<p style="text-align: justify;">Иногда случается, что какая-то софтина ведет себя непредсказуемо и периодически падает. А т.к. часто это бывает достаточно далеко и не всегда под рукой есть Интернет (да и не всегда можно на нужную машину достучаться снаружи), приходится изобретать велосипед. Можно городить какие-либо системы мониторинга а-ля Zabbix, например, но он достаточно громоздкий и смысл в нем не всегда есть, особенно на маленьких халтурках типа офисного гейтвея у небольшой конторы. Есть у меня несколько таких гейтвеев, на одном из них периодически падает squid по непонятной причине. Для того, чтоб не дергать его ручками, был написан следующий скрипт /root/scripts/check_squid.sh:</p>
<p><a href="http://jared.kiev.ua/2010/01/process-monitoring-restart/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Иногда случается, что какая-то софтина ведет себя непредсказуемо и периодически падает. А т.к. часто это бывает достаточно далеко и не всегда под рукой есть Интернет (да и не всегда можно на нужную машину достучаться снаружи), приходится изобретать велосипед. Можно городить какие-либо системы мониторинга а-ля Zabbix, например, но он достаточно громоздкий и смысл в нем не всегда есть, особенно на маленьких халтурках типа офисного гейтвея у небольшой конторы. Есть у меня несколько таких гейтвеев, на одном из них периодически падает squid по непонятной причине. Для того, чтоб не дергать его ручками, был написан следующий скрипт /root/scripts/check_squid.sh:</p>
<pre>#!/bin/sh

<span style="color: #000000;"># Переменные

# Строка, которая должна присутствовать в имени процесса
</span>process="usr/local/sbin/squid"

<span style="color: #000000;"># Строка, которая должна оттствовать в имени процесса
</span>process_exclude="grep"

<span style="color: #000000;"># Количество процессов, при котором надо делать рестарт
</span>process_number="0"

<span style="color: #000000;"># Команда для перезапуска
</span>restart_string="/usr/local/etc/rc.d/squid restart"

# Путь к ps
ps="/bin/ps"

# Путь к grep
grep="/usr/bin/grep"

if [ `$ps -ax | $grep $process | $grep -v $process_exclude | wc -l` -le "$process_number" ]
then
 echo $process is down, restarted!
 $restart_string
fi</pre>
<p style="text-align: justify;">Как видно, все достаточно просто, если количество процессов меньше или равно $process_number, выполняется $restart_string и выводится сообщение, которое позже придет к нам с ежедневным письмом-отчетом. Если с количеством процессов все хорошо, скрипт просто завершает свою работу. Для выполнения скрипта раз в 5 минут добавим в /etc/crontab строчку:</p>
<pre>*/5     *       *       *       *       root    /root/scripts/check_squid.sh
</pre>
<p>Вот и все, от себя добавлю, что этим способом можно мониторить и передергивать любые процессы, не только squid.</p>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/01/process-monitoring-restart/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Почтовый сервер как у провайдера, часть 4: взлетаем</title>
		<link>http://jared.kiev.ua/2010/01/isp-mailserver-4-start/</link>
		<comments>http://jared.kiev.ua/2010/01/isp-mailserver-4-start/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 15:41:52 +0000</pubDate>
		<dc:creator>jared</dc:creator>
				<category><![CDATA[Exim]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Vexim]]></category>
		<category><![CDATA[Почта]]></category>
		<category><![CDATA[e-mail]]></category>

		<guid isPermaLink="false">http://jared.kiev.ua/?p=109</guid>
		<description><![CDATA[<p>Все три предыдущие статьи мы готовились к большому и важному событию в жизни нашего почтового сервера &#8211; его запуску. Теперь, когда все сопутствующее мы настроили, самое время его запустить и проверить. Итак:</p>
<p><a href="http://jared.kiev.ua/2010/01/isp-mailserver-4-start/" class="more-link">Далее&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Все три предыдущие статьи мы готовились к большому и важному событию в жизни нашего почтового сервера &#8211; его запуску. Теперь, когда все сопутствующее мы настроили, самое время его запустить и проверить. Итак:</p>
<pre># chown -R exim:mail /var/log/exim
# chown -R exim:mail /var/mail
# chown -R exim:mail /var/spool
# rm /usr/sbin/sendmail
# ln -s /usr/local/sbin/exim /usr/sbin/sendmail
# rm /usr/bin/mailq
# ln -s /usr/local/sbin/exim /usr/bin/mailq</pre>
<p>Проверим правильность нашей конфигурации exim, выполнив exim -bV. Должно вывести что-то вроде такого:</p>
<pre>Exim version 4.71 #0 (FreeBSD 7.2) built 20-Jan-2010 17:40:29
Copyright (c) University of Cambridge, 1995 - 2007
Probably Berkeley DB version 1.8x (native mode)
Support for: crypteq iconv() use_setclassresources PAM Perl Expand_dlfunc OpenSSL Content_Scanning DKIM Old_Demime Experimental_SPF
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch mysql nis nis0 passwd
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
OpenSSL compile-time version: OpenSSL 0.9.8e 23 Feb 2007
OpenSSL runtime version: OpenSSL 0.9.8e 23 Feb 2007
Configuration file is /usr/local/etc/exim/configure</pre>
<p>Если ошибок нет, идем дальше. К этому времени мы уже создали локальный домен и как минимум постмастера в нем, проверим распознавание локальной почты к нему (тут меняем jared@jared.kiev.ua на созданного пользователя):</p>
<pre># exim -bt jared@jared.kiev.ua
jared@jared.kiev.ua -&gt; /var/mail/jared.kiev.ua/jared
 transport = virtual_delivery</pre>
<p>Если ошибок нет, проверим распознавание почты на внешние адреса:</p>
<pre># exim -bt support@microsoft.com
support@microsoft.com
 router = dnslookup, transport = remote_smtp
 host mail.messaging.microsoft.com [65.55.88.22] MX=10</pre>
<p>Будем считать, что все прошло хорошо и можно пробовать отправлять настоящие тестовые письма локальному пользователю и себе любимому на внешний ящик:</p>
<pre># exim -v jared@jared.kiev.ua
From: jared@jared.kiev.ua
To: jared@jared.kiev.ua
Subject: test

This is a test
^D
LOG: MAIN
 &lt;= root@jared.kiev.ua U=root P=local S=363 T="test"
# delivering 1NZ4L1-0004bb-6B
LOG: MAIN
 =&gt; /var/mail/jared.kiev.ua/jared &lt;jared@jared.kiev.ua&gt; R=virtual_domains T=virtual_delivery
LOG: MAIN
 Completed

# exim -v jared@mail.ru
From: jared@jared.kiev.ua
To: jared@mail.ru
Subject: test 2

This is a test #2
^D
LOG: MAIN
  &lt;= root@jared.kiev.ua U=root P=local S=362 T="test 2"
# delivering 1NZ4Sz-0004cT-DY
Connecting to mail.mail.ru [193.84.77.159]:25 from 123.123.123.123 ... connected
  SMTP&lt;&lt; 220 mail.mail.ru, ESMTP EXIM 4.71
  SMTP&gt;&gt; EHLO mail.mail.ru
  SMTP&lt;&lt; 250-mail.mail.ru Hello mail.mail.ru [123.123.123.123]
         250-SIZE 52428800
         250-PIPELINING
         250-AUTH PLAIN LOGIN CRAM-MD5
         250-STARTTLS
         250 HELP
  SMTP&gt;&gt; STARTTLS
  SMTP&lt;&lt; 220 TLS go ahead
  SMTP&gt;&gt; EHLO mail.mail.ru
  SMTP&lt;&lt; 250-mail.mail.ru Hello mail.mail.ru [123.123.123.123]
         250-SIZE 52428800
         250-PIPELINING
         250-AUTH PLAIN LOGIN CRAM-MD5
         250 HELP
  SMTP&gt;&gt; MAIL FROM:&lt;root@jared.kiev.ua&gt; SIZE=1396
  SMTP&gt;&gt; RCPT TO:&lt;jared@mail.ru&gt;
  SMTP&gt;&gt; DATA
  SMTP&lt;&lt; 250 OK</pre>
<p>Вот в принципе и все, дальше можно проверять разные варианты авторизиции, но, как показывает практика, эта секция, как правило, работает сразу, кому интересно &#8211; вот <a href="http://wombat.stapravda.ru/exim.shtml">статья</a> Wombat-a, а мы будем потихоньку запускаться:</p>
<pre># /usr/local/etc/rc.d/exim start</pre>
<p>В итоге в /var/log/exim/mainlog должно появиться такое сообщение:</p>
<pre>2010-01-24 17:09:58 exim 4.71 daemon started: pid=17604, -q30m, listening for SMTP on [123.123.123.123]:25</pre>
<p>Теперь еще для пущей красоты добавим в файл /etc/crontab строку</p>
<pre class="bash" style="font-family: monospace;"><span style="color: #000000;">0</span>       <span style="color: #000000;">0</span>       <span style="color: #000000; font-weight: bold;">*</span>       <span style="color: #000000; font-weight: bold;">*</span>       <span style="color: #000000; font-weight: bold;">*</span>       <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>exicyclog</pre>
<p>Вуаля, мы взлетели. Спасибо за выбор нашей авиакомпании, желаю приятного полета! <img src='http://jared.kiev.ua/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>
<p class="post-title"><a href="http://jared.kiev.ua/2010/01/isp-mailserver-1-exim/">Почтовый сервер как у провайдера, часть 1: Exim</a></p>
<p class="post-title"><a href="http://jared.kiev.ua/2010/01/isp-mailserver-2-clam-assassin/">Почтовый сервер как у провайдера, часть 2: ClamAV, SpamAssassin, Dovecot</a></p>
<p class="post-title"><a href="http://jared.kiev.ua/2010/01/isp-mailserver-3-vexim/">Почтовый сервер как у провайдера, часть 3: Vexim</a></p>
<p class="post-title"><a href="http://jared.kiev.ua/2010/01/isp-mailserver-4-start/">Почтовый сервер как у провайдера, часть 4: взлетаем</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jared.kiev.ua/2010/01/isp-mailserver-4-start/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
