<?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>Ky6uk&#039;s Blog</title>
	<atom:link href="http://ky6uk.org/feed" rel="self" type="application/rss+xml" />
	<link>http://ky6uk.org</link>
	<description>Очередной прыщебложик... :3</description>
	<lastBuildDate>Wed, 02 Nov 2011 20:49:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Передача звука по сети при помощи PulseAudio</title>
		<link>http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio</link>
		<comments>http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio#comments</comments>
		<pubDate>Wed, 28 Sep 2011 18:33:15 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ALSA]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[PulseAudio]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[музыка]]></category>
		<category><![CDATA[сеть]]></category>

		<guid isPermaLink="false">http://ky6uk.org/?p=1067</guid>
		<description><![CDATA[Возникла необходимость воспроизводить звук с домашнего компьютера на нетбуке. За решением далеко ходить не пришлось &#8212; на помощь пришел PulseAudio. Учитывая, что на десктопе и нетбуке стоит Kubuntu 11.10, настройка заняла всего несколько минут. Условно назовем домашний компьютер клиентом, а нетбук сервером. Первым делом установим саму звуковую систему как на клиент, так и на сервер: [...]]]></description>
			<content:encoded><![CDATA[<p>Возникла необходимость воспроизводить звук с домашнего компьютера на нетбуке. За решением далеко ходить не пришлось &#8212; на помощь пришел <a title="звуковая система для POSIX-совместимых операционных систем" href="http://www.pulseaudio.org/" target="_blank">PulseAudio</a>.</p>
<p>Учитывая, что на десктопе и нетбуке стоит <strong>Kubuntu 11.10</strong>, настройка заняла всего несколько минут.</p>
<p>Условно назовем домашний компьютер клиентом, а нетбук сервером.</p>
<p><span id="more-1067"></span></p>
<ul>
<li>Первым делом установим саму звуковую систему как на клиент, так и на сервер:
<pre class="brush: bash; title: ; notranslate">~$ sudo apt-get install pulseaudio</pre>
</li>
<li>На сервере включим запуск pulseaudio как системный сервис, отредактировав файл <em>/etc/default/pulseaudio</em>:
<pre class="brush: bash; title: ; notranslate">PULSEAUDIO_SYSTEM_START=1</pre>
</li>
<li>Так же на сервере нужно активировать модуль, чтобы принимать звук по сети, добавив следующую строку в <em>/etc/pulse/system.pa</em>:
<pre class="brush: plain; title: ; notranslate">load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/16;127.0.0.0/8</pre>
<blockquote><p>В параметре <strong>auth-ip-acl</strong> через точку с запятой перечисляются адреса, с которых разрешены анонимные соединения. По умолчанию сервер слушает TCP порт 4713.</p></blockquote>
</li>
<li>Теперь на клиенте в файле <em>/etc/pulse/client.conf</em> необходимо указать адрес сервера, на которые будет передаваться весь звук:
<pre class="brush: plain; title: ; notranslate">default-server = tcp:SERVER:4713</pre>
</li>
<li>Если на клиенте используется ALSA, то нужно добавить следующие строки в <em>~/.asoundrc</em>:
<pre class="brush: plain; title: ; notranslate">pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}

# если требуется pulseaudio по умолчанию
#pcm.!default {
#    type pulse
#}
#ctl.!default {
#    type pulse
#}</pre>
</li>
<li>В завершение перезапускаем pulseaudio на сервере командой:
<pre class="brush: bash; title: ; notranslate">~$ sudo service pulseaudio restart</pre>
</li>
</ul>
<blockquote><p>На клиенте, возможно, придется перезапустить KDE, чтобы подключить настройки из <em>~/.asoundrc</em>. После этого весь звук на клиенте через pulseaudio должен будет передаваться на сервер.</p></blockquote>
<h4>Литература</h4>
<ol>
<li><a href="http://www.pulseaudio.org/wiki/Modules#module-native-protocol-unixtcp">Описание модуля <strong>module-native-protocol-unixtcp</strong></a></li>
<li><a href="https://wiki.archlinux.org/index.php/PulseAudio" title="Настройки PulseAudio в ArchLiux">Настройки PulseAudio в ArchLiux</a></li>
<li><a href="http://www.pulseaudio.org/wiki/ServerStrings" title="Формат указания сервера PulseAudio">Формат указания сервера PulseAudio</a></li>
</ol>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/kde-4-5-svezhij-vzglyad-iz-ubuntu-10-10" title="KDE 4.5: свежий взгляд из Ubuntu 10.10">KDE 4.5: свежий взгляд из Ubuntu 10.10</a></li><li><a href="http://ky6uk.org/kcm-gtk-all-apps-in-one-style" title="Все приложения в одном стиле. Продолжение.">Все приложения в одном стиле. Продолжение.</a></li><li><a href="http://ky6uk.org/gtk-qt-engine-all-apps-one-style" title="gtk-qt-engine &#8212; все приложения в одном стиле">gtk-qt-engine &#8212; все приложения в одном стиле</a></li><li><a href="http://ky6uk.org/kmail-1-12-0-openpgp-bab-passphrase" title="KMail 1.12.0 + OpenPGP, &#171;Bad passphrase&#187;">KMail 1.12.0 + OpenPGP, &#171;Bad passphrase&#187;</a></li><li><a href="http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya" title="Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!">Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</title>
		<link>http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya</link>
		<comments>http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya#comments</comments>
		<pubDate>Wed, 04 May 2011 17:56:49 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.org/?p=1060</guid>
		<description><![CDATA[После недавнего релиза Ubuntu 11.04 разработчики уже загрузили архив пакетов со следующей версией 11.10 Oneiric Ocelot на свои сервера. Традиционно классический sources.list, на ваш страх и риск: #### 11.10 binary deb http://archive.ubuntu.com/ubuntu/ oneiric main universe multiverse restricted deb http://archive.ubuntu.com/ubuntu/ oneiric-updates main universe multiverse restricted deb http://archive.ubuntu.com/ubuntu/ oneiric-backports main universe multiverse restricted deb http://archive.ubuntu.com/ubuntu/ oneiric-security main [...]]]></description>
			<content:encoded><![CDATA[<p>После недавнего релиза <strong>Ubuntu 11.04</strong> разработчики уже загрузили архив пакетов со следующей версией <strong>11.10 Oneiric Ocelot</strong> на свои сервера. Традиционно классический <em>sources.list</em>, на ваш страх и риск:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#### 11.10 binary<br />
deb http://archive.ubuntu.com/ubuntu/ oneiric main universe multiverse restricted<br />
deb http://archive.ubuntu.com/ubuntu/ oneiric-updates main universe multiverse restricted<br />
deb http://archive.ubuntu.com/ubuntu/ oneiric-backports main universe multiverse restricted<br />
deb http://archive.ubuntu.com/ubuntu/ oneiric-security main universe multiverse restricted<br />
deb http://archive.ubuntu.com/ubuntu/ oneiric-proposed main universe multiverse restricted<br />
deb http://archive.canonical.com/ubuntu/ natty partner<br />
deb http://extras.ubuntu.com/ubuntu/ natty main<br />
<br />
#### 11.10 sources<br />
deb-src http://archive.ubuntu.com/ubuntu/ oneiric main universe multiverse restricted<br />
deb-src http://archive.ubuntu.com/ubuntu/ oneiric-updates main universe multiverse restricted<br />
deb-src http://archive.ubuntu.com/ubuntu/ oneiric-backports main universe multiverse restricted<br />
deb-src http://archive.ubuntu.com/ubuntu/ oneiric-security main universe multiverse restricted<br />
deb-src http://archive.ubuntu.com/ubuntu/ oneiric-proposed main universe multiverse restricted<br />
deb-src http://archive.canonical.com/ubuntu/ natty partner<br />
deb-src http://extras.ubuntu.com/ubuntu/ natty main</div></div>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li><li><a href="http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami" title="Почтовый SMTP / IMAP сервер своими руками.">Почтовый SMTP / IMAP сервер своими руками.</a></li><li><a href="http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya" title="Ubuntu 11.04 Natty Narwhal. Обновляемся.">Ubuntu 11.04 Natty Narwhal. Обновляемся.</a></li><li><a href="http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej" title="Использование нескольких SSH ключей">Использование нескольких SSH ключей</a></li><li><a href="http://ky6uk.org/vtun-organizaciya-vpn-mezhdu-dvumya-tochkami" title="VTun: организация VPN между двумя точками">VTun: организация VPN между двумя точками</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Почтовый SMTP / IMAP сервер своими руками.</title>
		<link>http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pochtovyj-smtp-imap-server-svoimi-rukami</link>
		<comments>http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami#comments</comments>
		<pubDate>Sun, 09 Jan 2011 21:10:10 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[IMAP]]></category>
		<category><![CDATA[MDA]]></category>
		<category><![CDATA[MTA]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.org/?p=914</guid>
		<description><![CDATA[Давненько я не писал в свой уютненький ничего полезного. Вернее, не писал сюда вообще ничего. Думаю, что пришло время это изменить. За прошедшее время набралось по крайней мере три темы, которые я хотел бы осветить в блоге. Начать решил с установки и настройки своего полноценного почтового сервера на связке Postfix + Dovecot + MySQL в системе [...]]]></description>
			<content:encoded><![CDATA[<p>Давненько я не писал в свой уютненький ничего полезного. Вернее, не писал сюда вообще ничего. Думаю, что пришло время это изменить.</p>
<p>За прошедшее время набралось по крайней мере три темы, которые я хотел бы осветить в блоге. Начать решил с установки и настройки своего полноценного почтового сервера на связке <strong><a title="официальный сайт" href="http://www.postfix.org/">Postfix</a></strong> + <strong><a title="официальный сайт" href="http://www.dovecot.org/">Dovecot</a></strong> + <a style="font-weight: bold;" title="официальный сайт" href="http://www.mysql.com/">MySQL</a> в системе <strong><a title="официальный сайт" href="http://www.debian.org/">Debian</a> Squeeze</strong>.<br />
<span id="more-914"></span></p>
<h4><a name="head"></a>Оглавление</h4>
<ul>
<li><a href="#tools">Инструментарий</a></li>
<li><a href="#start">Подготовка</a></li>
<li><a href="#postfix1">Первичная настройка Postfix</a></li>
<li><a href="#dovecot">Настройка Dovecot</a></li>
<li><a href="#postfix2">Заключительная настройка Postfix</a></li>
<li><a href="#end">Заключение</a></li>
<li><a href="#links">Используемые ресурсы</a></li>
<li><a href="#additions">Дополнения</a></li>
</ul>
<p><a name="tools"></a></p>
<h4>Инструментарий <a href="#head"> ↑ </a></h4>
<p>В качестве <a title="Mail Transfer Agent" href="http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%87%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80">MTA</a> я выбрал Postfix по нескольким причинам: мне он показался самым простым в настройке, обладающим всем необходимым функционалом, активно разрабатывается, имеет хорошую документацию и, самое главное, умеет работать с Dovecot <em>из коробки</em>.</p>
<p><a title="Mail Delivery Agent" href="http://ru.wikipedia.org/wiki/Mail_delivery_agent">MDA</a> был выбран Dovecot за свою хорошую документацию, простоту конфигурирации и возможность тесно работать с Postfix.</p>
<p>Чтобы обеспечить максимальную гибкость, я решил связать почтовую систему с базой данных. Трудностей в выборе <a title="Система Управления Базами Данных" href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85">СУБД</a> не возникло, так как и Postfix и Dovecot могут работать практически с любой хорошо известной (PostgreSQL, SQLite, MySQL). Здесь я взял первое что пришло в голову &#8212; MySQL.</p>
<p>С выбором операционной системы в которой все это дело будет работать проблемы так же не появилось. Выбрать я мог одно из двух: Debian или Ubuntu, с которыми я достаточно хорошо знаком. Debian был проверен временем и все необходимое для настройки было в репозиториях, поэтому я остановился на нем. Squeeze &#8212; потому, что stable морально устарел, а testing уже несколько месяцев в <em>заморозке</em> перед релизом.</p>
<p><a name="start"></a></p>
<h4>Подготовка <a href="#head"> ↑ </a></h4>
<p>Установим необходимые пакеты:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~$ sudo aptitude install postfix postfix-mysql dovecot-imapd mysql-server</div></div>
<p>Подготовим mysql:</p>
<div class="codecolorer-container mysql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;height:300px;"><div class="mysql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">-- создаем нового пользователя mailuser@localhost с паролем mailpassword</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CREATE"><span style="color: #990099; font-weight: bold;">CREATE</span></a> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html"><span style="color: #000099;">USER</span></a> <span style="color: #008000;">'mailuser'</span>@<span style="color: #008000;">'localhost'</span> IDENTIFIED BY <span style="color: #008000;">'mailpassword'</span><span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- создадим базу данных mailserver</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CREATE"><span style="color: #990099; font-weight: bold;">CREATE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=DATABASE"><span style="color: #990099; font-weight: bold;">DATABASE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=IF%20NOT%20EXISTS"><span style="color: #990099; font-weight: bold;"><a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/control-flow-functions.html"><span style="color: #009900;">IF</span></a> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> EXISTS</span></a> <span style="color: #008000;">`mailserver`</span><span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- дадим созданному пользователю все права на созданную БД</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=GRANT"><span style="color: #990099; font-weight: bold;">GRANT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ALL"><span style="color: #990099; font-weight: bold;">ALL</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=PRIVILEGES"><span style="color: #990099; font-weight: bold;">PRIVILEGES</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ON"><span style="color: #990099; font-weight: bold;">ON</span></a> <span style="color: #008000;">`mailserver`</span>.<span style="color: #CC0099;">*</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=TO"><span style="color: #990099; font-weight: bold;">TO</span></a> <span style="color: #008000;">'mailuser'</span>@<span style="color: #008000;">'localhost'</span><span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- выбираем созданную БД</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=USE"><span style="color: #990099; font-weight: bold;">USE</span></a> mailserver<span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- создаем таблицу для хранения виртуальных доменов</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CREATE"><span style="color: #990099; font-weight: bold;">CREATE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=TABLE"><span style="color: #990099; font-weight: bold;">TABLE</span></a> <span style="color: #008000;">`virtual<span style="color: #008080; font-weight: bold;">_</span>domains`</span> <span style="color: #FF00FF;">&#40;</span><br />
id <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INT"><span style="color: #999900; font-weight: bold;">INT</span></a> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=AUTO_INCREMENT"><span style="color: #FF9900; font-weight: bold;">AUTO_INCREMENT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=PRIMARY%20KEY"><span style="color: #990099; font-weight: bold;">PRIMARY KEY</span></a><span style="color: #000033;">,</span><br />
name <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VARCHAR"><span style="color: #999900; font-weight: bold;">VARCHAR</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">50</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a><br />
<span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ENGINE"><span style="color: #990099; font-weight: bold;">ENGINE</span></a> <span style="color: #CC0099;">=</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INNODB"><span style="color: #990099; font-weight: bold;">INNODB</span></a><span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- создаем таблицу для виртуальных пользователей</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CREATE"><span style="color: #990099; font-weight: bold;">CREATE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=TABLE"><span style="color: #990099; font-weight: bold;">TABLE</span></a> <span style="color: #008000;">`virtual<span style="color: #008080; font-weight: bold;">_</span>users`</span> <span style="color: #FF00FF;">&#40;</span><br />
id <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INT"><span style="color: #999900; font-weight: bold;">INT</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">11</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=AUTO_INCREMENT"><span style="color: #FF9900; font-weight: bold;">AUTO_INCREMENT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=PRIMARY%20KEY"><span style="color: #990099; font-weight: bold;">PRIMARY KEY</span></a><span style="color: #000033;">,</span><br />
domain_id <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INT"><span style="color: #999900; font-weight: bold;">INT</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">11</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a><span style="color: #000033;">,</span><br />
<a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html"><span style="color: #000099;">user</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VARCHAR"><span style="color: #999900; font-weight: bold;">VARCHAR</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">40</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a><span style="color: #000033;">,</span><br />
<a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/encryption-functions.html"><span style="color: #000099;">PASSWORD</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VARCHAR"><span style="color: #999900; font-weight: bold;">VARCHAR</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">32</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a><span style="color: #000033;">,</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CONSTRAINT"><span style="color: #990099; font-weight: bold;">CONSTRAINT</span></a> UNIQUE_EMAIL <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=UNIQUE"><span style="color: #FF9900; font-weight: bold;">UNIQUE</span></a> <span style="color: #FF00FF;">&#40;</span><br />
domain_id<span style="color: #000033;">,</span><br />
<a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html"><span style="color: #000099;">user</span></a><br />
<span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">,</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=FOREIGN%20KEY"><span style="color: #990099; font-weight: bold;">FOREIGN KEY</span></a> <span style="color: #FF00FF;">&#40;</span> domain_id <span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=REFERENCES"><span style="color: #990099; font-weight: bold;">REFERENCES</span></a> virtual_domains<span style="color: #FF00FF;">&#40;</span> id <span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ON"><span style="color: #990099; font-weight: bold;">ON</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=DELETE"><span style="color: #990099; font-weight: bold;">DELETE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CASCADE"><span style="color: #990099; font-weight: bold;">CASCADE</span></a><br />
<span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ENGINE"><span style="color: #990099; font-weight: bold;">ENGINE</span></a> <span style="color: #CC0099;">=</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INNODB"><span style="color: #990099; font-weight: bold;">INNODB</span></a><span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- создаем таблицу для хранения виртуальных алиасов</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CREATE"><span style="color: #990099; font-weight: bold;">CREATE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=TABLE"><span style="color: #990099; font-weight: bold;">TABLE</span></a> <span style="color: #008000;">`virtual<span style="color: #008080; font-weight: bold;">_</span>aliases`</span> <span style="color: #FF00FF;">&#40;</span><br />
id <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INT"><span style="color: #999900; font-weight: bold;">INT</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">11</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=AUTO_INCREMENT"><span style="color: #FF9900; font-weight: bold;">AUTO_INCREMENT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=PRIMARY%20KEY"><span style="color: #990099; font-weight: bold;">PRIMARY KEY</span></a><span style="color: #000033;">,</span><br />
domain_id <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INT"><span style="color: #999900; font-weight: bold;">INT</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">11</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a><span style="color: #000033;">,</span><br />
source <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VARCHAR"><span style="color: #999900; font-weight: bold;">VARCHAR</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">40</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a><span style="color: #000033;">,</span><br />
destination <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VARCHAR"><span style="color: #999900; font-weight: bold;">VARCHAR</span></a><span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">80</span> <span style="color: #FF00FF;">&#41;</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html"><span style="color: #CC0099; font-weight: bold;">NOT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=NULL"><span style="color: #9900FF; font-weight: bold;">NULL</span></a><span style="color: #000033;">,</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=FOREIGN%20KEY"><span style="color: #990099; font-weight: bold;">FOREIGN KEY</span></a> <span style="color: #FF00FF;">&#40;</span> domain_id <span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=REFERENCES"><span style="color: #990099; font-weight: bold;">REFERENCES</span></a> virtual_domains<span style="color: #FF00FF;">&#40;</span> id <span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ON"><span style="color: #990099; font-weight: bold;">ON</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=DELETE"><span style="color: #990099; font-weight: bold;">DELETE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CASCADE"><span style="color: #990099; font-weight: bold;">CASCADE</span></a><br />
<span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ENGINE"><span style="color: #990099; font-weight: bold;">ENGINE</span></a> <span style="color: #CC0099;">=</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INNODB"><span style="color: #990099; font-weight: bold;">INNODB</span></a><span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- создаем виртуальную таблицу с пользовательскими аккаунтами</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CREATE"><span style="color: #990099; font-weight: bold;">CREATE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VIEW"><span style="color: #990099; font-weight: bold;">VIEW</span></a> <span style="color: #008000;">`view<span style="color: #008080; font-weight: bold;">_</span>users`</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=AS"><span style="color: #990099; font-weight: bold;">AS</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=SELECT"><span style="color: #990099; font-weight: bold;">SELECT</span></a> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html"><span style="color: #000099;">CONCAT</span></a><span style="color: #FF00FF;">&#40;</span>virtual_users.<a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html"><span style="color: #000099;">user</span></a><span style="color: #000033;">,</span> <span style="color: #008000;">'@'</span><span style="color: #000033;">,</span> virtual_domains.name <span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=AS"><span style="color: #990099; font-weight: bold;">AS</span></a> email<span style="color: #000033;">,</span> virtual_users.<a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/encryption-functions.html"><span style="color: #000099;">password</span></a><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=FROM"><span style="color: #990099; font-weight: bold;">FROM</span></a> virtual_users<br />
<a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html"><span style="color: #000099;">LEFT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=JOIN"><span style="color: #990099; font-weight: bold;">JOIN</span></a> virtual_domains <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ON"><span style="color: #990099; font-weight: bold;">ON</span></a> virtual_users.domain_id <span style="color: #CC0099;">=</span> virtual_domains.id<span style="color: #000033;">;</span><br />
<br />
<span style="color: #808080; font-style: italic;">-- создаем виртуальную таблицу с алиасами</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=CREATE"><span style="color: #990099; font-weight: bold;">CREATE</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VIEW"><span style="color: #990099; font-weight: bold;">VIEW</span></a> <span style="color: #008000;">`view<span style="color: #008080; font-weight: bold;">_</span>aliases`</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=AS"><span style="color: #990099; font-weight: bold;">AS</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=SELECT"><span style="color: #990099; font-weight: bold;">SELECT</span></a> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html"><span style="color: #000099;">CONCAT</span></a><span style="color: #FF00FF;">&#40;</span> virtual_aliases.source<span style="color: #000033;">,</span> <span style="color: #008000;">'@'</span><span style="color: #000033;">,</span> virtual_domains.name <span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=AS"><span style="color: #990099; font-weight: bold;">AS</span></a> email<span style="color: #000033;">,</span> destination<br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=FROM"><span style="color: #990099; font-weight: bold;">FROM</span></a> virtual_aliases<br />
<a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html"><span style="color: #000099;">LEFT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=JOIN"><span style="color: #990099; font-weight: bold;">JOIN</span></a> virtual_domains <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=ON"><span style="color: #990099; font-weight: bold;">ON</span></a> virtual_aliases.domain_id <span style="color: #CC0099;">=</span> virtual_domains.id<span style="color: #000033;">;</span></div></div>
<p><a name="postfix1"></a></p>
<h4>Первичная настройка Postfix <a href="#head"> ↑ </a></h4>
<p>Создадим файл <strong>/etc/postfix/mysql_virtual_domains.cf</strong> со следующим содержанием:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">user</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailuser</span><br />
<span style="color: #000099;">password</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailpassword</span><br />
<span style="color: #000099;">hosts</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 127.0.0.1</span><br />
<span style="color: #000099;">dbname</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailserver</span><br />
<span style="color: #000099;">query</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> SELECT 1 FROM virtual_domains WHERE name='%s'</span></div></div>
<p>Добавим в файл <strong>/etc/postfix/main.cf</strong> опцию <a href="http://www.postfix.org/postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.<br />
Эта опция проверяет список доменов с которыми Postfix может работать. В данном случает результат будет взят из MySQL:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">virtual_mailbox_domains</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mysql:/etc/postfix/mysql_virtual_domains.cf</span></div></div>
<p>Добавим в базу новый виртуальный домен:</p>
<div class="codecolorer-container mysql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="mysql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INSERT"><span style="color: #990099; font-weight: bold;">INSERT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INTO"><span style="color: #990099; font-weight: bold;">INTO</span></a> virtual_domains <span style="color: #FF00FF;">&#40;</span>name<span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VALUES"><span style="color: #990099; font-weight: bold;">VALUES</span></a> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">'example.com'</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></div></div>
<p>Если все настроено верно, то следующая команда выдаст в качестве результата единицу:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~$ sudo postmap -q example.com mysql:/etc/postfix/mysql_virtual_domains.cf</div></div>
<p>Создадим файл <strong>/etc/postfix/mysql_virtual_maps.cf</strong>:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">user</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailuser</span><br />
<span style="color: #000099;">password</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailpassword</span><br />
<span style="color: #000099;">hosts</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 127.0.0.1</span><br />
<span style="color: #000099;">dbname</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailserver</span><br />
<span style="color: #000099;">query</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> SELECT 1 FROM view_users WHERE email='%s'</span></div></div>
<p>Добавим в файл <strong>/etc/postfix/main.cf</strong> опцию <a href="http://www.postfix.org/postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>.<br />
Эта опция проверяет существование почтовых адресов на сервере:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">virtual_mailbox_maps</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mysql:/etc/postfix/mysql_virtual_maps.cf</span></div></div>
<p>Добавим в базу нового пользователя <em>username</em> с паролем <em>password</em> на домене <em>example.com</em>:</p>
<div class="codecolorer-container mysql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="mysql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INSERT"><span style="color: #990099; font-weight: bold;">INSERT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INTO"><span style="color: #990099; font-weight: bold;">INTO</span></a> <span style="color: #008000;">`virtual<span style="color: #008080; font-weight: bold;">_</span>users`</span> <span style="color: #FF00FF;">&#40;</span>domain_id<span style="color: #000033;">,</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html"><span style="color: #000099;">user</span></a><span style="color: #000033;">,</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/encryption-functions.html"><span style="color: #000099;">password</span></a><span style="color: #FF00FF;">&#41;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VALUES"><span style="color: #990099; font-weight: bold;">VALUES</span></a> <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">1</span><span style="color: #000033;">,</span> <span style="color: #008000;">'username'</span><span style="color: #000033;">,</span> <a href="http://dev.mysql.com/doc/refman/%35%2E%31/en/encryption-functions.html"><span style="color: #000099;">MD5</span></a><span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">'password'</span><span style="color: #FF00FF;">&#41;</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></div></div>
<p>Проверим результат:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~$ sudo postmap -q username@example.com mysql:/etc/postfix/mysql_virtual_maps.cf</div></div>
<p>Создадим файл <strong>/etc/postfix/mysql_virtual_alias_maps.cf</strong>:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">user</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailuser</span><br />
<span style="color: #000099;">password</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailpassword</span><br />
<span style="color: #000099;">hosts</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 127.0.0.1</span><br />
<span style="color: #000099;">dbname</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mailserver</span><br />
<span style="color: #000099;">query</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> SELECT destination FROM view_aliases WHERE email='%s'</span></div></div>
<p>Добавим в файл <strong>/etc/postfix/main.cf</strong> опцию <a href="http://www.postfix.org/postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>.<br />
Эта опция получает список адресов на которые будет пересылаться вся корреспонденция:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">virtual_alias_maps</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mysql:/etc/postfix/mysql_virtual_alias_maps.cf</span></div></div>
<p>Добавим в базу новый алиас для только что созданного почтового ящика:</p>
<div class="codecolorer-container mysql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="mysql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INSERT"><span style="color: #990099; font-weight: bold;">INSERT</span></a> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=INTO"><span style="color: #990099; font-weight: bold;">INTO</span></a> <span style="color: #008000;">`virtual<span style="color: #008080; font-weight: bold;">_</span>aliases`</span> <span style="color: #FF00FF;">&#40;</span> domain_id<span style="color: #000033;">,</span> source<span style="color: #000033;">,</span> destination <span style="color: #FF00FF;">&#41;</span><br />
<a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=VALUES"><span style="color: #990099; font-weight: bold;">VALUES</span></a> <span style="color: #FF00FF;">&#40;</span> <span style="color: #008080;">1</span><span style="color: #000033;">,</span> <span style="color: #008000;">'username'</span><span style="color: #000033;">,</span> <span style="color: #008000;">'copy@example.com'</span> <span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></div></div>
<p>и проверим результат:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~$ sudo postmap -q username@example.com mysql:/etc/postfix/mysql_virtual_alias_maps.cf</div></div>
<p>Теперь укажем Postfix использовать Dovecot в качестве локального агента доставки почты.<br />
Для этого добавим следующие строки в <strong>/etc/postfix/master.cf</strong>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dovecot unix - n n - - pipe<br />
flags=DRhu user=nobody:nogroup argv=/usr/lib/dovecot/deliver -d ${recipient}</div></div>
<p>Так же добавим в <strong>/etc/postfix/main.cf</strong>:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">virtual_transport</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> dovecot</span><br />
<span style="color: #000099;">dovecot_destination_recipient_limit</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 1</span></div></div>
<p><a name="dovecot"></a></p>
<h4>Настройка Dovecot <a href="#head"> ↑ </a></h4>
<p>Файл конфигурации <strong>/etc/dovecot/dovecot.conf</strong> в общем виде:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># протоколы, с которыми будет работать Dovecot<br />
protocols = imap imaps<br />
<br />
# директория, куда будет складываться почта<br />
# %d - имя домена, %n - имя пользователя<br />
mail_location = maildir:/var/spool/virtual/%d/%n<br />
<br />
# настройка авторизации<br />
auth default {<br />
# механизмы авторизации<br />
mechanisms = plain login<br />
<br />
# получает адрес и пароль из БД для авторизации<br />
passdb sql {<br />
# файл, в котором описывается подключение к БД и сам запрос<br />
args = /etc/dovecot/dovecot-sql.conf<br />
}<br />
<br />
# права на директорию с почтой<br />
userdb static {<br />
args = uid=65534 gid=65534 home=/var/spool/virtual/%d/%n allow_all_users=yes<br />
}<br />
<br />
# сетевые настройки аутентификации<br />
socket listen {<br />
# для аутентификации подключений к самому Dovecot<br />
master {<br />
path = /var/run/dovecot/auth-master<br />
mode = 0600<br />
user = nobody<br />
}<br />
<br />
# для аутентификации внешних приложений ( у нас для Posfix )<br />
client {<br />
path = /var/spool/postfix/private/auth<br />
mode = 0660<br />
user = postfix<br />
group = postfix<br />
}<br />
}<br />
}<br />
<br />
# настройка локального агента доставки почты<br />
protocol lda {<br />
# путь до сокета для авторизации<br />
auth_socket_path = /var/run/dovecot/auth-master<br />
<br />
# адрес администратора почтового сервера<br />
postmaster_address = postmaster@example.com<br />
}</div></div>
<p>Файл с описанием подключения к БД для получения данных о пользователе <strong>/etc/dovecot/dovecot-sql.conf</strong>:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># используем подключение к MySQL<br />
<span style="color: #000099;">driver</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> mysql</span><br />
<br />
# параметры MySQL авторизации<br />
<span style="color: #000099;">connect</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> host=127.0.0.1 dbname=mailserver user=mailuser password=mailpassword</span><br />
<br />
# формат, в которых хранятся пароли в БД <span style="">&#40;</span> у нас это MD5 <span style="">&#41;</span><br />
<span style="color: #000099;">default_pass_scheme</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> PLAIN-MD5</span><br />
<br />
# запрос, возвращающий пользователя и пароль<br />
<span style="color: #000099;">password_query</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> SELECT email as user, password FROM view_users WHERE email='%u'</span><span style="color: #666666; font-style: italic;">;</span></div></div>
<p>И не забываем включить сам сервис Dovecot, указав в файле <strong>/etc/default/dovecot</strong>:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">ENABLED</span>=<span style="color: #000000;">1</span></div></div>
<p>Иначе он не будет запускаться.<br />
<a name="postfix2"></a></p>
<h4>Заключительная настройка Postfix <a href="#head"> ↑ </a></h4>
<p>Так как авторизация пользователей Postfix у нас производится с помощью Dovecot, то добавим следующие строки в <strong>/etc/postfix/main.cf</strong>:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">smtpd_sasl_type</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> dovecot</span><br />
<span style="color: #000099;">smtpd_sasl_path</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> private/auth</span><br />
<span style="color: #000099;">smtpd_sasl_auth_enable</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> yes</span></div></div>
<p>Так же добавим некоторые правила фильтрации почты, чем отбросим б<em>о</em>льшую часть спам-ботов и им сочувствующих.<br />
Добавим в <strong>/etc/postfix/main.cf</strong>:</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;height:300px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">smtpd_client_restrictions</span> <span style="color: #000066; font-weight:bold;">=</span><br />
permit_mynetworks<br />
permit_sasl_authenticated<br />
reject_unknown_client_hostname<br />
<br />
<span style="color: #000099;">smtpd_helo_restrictions</span> <span style="color: #000066; font-weight:bold;">=</span><br />
permit_mynetworks<br />
permit_sasl_authenticated<br />
reject_invalid_helo_hostname<br />
reject_non_fqdn_helo_hostname<br />
reject_unknown_helo_hostname<br />
<br />
<span style="color: #000099;">smtpd_sender_restrictions</span> <span style="color: #000066; font-weight:bold;">=</span><br />
permit_mynetworks<br />
permit_sasl_authenticated<br />
reject_non_fqdn_sender<br />
reject_unknown_sender_domainАга,<br />
reject_unverified_sender<br />
<br />
<span style="color: #000099;">smtpd_recipient_restrictions</span> <span style="color: #000066; font-weight:bold;">=</span><br />
permit_mynetworks<br />
permit_sasl_authenticated<br />
reject_non_fqdn_recipient<br />
reject_unlisted_recipient<br />
reject_unauth_destination</div></div>
<p><a name="end"></a></p>
<h4>Заключение <a href="#head"> ↑ </a></h4>
<p>Теперь можно смело перезапустить наши сервисы:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">~$ sudo invoke-rc.d dovecot restart<br />
~$ sudo invoke-rc.d postfix restart</div></div>
<p>Вся информация по работе почтовой системы логируется в файлы:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/var/log/mail.log<br />
/var/log/mail.err<br />
/var/log/mail.warn<br />
/var/log/mail.info</div></div>
<p>Что еще можно сделать с сервером? Скажу, что целую массу полезного и интересного. Из того, что вспомнил, могу предложить проверку на вирусы с помощью <a href="http://www.clamav.net/lang/ru/">ClamAV</a>, &#171;серые&#187; списки с помощью <a href="http://postgrey.schweikert.ch/">Postgrey</a>, фильтрацию спама с помощью <a href="http://spamassassin.apache.org/">SpamAssassin</a>, Web-клиент для работы с почтой типа <a href="http://roundcube.net/">RoundCube</a> и многое другое. О части из перечисленного я планирую рассказать, но когда это будет &#8212; неизвестно даже мне. :)</p>
<p>Любые предложения и замечания жду в комментариях.</p>
<p><a name="links"></a></p>
<h4>Используемые ресурсы <a href="#head"> ↑ </a></h4>
<ul>
<li><a href="http://www.postfix.org/postconf.5.html">Описание параметров конфигурации Postfix.</a></li>
<li><a href="http://habrahabr.ru/blogs/linux/101628/">Статья: &#171;Неприступный почтовый сервер, или жизнь без спама&#187;.</a></li>
<li><a href="http://wiki1.dovecot.org/">Официальная документация Dovecot.</a></li>
<li><a href="http://sudouser.com/ustanovka-pochtovogo-servera-postfix-dovecot-mysql-i-virtualnyx-domenov.html">Статья по настройке почтового сервера</a> на <a href="http://sudouser.com">sudouser.com</a></li>
<li><a href="http://google.com">google.com</a></li>
</ul>
<p><a name="additions"></a></p>
<h4>Дополнения <a href="#head"> ↑ </a></h4>
<h5>Описание используемых флагов smtpd_*_restrictions</h5>
<blockquote><p><strong>permit_mynetworks</strong> &#8212; разрешает любые запросы с IP адресов, указанных в параметре <a href="http://www.postfix.org/postconf.5.html#mynetworks">mynetworks</a>.</p>
<p><strong>permit_sasl_authenticated</strong> &#8212; разрешает любые запросы для пользователей, успешно прошедших аутентификацию на сервере.</p>
<p><strong>reject_unknown_client_hostname</strong> &#8212; отклоняет все запросы от клиента в одном из трех случаев:</p>
<ol>
<li>IP адрес клиента не имеет <strong>PTR</strong> записи на DNS.</li>
<li>Доменное имя клиента не имеет <strong>A</strong> записи на DNS.</li>
<li><strong>А</strong> запись клиента не соответствует его IP адресу.</li>
</ol>
<p><strong>reject_invalid_helo_hostname</strong> &#8212; отклоняет запросы от клиентов с неверным <a href="http://ru.wikipedia.org/wiki/FQDN">FQDN</a> в HELO запросе.</p>
<p><strong>reject_non_fqdn_helo_hostname</strong> &#8212; отклоняет клиентов с не FQDN в HELO запросе.</p>
<p><strong>reject_unknown_helo_hostname</strong> &#8212; отклоняет клиентов с неизвестным FQDN в HELO запросе.</p>
<p><strong>reject_non_fqdn_sender</strong> &#8212; отклоняет клиентов с не FQDN в адресе отправителя.</p>
<p><strong>reject_unknown_sender_domain</strong> &#8212; отклоняет клиентов с неизвестным FQDN в адресе отправителя.</p>
<p><strong>reject_unverified_sender</strong> &#8212; проверяет существование адреса отправителя на его сервере и отклоняет запрос если проверка не удалась</p>
<p><strong>reject_non_fqdn_recipient</strong> &#8212; отклоняет клиентов с не FQDN в адресе получателя.</p>
<p><strong>reject_unlisted_recipient</strong> &#8212; отклоняет запрос если получатель не существует.</p>
<p><strong>reject_unauth_destination</strong> &#8212; отклоняет запросы от неавторизованных пользователей сервера.</p></blockquote>
<h5>Утилиты</h5>
<p>Для упрощения работы с данным почтовым сервером я написал несколько небольших скриптов.<br />
Взять их можно тут <a href="https://github.com/Ky6uk/scripts/tree/master/mailserver">git://github.com/Ky6uk/scripts.git</a></p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej" title="Использование нескольких SSH ключей">Использование нескольких SSH ключей</a></li><li><a href="http://ky6uk.org/vtun-organizaciya-vpn-mezhdu-dvumya-tochkami" title="VTun: организация VPN между двумя точками">VTun: организация VPN между двумя точками</a></li><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li><li><a href="http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya" title="Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!">Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</a></li><li><a href="http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya" title="Ubuntu 11.04 Natty Narwhal. Обновляемся.">Ubuntu 11.04 Natty Narwhal. Обновляемся.</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Ubuntu 11.04 Natty Narwhal. Обновляемся.</title>
		<link>http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu-11-04-natty-narwhal-obnovlyaemsya</link>
		<comments>http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya#comments</comments>
		<pubDate>Tue, 12 Oct 2010 17:39:56 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.org/?p=897</guid>
		<description><![CDATA[Ну и по традиции sources.list следующего, нестабильного на данный момент релиза Ubuntu 11.04 Natty Narwhal, который уже доступен в репозиториях: Похожие статьиПередача звука по сети при помощи PulseAudioUbuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!Почтовый SMTP / IMAP сервер своими руками.Использование нескольких SSH ключейVTun: организация VPN между двумя точками]]></description>
			<content:encoded><![CDATA[<p>Ну и по традиции <em>sources.list</em> следующего, нестабильного на данный момент релиза <strong>Ubuntu 11.04 Natty Narwhal</strong>, который уже доступен в репозиториях:</p>
<pre class="brush: plain; title: ; notranslate">deb http://archive.ubuntu.com/ubuntu/ natty main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu/ natty-updates main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu/ natty-backports main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu/ natty-security main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu/ natty-proposed main universe multiverse restricted
deb http://archive.canonical.com/ubuntu/ maverick partner</pre>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li><li><a href="http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya" title="Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!">Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</a></li><li><a href="http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami" title="Почтовый SMTP / IMAP сервер своими руками.">Почтовый SMTP / IMAP сервер своими руками.</a></li><li><a href="http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej" title="Использование нескольких SSH ключей">Использование нескольких SSH ключей</a></li><li><a href="http://ky6uk.org/vtun-organizaciya-vpn-mezhdu-dvumya-tochkami" title="VTun: организация VPN между двумя точками">VTun: организация VPN между двумя точками</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Использование нескольких SSH ключей</title>
		<link>http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ispolzovanie-neskolkix-ssh-klyuchej</link>
		<comments>http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej#comments</comments>
		<pubDate>Sat, 31 Jul 2010 19:36:52 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=867</guid>
		<description><![CDATA[Порой бывает необходимо иметь несколько различных ключей для авторизации на разных серверах. Вот и у меня возникла похожая ситуация. Единственный ключ 1. Генерируем пару ключей 2. Копируем публичную часть ключа на удаленный сервер 3. Настраиваем на удаленном сервере авторизацию по ключу Обычно авторизация по ключу включена автоматически. Просто попробуйте зайти на удаленный хост через SSH [...]]]></description>
			<content:encoded><![CDATA[<p>Порой бывает необходимо иметь несколько различных ключей для авторизации на разных серверах. Вот и у меня возникла похожая ситуация.<br />
<span id="more-867"></span></p>
<h4>Единственный ключ</h4>
<p><strong>1. Генерируем пару ключей</strong></p>
<pre class="brush: plain; title: ; notranslate">~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -C &quot;My RSA key&quot;</pre>
<p><strong>2. Копируем публичную часть ключа на удаленный сервер</strong></p>
<pre class="brush: plain; title: ; notranslate">~$ ssh-copy-id user@remote</pre>
<p><strong>3. Настраиваем на удаленном сервере авторизацию по ключу</strong></p>
<blockquote><p>Обычно авторизация по ключу включена автоматически. Просто попробуйте зайти на удаленный хост через SSH и проверить это.</p></blockquote>
<p>Если авторизация по публичному ключу отключена, то необходимо включить её. В файле <em>/etc/ssh/sshd_config</em> на сервере должны присутствовать следующие строки:</p>
<pre class="brush: plain; title: ; notranslate">RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys</pre>
<p>На этом все. Теперь на сервер можно попасть через SSH без пароля, используя приватную часть авторизованного ключа.</p>
<h4>Несколько ключей</h4>
<p>При использовании нескольких ключей необходимо произвести все вышеперечисленные действия с небольшими отличиями.</p>
<p><strong>1. Генерируем пары ключей в разные файлы</strong></p>
<pre class="brush: plain; title: ; notranslate">~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.work -C &quot;My key for Work&quot;
~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.home -C &quot;My key for Home&quot;</pre>
<p><strong>2. Копируем публичные части на удаленные сервера</strong></p>
<pre class="brush: plain; title: ; notranslate">~$ ssh-copy-id -i ~/.ssh/id_rsa.work.pub user@work
~$ ssh-copy-id -i ~/.ssh/id_rsa.home.pub user@home</pre>
<p><strong>3. Настраиваем удаленные сервера как показано выше</strong></p>
<p><strong>4. Настраиваем на нашем компьютере SSH авторизацию</strong></p>
<p>Создадим файл конфигурации SSH клиента:</p>
<pre class="brush: plain; title: ; notranslate">~$ touch ~/.ssh/config
~$ chmod 600 ~/.ssh/config</pre>
<p>И добавим в него информацию о наших удаленных хостах:</p>
<pre class="brush: plain; title: ; notranslate">Host my.work
    IdentityFile ~/.ssh/id_rsa.work

Host *.home
    IdentityFile ~/.ssh/id_rsa.home
    User root
    Port 44</pre>
<p>Теперь на указанные сервера можно заходить через SSH без ввода пароля, причем для каждого хоста будет использоваться соответствующий файл ключа.</p>
<h4>Используемый материал</h4>
<ul>
<li><a href="http://belgorod.lug.ru/wiki/index.php/SSH_%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D0%BB%D1%8E%D1%87%D1%83">SSH авторизация по ключу</a></li>
<li><a href="http://ekrava.livejournal.com/484575.html">ssh безпарольный вход, авторизация по ключам</a>
<li><a href="http://www.karan.org/blog/index.php/2009/08/25/multiple-ssh-private-keys">multiple ssh private keys</a></li>
<li><a href="http://www.linuxplanet.com/linuxplanet/tips/6592/1/">OpenSSH Speed Tips and Tricks: ssh-copy-id, sshfs, speed!</a></li>
<li>~$ man ssh-copy-id</li>
</ul>
<p><strong>UPD: Благодаря товарищу <a href="http://welinux.ru/user/kstep">kstep</a> с ресурса <a href="http://welinux.ru/post/3791/#cmnt71826">welinux.ru</a> открыл для себя скрипт <em>ssh-copy-id</em>, который производит копирование и установку публичного ключа на удаленный хост автоматически. Заметка соответствующим образом изменена.</strong></p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami" title="Почтовый SMTP / IMAP сервер своими руками.">Почтовый SMTP / IMAP сервер своими руками.</a></li><li><a href="http://ky6uk.org/vtun-organizaciya-vpn-mezhdu-dvumya-tochkami" title="VTun: организация VPN между двумя точками">VTun: организация VPN между двумя точками</a></li><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li><li><a href="http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya" title="Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!">Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</a></li><li><a href="http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya" title="Ubuntu 11.04 Natty Narwhal. Обновляемся.">Ubuntu 11.04 Natty Narwhal. Обновляемся.</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VTun: организация VPN между двумя точками</title>
		<link>http://ky6uk.org/vtun-organizaciya-vpn-mezhdu-dvumya-tochkami?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vtun-organizaciya-vpn-mezhdu-dvumya-tochkami</link>
		<comments>http://ky6uk.org/vtun-organizaciya-vpn-mezhdu-dvumya-tochkami#comments</comments>
		<pubDate>Mon, 12 Jul 2010 19:39:15 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Сети]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VPN]]></category>
		<category><![CDATA[VTun]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=814</guid>
		<description><![CDATA[Имеем задачу: организовать безопасное соединение между двумя удаленными узлами сети. Сделать это можно с помощью VPN между этими узлами. Для решения подобных задач существует множество протоколов, таких как PPTP, GRE, L2TP, IPSec, PPPoE, OpenVPN и т.п.. Лично мне для решения этой задачи знакомый сисадмин посоветовал использовать VTun. Так как на обоих узлах в качестве ОС [...]]]></description>
			<content:encoded><![CDATA[<p>Имеем задачу: организовать безопасное соединение между двумя удаленными узлами сети. Сделать это можно с помощью <a href="http://ru.wikipedia.org/wiki/VPN">VPN</a> между этими узлами. Для решения подобных задач существует множество протоколов, таких как <a href="http://ru.wikipedia.org/wiki/PPTP">PPTP</a>, <a href="http://ru.wikipedia.org/wiki/GRE_(%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB)">GRE</a>, <a href="http://ru.wikipedia.org/wiki/L2TP">L2TP</a>, <a href="http://ru.wikipedia.org/wiki/IPSec">IPSec</a>, <a href="http://ru.wikipedia.org/wiki/PPPoE">PPPoE</a>, <a href="http://ru.wikipedia.org/wiki/OpenVPN">OpenVPN</a> и т.п..</p>
<p>Лично мне для решения этой задачи знакомый сисадмин посоветовал использовать <a href="http://vtun.sourceforge.net/">VTun</a>. Так как на обоих узлах в качестве ОС установлен Linux, то VTun будет удобным и простым решением.<br />
<span id="more-814"></span><br />
В возможности VTun входит шифрование трафика, шейпинг, компрессия. Из вариантов туннелирования VTun поддерживает IP (tun), Ethernet (ether), tty и pipe туннели. Всего вышеперечисленного более чем достаточно для решения задачи. В дополнении к возможностям, VTun крайне прост в настройке, которая состоит из одного единственного конфигурационного файла.</p>
<p>И так, приступим. Первый узел &#8212; компьютер с <em>Debian 5.0</em> на борту, на втором установлена <em>Ubuntu Server 10.04</em>. И там, и там в репозиториях есть VTun версии <em>3.0.2</em> и ядро, включающее в себя драйвер виртуального <strong>tun</strong>-интерфейса.</p>
<p>Установим <strong>vtun</strong> на обеих машинах консольной командой</p>
<pre class="brush: bash; title: ; notranslate">~$ sudo aptitude install vtun</pre>
<p>Теперь сконфигурируем один компьютер как vtun-сервер, а другой как vtun-клиент. Первому условно дадим имя &#171;SERVER&#187;, второму &#171;CLIENT&#187;, &#8212; так будет понятнее.</p>
<h4>SERVER</h4>
<h5>Файл конфигурации <em>/etc/vtund.conf</em></h5>
<pre class="brush: plain; title: ; notranslate"># глобальные настройки
options {
    ifconfig /sbin/ifconfig; # путь до утилиты ifconfig
}

# конфигурация хоста (client - название)
# название хоста на клиенте и сервере должны совпадать
client {
    encrypt yes;    # включаем шифрование соединения
    compress no;    # отключаем сжатие трафика
    passwd secret;  # пароль для авторизации клиента
    type tun;       # тип туннеля (в данном случае IP-туннель)
    keepalive yes;  # поддерживаем соединение
    stat yes;       # включаем учет статистики интерфейса
    proto udp;      # используемый протокол

    # список команд, запускаемых после создании туннеля
    up {
        # прописываем настройки интерфейса, %% - имя интерфейса
        ifconfig &quot;%% 192.168.200.1 pointopoint 192.168.200.2&quot;;
    };

    # список команд, запускаемых после отключении туннеля
    down {
        ifconfig &quot;%% down&quot;; # опускаем интерфейс
    };
}</pre>
<h5>Файл конфигурации <em>/etc/default/vtun</em></h5>
<pre class="brush: plain; title: ; notranslate"># указываем, что vtun должен запускаться как демон
RUN_SERVER=yes</pre>
<h4>CLIENT</h4>
<h5>Файл конфигурации <em>/etc/vtund.conf</em></h5>
<pre class="brush: plain; title: ; notranslate">options {
    ifconfig /sbin/ifconfig;
}

client {
    passwd secret; # пароль
    persist yes;   # пытаться подключиться при потере соединения

    up {
        ifconfig &quot;%% 192.168.200.2 pointopoint 192.168.200.1&quot;;
    };

    down {
        ifconfig &quot;%% down&quot;;
    };
}</pre>
<h5>Файл конфигурации <em>/etc/default/vtun</em></h5>
<pre class="brush: plain; title: ; notranslate">CLIENT0_NAME=client     # имя клиента
CLIENT0_HOST=server.tld # реальный адрес vtun-сервера</pre>
<blockquote><p>Как видно выше, конфиги получились очень простые. Для лучшего понимания я добавил комментарии. Дополнительную информацию по настройке VTun всегда можно получить из <a href="http://vtun.sourceforge.net">документации</a>.</p></blockquote>
<p>После того как конфигурация будет окончена необходимо запустить vtun на обеих машинах командой</p>
<pre class="brush: bash; title: ; notranslate">~$ sudo invoke-rc.d vtun start</pre>
<p>На сервере и клиенте появятся виртуальные интерфейсы <strong>tun0</strong> с адресами 192.168.200.1 и 192.168.200.2 соответственно.</p>
<p>Интерфейсы появились, адреса назначены &#8212; VPN работает как надо. Теперь можно работать с удаленным узлом через виртуальный интерфейс <strong>tun0</strong>, используя присвоенный ему IP-адрес.</p>
<p>Таким образом, с помощью VTun можно создавать большие и сложные виртуальные сети, объединять в одну большую сеть разрозненные локальные и так далее. Возможно, в следующей статье я напишу об объединении нескольких локальных сетей в одну большую виртуальную. Следите за обновлениями.</p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami" title="Почтовый SMTP / IMAP сервер своими руками.">Почтовый SMTP / IMAP сервер своими руками.</a></li><li><a href="http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej" title="Использование нескольких SSH ключей">Использование нескольких SSH ключей</a></li><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li><li><a href="http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya" title="Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!">Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</a></li><li><a href="http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya" title="Ubuntu 11.04 Natty Narwhal. Обновляемся.">Ubuntu 11.04 Natty Narwhal. Обновляемся.</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/vtun-organizaciya-vpn-mezhdu-dvumya-tochkami/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Слушаем музыку на Last.Fm бесплатно</title>
		<link>http://ky6uk.org/slushaem-muzyku-na-last-fm-besplatno?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=slushaem-muzyku-na-last-fm-besplatno</link>
		<comments>http://ky6uk.org/slushaem-muzyku-na-last-fm-besplatno#comments</comments>
		<pubDate>Sun, 27 Jun 2010 11:13:34 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Web-технологии]]></category>
		<category><![CDATA[google-chrome]]></category>
		<category><![CDATA[Last.Fm]]></category>
		<category><![CDATA[VKontakte]]></category>
		<category><![CDATA[музыка]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=755</guid>
		<description><![CDATA[В свете последнего обновления до версии 2.8 замечательного плагина &#171;Last.fm free music player&#187; для браузера Google Chrome хочу написать небольшой обзор новых функций. Те, кто еще не слышал про это замечательное расширение, узнать про него могут тут и там. Если коротко, то это расширение позволяет бесплатно слушать любимую музыку на Last.Fm через такие сервисы, как [...]]]></description>
			<content:encoded><![CDATA[<p>В свете <a href="http://chrome-music.tumblr.com/">последнего обновления</a> до версии <strong>2.8</strong> замечательного плагина <a href="https://chrome.google.com/extensions/detail/bbncpldmanoknoahidbgmkgobgmhnafh?hl=ru">&#171;Last.fm free music player&#187;</a> для браузера <a href="http://www.google.com/chrome/">Google Chrome</a> хочу написать небольшой обзор новых функций.</p>
<p>Те, кто еще не слышал про это <strong>замечательное</strong> расширение, узнать про него могут <a href="http://habrahabr.ru/blogs/i_am_advertising/91541/">тут</a> и <a href="http://habrahabr.ru/blogs/i_am_advertising/94052/">там</a>. Если коротко, то это расширение позволяет бесплатно слушать любимую музыку на <a href="http://www.last.fm">Last.Fm</a> через такие сервисы, как <a href="http://vkontakte.ru/">vkontakte.ru</a> (на котором, как известно, можно найти практически любые композиции).<br />
<span id="more-755"></span><br />
С версии 2.8 плагин, наконец, может называться полноценным плеером, благодаря новому интерфейсу и функциональности. Выглядит плеер теперь вот так:</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/lastfm.png"><img src="http://ky6uk.org/wp-content/uploads/2010/06/lastfm.png" alt="Last.Fm Free Music Player" title="Last.Fm Free Music Player" width="575" height="464" class="aligncenter size-full wp-image-764" /></a></p>
<p>Из новых функций можно отметить режим &#171;Shuffle&#187;, позволяющий проигрывать треки в случайном порядке.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/shuffle.png"><img src="http://ky6uk.org/wp-content/uploads/2010/06/shuffle.png" alt="Shuffle" title="Shuffle" width="146" height="72" class="aligncenter size-full wp-image-767" /></a></p>
<p>Следующим нововведением интерфейса является возможность отмечать текущий проигрываемый трек как любимый.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/love.png"><img src="http://ky6uk.org/wp-content/uploads/2010/06/love.png" alt="Love!" title="Love!" width="108" height="45" class="aligncenter size-full wp-image-770" /></a></p>
<p>Так же появился удобный регулятор громкости</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/volume.png"><img src="http://ky6uk.org/wp-content/uploads/2010/06/volume.png" alt="Регулятор громкости" title="Регулятор громкости" width="28" height="70" class="aligncenter size-full wp-image-774" /></a></p>
<p>и, <strong>наконец-то</strong>, возможность прокрутки проигрываемого трека.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/slide.png"><img src="http://ky6uk.org/wp-content/uploads/2010/06/slide.png" alt="Прокрутка проигрываемого трека" title="Прокрутка проигрываемого трека" width="403" height="33" class="aligncenter size-full wp-image-773" /></a></p>
<p>Также теперь стало удобнее переключать состояние трека &#171;пауза/проигрывание&#187; просто кликая на картинку альбома в левом верхнем углу плеера.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/album.png"><img src="http://ky6uk.org/wp-content/uploads/2010/06/album.png" alt="Картинка альбома проигрываемого трека" title="Картинка альбома проигрываемого трека" width="76" height="75" class="aligncenter size-full wp-image-778" /></a></p>
<p>Включение/отключение скроблинга в новой версии производится с помощью логотипа Last.Fm в правом нижнем углу.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/scrobbling.png"><img src="http://ky6uk.org/wp-content/uploads/2010/06/scrobbling.png" alt="включение/отключение скроблинга" title="включение/отключение скроблинга" width="132" height="48" class="aligncenter size-full wp-image-780" /></a></p>
<p>Так же в списке новых возможностей разработчики пишут об улучшенном поиске музыки и поддержке скроблинга альбомов, чего оценить я пока не смог.</p>
<p>В общем, это все, что я хотел отметить и в заключении советую установить это дополнение всем меломанам в обязательном порядке. Лично я от него в восторге.</p>
<h4>Полезные ссылки</h4>
<ul>
<li><a href="https://chrome.google.com/extensions/detail/bbncpldmanoknoahidbgmkgobgmhnafh?hl=ru">Расширение</a></li>
<li><a href="http://vkontakte.ru/club18588135">Группа ВКонтакте</a></li>
<li><a href="http://twitter.com/chrome_music">Твиттер</a></li>
<li><a href="http://chrome-music.tumblr.com/">Блог</a></li>
</ul>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/slushaem-muzyku-na-last-fm-besplatno/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>День 8: расчесываем ограничения</title>
		<link>http://ky6uk.org/den-8-raschesyvaem-ogranicheniya?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=den-8-raschesyvaem-ogranicheniya</link>
		<comments>http://ky6uk.org/den-8-raschesyvaem-ogranicheniya#comments</comments>
		<pubDate>Sat, 19 Jun 2010 18:41:14 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Perl 6]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=712</guid>
		<description><![CDATA[Перевод на русский язык восьмой статьи цикла Perl 6 Advent Calendar. Мы попали в точку, где предыдущие подарки будут полезны для нынешних. Сегодня у нас двойной набор: метод comb (расческа) и идея ограничений. Аналогично статичным типам предыдущих определений, ограничения позволяют качественнее управлять написанием подпрограмм и методов. Во многих других языках программирования вы должны передавать параметры в [...]]]></description>
			<content:encoded><![CDATA[<p>Перевод на русский язык восьмой статьи цикла <a href="http://perl6advent.wordpress.com/">Perl 6 Advent Calendar</a>.<br />
<span id="more-712"></span><br />
Мы попали в точку, где предыдущие подарки будут полезны для нынешних. Сегодня у нас двойной набор: метод <em>comb</em> (расческа) и идея ограничений.</p>
<p>Аналогично статичным типам предыдущих определений, ограничения позволяют качественнее управлять написанием подпрограмм и методов. Во многих других языках программирования вы должны передавать параметры в подпрограмму, а затем проверять введенные данные. С ограничениями вы можете проверять правильность непосредственно в объявлении.</p>
<p>Возьмем простой пример. Если целое число четное, то я не хочу иметь дела с этой подпрограммой. В Perl 5 вы бы написали что-то похожее на это:</p>
<pre class="brush: perl; title: ; notranslate">sub very_odd
{
    my $odd = shift;
    unless ($odd % 2)
    {
        return undef;
    }
    # Process the odd number here.
}</pre>
<p>В Perl 6 это может быть упрощено:</p>
<pre class="brush: perl; title: ; notranslate">sub very_odd(Int $odd where {$odd % 2})
{
    # Process the odd number here
}</pre>
<p>При попытке вызова <em>very_odd</em> с четным числом вы получите сообщение об ошибке. Не волнуйтесь, хотя вы можете использовать возможности мультифункций чтобы дать даже числам возможность проявить себя&#8230; может быть. ;)</p>
<pre class="brush: perl; title: ; notranslate">multi sub very_odd(Int $odd where {$odd % 2})
{
    # Process the odd number here
}
multi sub very_odd(Int $odd) { return Bool::False; }</pre>
<p>Эти ограничения могут быть полезны при сочетании с методом <em>.comb</em>. Что же такое <em>.comb</em>? Для тех, кто расчесывает свои волосы: вы обычно пользуетесь расческой, чтобы уложить отдельные волоски. Для тех, кто любит использовать <em>.split</em> все как раз наоборот. Этот простой фрагмент кода должен продемонстрировать как работает <em>.comb</em>:</p>
<pre class="brush: perl; title: ; notranslate">say &quot;Perl 6 Advent&quot;.comb(/&lt;alpha&gt;/).join('|');
say &quot;Perl 6 Advent&quot;.comb(/&lt;alpha&gt;+/).join('|');</pre>
<p>Регулярные выражения, скорее всего, будут открыты в другой день, но быстрый взгляд не будет болезненным. Первая строка будет выводить &#171;P|e|r|l|A|d|v|e|n|t&#187;: берется каждый буквенный символ и помещается во временный массив. Затем он соединяется с символом вертикальной черты. Вторая строка аналогична, только она захватывает столько букв, сколько сможет, отсюда результат &#171;Perl|Advent&#187;.</p>
<p>Однако, сила <em>.comb</em> намного больше. После того как вы &#171;расчесали&#187; что хотели, вы можете управлять &#171;волосками&#187;. Если у вас есть определенный набор шестнадцатеричных ASCII символов, вы можете использовать гипероператоры для преобразования каждого кусочка в ASCII эквивалент!</p>
<pre class="brush: perl; title: ; notranslate">say &quot;5065726C36&quot;.comb(/&lt;xdigit&gt;**2/)».fmt(&quot;0x%s&quot;)».chr
# Outputs &quot;Perl6&quot;</pre>
<p>Помните, это Perl. Существует много способов сделать это. ☺</p>
<p>Со всеми подарками, что были представлены сегодня, я дам вам задачу. С помощью Kayl Hasselbacher, я смог сделать достойную версию древнего шифра Цезаря при помощи ограничений, <em>.comb</em>, и старого доброго <em>.map</em>:</p>
<pre class="brush: perl; title: ; notranslate">use v6;

sub rotate_one( Str $c where { $c.chars == 1 }, Int $n ) {
    return $c if $c !~~ /&lt;alpha&gt;/;
    my $out = $c.ord + $n;
    $out -= 26 if $out &gt; ($c eq $c.uc ?? 'Z'.ord !! 'z'.ord);
    return $out.chr;
}

sub rotate(Str $s where {$s.chars}, Int $n = 3)
{
    return ($s.comb.map: { rotate_one( $_, $n % 26 ) }).join( '' );
}

die &quot;Usage:\n$*PROGRAM_NAME string number_for_rotations&quot; unless @*ARGS == 2;

my Str $mess = @*ARGS[0];
my Int $rotate = @*ARGS[1].Int;

say qq|&quot;$mess&quot; rotated $rotate characters gives &quot;{rotate($mess,$rotate)}&quot;.|;</pre>
<p>Я хотел бы посмотреть как остальные смогут реализовать код этого алгоритма используя Perl 6 и уже открытые подарки. В конце концов язык может получиться только лучше и удобнее.</p>
<p>© <a href="http://perl6advent.wordpress.com/2009/12/08/day-8-comb-your-constraints/">Оригинальная статья.</a></p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/den-7-cikly-dlya-polzy-i-razvlecheniya" title="День 7: Циклы для пользы и развлечения">День 7: Циклы для пользы и развлечения</a></li><li><a href="http://ky6uk.org/den-6-vxodya-v-giperprostranstvo" title="День 6: Входя в Гиперпространство">День 6: Входя в Гиперпространство</a></li><li><a href="http://ky6uk.org/den-5-metaoperatory" title="День 5: Метаоператоры">День 5: Метаоператоры</a></li><li><a href="http://ky6uk.org/den-4-testirovanie" title="День 4: Тестирование">День 4: Тестирование</a></li><li><a href="http://ky6uk.org/den-3-staticheskie-tipy-i-multi-funkcii" title="День 3: статические типы и мульти-функции">День 3: статические типы и мульти-функции</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/den-8-raschesyvaem-ogranicheniya/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>KDE 4.5: свежий взгляд из Ubuntu 10.10</title>
		<link>http://ky6uk.org/kde-4-5-svezhij-vzglyad-iz-ubuntu-10-10?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=kde-4-5-svezhij-vzglyad-iz-ubuntu-10-10</link>
		<comments>http://ky6uk.org/kde-4-5-svezhij-vzglyad-iz-ubuntu-10-10#comments</comments>
		<pubDate>Mon, 31 May 2010 19:34:16 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=668</guid>
		<description><![CDATA[Не помню точной даты, но буквально на днях в моей Ubuntu начали появляться мажорные обновления пакетов с Qt и KDE. Наученный опытом, я решил не обновляться сразу, а подождать еще пару дней, пока появятся новые версии всех зависящих пакетов и будут исправлены баги-сырцы. Сегодня я решился: скрестил пальцы, выбрал в synaptic для обновления пакеты Qt/KDE и [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ky6uk.org/wp-content/uploads/2010/05/ubuntu_womens1.jpg"><img class="alignright size-full wp-image-673" title="Ubuntu :3" src="http://ky6uk.org/wp-content/uploads/2010/05/ubuntu_womens1.jpg" alt="Ubuntu:3" width="250" height="181" /></a>Не помню точной даты, но буквально на днях в моей <a href="http://www.ubuntu.com/">Ubuntu</a> начали появляться мажорные обновления пакетов с <a href="http://qt.nokia.com/">Qt</a> и <a href="http://www.kde.org/">KDE</a>. Наученный опытом, я решил не обновляться сразу, а подождать еще пару дней, пока появятся новые версии всех зависящих пакетов и будут исправлены баги-сырцы.</p>
<p>Сегодня я решился: скрестил пальцы, выбрал в <a href="http://ru.wikipedia.org/wiki/Synaptic_Package_Manager">synaptic</a> для обновления пакеты <strong>Qt</strong>/<strong>KDE</strong> и запустил процесс. Через некоторое время обновление завершилось. Проблем, что удивительно, на этом этапе не возникло.</p>
<p>Теперь я обладатель KDE <em>4.4.80</em> (<a href="http://www.kde.org/announcements/announce-4.5-beta1.php">4.5 Beta1</a>), Qt <em>4.7.0~beta1+git20100522</em> и хочу поделиться первыми впечатлениями.<br />
<span id="more-668"></span></p>
<h4>Бросилось в глаза</h4>
<p>Первое, что мне бросилось в глаза &#8212; это новый системный лоток, по-нашему трей.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/05/kde_4_5_tray.png"><img class="aligncenter size-full wp-image-682" title="KDE 4.5: новый вид системного лотка" src="http://ky6uk.org/wp-content/uploads/2010/05/kde_4_5_tray.png" alt="KDE 4.5: новый вид системного лотка" width="335" height="155" /></a></p>
<p>Новый внешний вид стандартных иконок (ножницы &#8212; <a href="http://userbase.kde.org/Klipper">Klipper</a>, сетевой разъем &#8212; <a href="http://ru.opensuse.org/KNetworkManager">KNetworkManager</a> и т.п.) &#8212; заслуга обновленной темы <a href="http://www.oxygen-icons.org/">Oxygen</a>. Так же понравилась новая система скрытия неактивных значков в лотке. Теперь они появляются как отдельное меню, а не разъезжаются на пол панели влево.</p>
<p>Следующим примечательным нововведением оказалось новое оформление уведомлений. Нагляднее на картинках:</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/kde4_5_notification_small1.png"><img class="aligncenter size-full wp-image-708" title="внешний вид уведомлений и активных заданий" src="http://ky6uk.org/wp-content/uploads/2010/06/kde4_5_notification_small1.png" alt="внешний вид уведомлений и активных заданий" width="363" height="75" /></a><a href="http://ky6uk.org/wp-content/uploads/2010/06/kde4_5_notification.png"></a></p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/06/kde4_5_notification.png"><img class="aligncenter size-full wp-image-709" title="внешний вид уведомлений и активных заданий" src="http://ky6uk.org/wp-content/uploads/2010/06/kde4_5_notification.png" alt="внешний вид уведомлений и активных заданий" width="419" height="268" /></a></p>
<p>Из <a href="http://www.kde.org/announcements/announce-4.5-beta1.php">новостей</a>, узнал о новой системе группировки окон (KWin-Tiling), но в действии посмотреть на неё так и не удалось. Разбираться в вопросе &#171;Почему?&#187; тоже не захотелось. Так же из новостей понял, то других существенных изменений в <em>4.5</em> не будет. Только повышение стабильности, интеграция в <a href="http://www.konqueror.org/">Konqueror</a> движка <a href="http://webkit.org/">WebKit</a> и то, о чем было сказано ранее.</p>
<h4>Сломалось</h4>
<p>Как бы печально это не звучало, но слово &#171;нестабильный&#187; себя зачастую оправдывает. Не прошло стороной и это обновление &#8212; без потерь не обошлось.</p>
<p><span style="color: #bbbbbb;">Не знаю точно сколько после обновления сломалось виджетов, так как я их использую ограниченный набор, но с уверенностью могу сказать, что сломался виджет &#171;Показать рабочий стол&#187;.</span></p>
<p><span style="color: #bbbbbb;">Много лет он служил мне верой и правдой, а сегодня после перезагрузки приказал долго жить. Теперь вместо заветной кнопочки на панели красуется лишь красный крестик. Назначенная комбинация <em>Meta+D</em> на это действие так же перестала подавать признаки жизни. Печально, но придется ждать обновлений-багфиксов или информации о замене этого виджета другим.</span></p>
<p><strong>Update:</strong> Виджет &#171;<em>Показать рабочий стол</em>&#187; теперь находится вместе с многими другими стандартными виджетами в пакете &#171;<strong>plasma-widgets-addons</strong>&#171;.</p>
<p>Так же плазма стала падать при определенных условиях (пламенный привет KDE 4.0). Жду релиза.</p>
<h4>Сложилось</h4>
<p><strong>KDE 4.5 Beta1</strong> оказался довольно стабильной средой со старым добрым функционалом и немного посвежевшим внешним видом. Обновление же <strong>Qt</strong>, в свою очередь, никак не сказалось на приложениях, использующих более старую версию библиотеки, как это было с обновлением Qt версии 4.5 на 4.6.</p>
<p>В целом, развитие идет в правильном направлении, чего и желаю разработчикам на будущее.</p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/kcm-gtk-all-apps-in-one-style" title="Все приложения в одном стиле. Продолжение.">Все приложения в одном стиле. Продолжение.</a></li><li><a href="http://ky6uk.org/gtk-qt-engine-all-apps-one-style" title="gtk-qt-engine &#8212; все приложения в одном стиле">gtk-qt-engine &#8212; все приложения в одном стиле</a></li><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li><li><a href="http://ky6uk.org/kmail-1-12-0-openpgp-bab-passphrase" title="KMail 1.12.0 + OpenPGP, &#171;Bad passphrase&#187;">KMail 1.12.0 + OpenPGP, &#171;Bad passphrase&#187;</a></li><li><a href="http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya" title="Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!">Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/kde-4-5-svezhij-vzglyad-iz-ubuntu-10-10/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Раздаём 3G-интернет от &#171;Мегафона&#187; через DIR-320.</title>
		<link>http://ky6uk.org/razdayom-3g-internet-ot-megafona-cherez-dir-320?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=razdayom-3g-internet-ot-megafona-cherez-dir-320</link>
		<comments>http://ky6uk.org/razdayom-3g-internet-ot-megafona-cherez-dir-320#comments</comments>
		<pubDate>Thu, 27 May 2010 07:43:32 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Сети]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[D-Link]]></category>
		<category><![CDATA[DIR-320]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=518</guid>
		<description><![CDATA[Попался мне на днях 3G-модем &#171;Мегафон&#187; вместе с необходимостью настроить роутер D-Link DIR-320 на работу с этим модемом. Модем на данный момент был одним из последних серий &#8212; Huawei E1750. Основные отличия от предыдущего E1550 &#8212; это увеличенная скорость аплоада (с 384 до 5700 kbit/s), даунлоада (с 3600 до 7200 kbit/s) и более низкий пинг. [...]]]></description>
			<content:encoded><![CDATA[<p>Попался мне на днях 3G-модем &#171;Мегафон&#187; вместе с необходимостью настроить роутер <a href="http://www.d-link.ru/ru/products/5/786.html">D-Link DIR-320</a> на работу с этим модемом. Модем на данный момент был одним из последних серий &#8212; <strong>Huawei E1750</strong>.<br />
<a href="http://ky6uk.org/wp-content/uploads/2010/05/e17501.gif"><img class="aligncenter size-full wp-image-572" title="Megafon 3G-модем Huawei E1750" src="http://ky6uk.org/wp-content/uploads/2010/05/e17501.gif" alt="Megafon 3G-модем Huawei E1750" width="371" height="132" /></a><br />
Основные отличия от предыдущего E1550 &#8212; это увеличенная скорость аплоада (с 384 до 5700 kbit/s), даунлоада (с 3600 до 7200 kbit/s) и более низкий пинг.</p>
<p>Теперь опустим технические формальности, еще три страницы истории &#171;как я настраивал модем впервые&#187; (хотя последнее так же достойно отдельной статьи) и перейдем сразу к делу.<br />
<span id="more-518"></span></p>
<h4>Оглавление</h4>
<ul>
<li><a href="#section1">Подготовка модема</a></li>
<li><a href="#section2">Подготовка роутера</a></li>
<li><a href="#section3">Настройка подключения</a></li>
<li><a href="#section4">Эпилог</a></li>
<li><a href="#section5">Полезные ссылки</a></li>
</ul>
<p><a name="section1"></a><br />
<h4>Подготовка модема</h4>
<p>Начну с подготовки самого модема. Что нам для этого понадобится:</p>
<ul>
<li>Относительно свежий дистрибутив <a href="http://www.ubuntu.com/">Linux</a> (куда же без него).</li>
<li>Непосредственно сам модем.</li>
<li>Утилита <em>usb_modeswitch</em>.</li>
<li>Утилита <em>minicom</em>.</li>
</ul>
<blockquote><p>Так как я использую Ubuntu, то все манипуляции буду проводить соответствующим образом.</p></blockquote>
<p>Для начала установим все необходимое в нашу систему:</p>
<pre class="brush: bash; title: ; notranslate">~$ sudo aptitude install usb-modeswitch minicom</pre>
<p>После установки нам нужно отредактировать файл <em>/etc/usb-modeswitch.conf</em></p>
<pre class="brush: bash; title: ; notranslate">~$ sudo vim /etc/usb-modeswitch.conf</pre>
<p>вставив в него следующие строки:</p>
<pre class="brush: plain; title: ; notranslate">DefaultVendor = 0x12d1
DefaultProduct = 0x1446
MessageEndPoint = &quot;0x01&quot;
MessageContent = &quot;55534243000000000000000000000011060000000000000000000000000000&quot;</pre>
<p>Теперь подключаем наш модем к USB порту, ждем несколько секунд пока он определится и выполняем команду:</p>
<pre class="brush: bash; title: ; notranslate">~$ sudo usb_modeswitch</pre>
<p>Должно появиться нечто следующее:</p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">Looking for target devices ...
No devices in target mode or class found
Looking for default devices ...
Found default devices (1)
Accessing device 004 on bus 007 ...
Using endpoints 0x01 (out) and 0x81 (in)
Inquiring device details; driver will be detached ...
Looking for active driver ...
OK, driver found (&quot;usb-storage&quot;)
OK, driver &quot;usb-storage&quot; detached

SCSI inquiry data (for identification)
-------------------------
Vendor String: HUAWEI
Model String: Mass Storage
Revision String: 2.31
-------------------------

USB description data (for identification)
-------------------------
Manufacturer: HUAWEI Technology
Product: HUAWEI Mobile
Serial No.: not provided
-------------------------
Setting up communication with interface 0 ...
Trying to send the message to endpoint 0x01 ...
OK, message successfully sent
Device is gone, skipping any further commands
-&gt; Run lsusb to note any changes. Bye.</pre>
<p>Если все сделано правильно, то в <em>/dev</em> будут несколько новых USB-девайсов:</p>
<pre class="brush: bash; title: ; notranslate">~$ ls /dev | grep ttyUSB
ttyUSB0
ttyUSB1
ttyUSB2</pre>
<p>Хорошо. Теперь очередь за <em>minicom</em></p>
<pre class="brush: bash; title: ; notranslate">~$ minicom -s</pre>
<p>После запуска программы, откроется меню конфигурации. В нем выбираем опцию &#171;<strong>Настройка последовательного порта</strong>&#187; и жмем &#171;<em>Enter</em>&#171;.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/05/minicom.png"><img class="aligncenter size-full wp-image-556" title="minicom - меню конфигурации" src="http://ky6uk.org/wp-content/uploads/2010/05/minicom.png" alt="minicom - меню конфигурации" width="316" height="194" /></a></p>
<p>В появившемся окне изменения настроек жмем клавишу &#171;<strong>A</strong>&#187; для изменения последовательного порта. Вместо того, что там написано, вводим <strong>/dev/ttyUSB0</strong> и жмем &#171;<em>Enter</em>&#171;.</p>
<p>Теперь дважды нажимаем &#171;<em>Esc</em>&#187; и ждем пока наш модем будет инициализирован:</p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">Добро пожаловать в minicom 2.4

ПАРАМЕТРЫ: I18n
Дата компиляции Jan 25 2010, 06:49:09.
Port /dev/ttyUSB0

Нажмите CTRL-A Z для получения подсказки по клавишам

AT S7=45 S0=0 L1 V1 X4 &amp;c1 E1 Q0
OK</pre>
<p>Проверяем реакцию модема на команды, введя &#171;<strong>AT</strong>&#187; и нажав &#171;<em>Enter</em>&#171;. Если все нормально, то получим ответ от модема &#171;<strong>OK</strong>&#171;.<br />
Следующим пунктом навсегда отключаем эмуляцию CD-ROM на модеме. Для этого вводим команду &#171;<strong>AT^U2DIAG=0</strong>&#187; и жмем &#171;<em>Enter</em>&#171;. После этого должен прийти ответ от модема &#171;<strong>OK</strong>&#187; означающий, что модем переведен в режим &#171;только модем&#187;.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/05/1.png"><img class="aligncenter size-full wp-image-578" title="внешний вид окна minicom" src="http://ky6uk.org/wp-content/uploads/2010/05/1.png" alt="внешний вид окна minicom" width="130" height="64" /></a></p>
<p>Теперь жмем &#171;<strong>Ctrl+A,Q</strong>&#187; на клавиатуре. Появится меню &#171;<strong>Выйти без сброса?</strong>&#187; на который отвечаем утвердительно и выходим из программы.</p>
<p><a href="http://ky6uk.org/wp-content/uploads/2010/05/minicom_exit.png"><img class="aligncenter size-full wp-image-580" title="диалог выхода из minicom без сброса" src="http://ky6uk.org/wp-content/uploads/2010/05/minicom_exit.png" alt="диалог выхода из minicom без сброса" width="195" height="63" /></a></p>
<p>На этом с модемом закончим.</p>
<h5>Список известных мне команд</h5>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">AT^U2DIAG=0       (устройство в режиме только модем)
AT^U2DIAG=1       (устройство в режиме модем + CD-ROM)
AT^U2DIAG=255     (устройство в режиме модем + CD-ROM + Card Reader)</pre>
<p><a name="section2"></a><br />
<h4>Подготовка роутера</h4>
<p>Вот и подошла очередь нашего WiFi-роутера. Для него нам понадобится альтернативная прошивка <strong>WL-500gpv2 &#171;от Олега&#187;</strong>. Взять свежую можно <a href="http://code.google.com/p/wl500g/downloads/list?can=2&amp;q=wl-500gpv2">тут</a>. На момент написания статьи это версия <strong>1.9.2.7-d-r1445</strong>.</p>
<blockquote><p>Не лишним будет сказать, что прошивка DIR-320 заняла у меня довольно много времени. Дело в том, что на прошивку этого девайса дается около двух секунд после включения питания. Не совру если скажу, что поначалу пытался поймать нужный промежуток более 50 раз, но зато теперь выработал стопроцентный алгоритм. :)<br />
<span style="color: #008000;"><em>Не сомневаюсь, что есть много других способов прошивки. Можете поделиться своими проверенными в комментариях.</em></span></p></blockquote>
<p>Теперь о самом процессе.<br />
Для прошивки нам понадобится <em>tftp</em>-клиент. Я использовал <a href="http://packages.ubuntu.com/search?keywords=atftp">atftp</a></p>
<pre class="brush: bash; title: ; notranslate">~$ sudo aptitude install atftp</pre>
<p>Следующим шагом соединяем наш компьютер с роутером через кабель и выставляем на компьютере сетевой адрес <em>192.168.0.2</em>.</p>
<blockquote><p>Установка статичного адреса в <em>Ubuntu</em> с установленным <a href="http://ru.opensuse.org/KNetworkManager">KNetworkManager</a>, который был настроен на <a href="http://ru.wikipedia.org/wiki/DHCP">DHCP</a> вызвала у меня некоторые затруднения. Этот аплет постоянно переподключал сеть при перезагрузке роутера, из-за чего я не мог попасть в двухсекундный промежуток для прошивки. Пришлось &#171;убить&#187; этот процесс и выключить демон <em>network-manager</em></p>
<pre class="brush: bash; title: ; notranslate">~$ sudo invoke-rc.d network-manager stop</pre>
<p>затем прописать в <em>/etc/network/interfaces</em></p>
<pre class="brush: plain; title: ; notranslate">auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0</pre>
<p>и &#171;поднять&#187; интерфейс обычным</p>
<pre class="brush: bash; title: ; notranslate">~$ sudo ifup eth0</pre>
</blockquote>
<p>Теперь нам нужно подготовить прошивку.<br />
Делаем <em>cd</em> в директорию с прошивкой, вводим в консоль</p>
<pre class="brush: bash; title: ; notranslate">~$ atftp -l ./WL500gpv2-1.9.2.7-d-r1445.trx -p 192.168.0.1</pre>
<p>но &#171;<em>Enter</em>&#187; <u>не жмем</u>, пока только вводим.</p>
<p>Держа наготове открытую консоль с этой командой, отключаем питание роутера на пару секунд и включаем вновь, внимательно следя за индикатором порта в который вставлен кабель.</p>
<p>Как только индикатор загорится, моментально нажимаем в консоли &#171;<em>Enter</em>&#171;, отправляя введенную ранее команду <em>atftp</em>. Если все сделано правильно, то индикатор начнет мигать с высокой частотой, что означает: процесс прошивки начался (как вариант, можно добавить опцию <em>&#8212;trace</em> к <em>atftp</em>, тогда прогресс прошивки будет отображаться в консоли).</p>
<p>Теперь остается только ждать окончания прошивки. У меня ожидание заняло около двух минут, по окончанию которых роутер сам себя перезагрузил (можно наблюдать на индикаторах) и начал работать в штатном режиме с новой прошивкой.</p>
<p><a name="section3"></a><br />
<h4>Настройка подключения</h4>
<p>Дело осталось за малым &#8212; настроить модемное соединение на роутере.<br />
Для этого нам понадобится только <a href="http://packages.ubuntu.com/search?keywords=telnet">telnet</a>, который присутствует в большинстве базовых конфигураций дистрибутива. Если его нет, устанавливаем:</p>
<pre class="brush: bash; title: ; notranslate">~$ sudo aptitude install telnet</pre>
<p>Перед запуском <em>telnet</em> выставляем на компьютере любой сетевой адрес из диапазона <em>192.168.1.0/24</em> (кроме .0, .1 и .255, естественно). Можно и через <em>DHCP</em> &#8212; теперь роутер сам выдаст нам нужный адрес. Допустим, это будет адрес <em>192.168.1.2</em>.</p>
<p>Запускаем <em>telnet</em>, вводим логин и пароль (<em>admin:admin</em> по-умолчанию) и попадаем в консоль маршрутизатора (далее все команды вводим в эту консоль):</p>
<pre class="brush: bash; title: ; notranslate">$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
(none) login: admin
Password:
[admin@(none) root]$</pre>
<p>Проверяем как определился наш модем, запустив</p>
<pre class="brush: bash; title: ; notranslate">tail -f /usr/tmp/syslog.log</pre>
<p>Вставляем модем в USB порт и через пару секунд в логе должны появиться примерно следующие строки:</p>
<pre class="brush: plain; title: ; notranslate">Jan  1 00:11:14 kernel: hub.c: new USB device 00:03.0-1, assigned address 2
Jan  1 00:11:14 kernel: usb.c: USB device 2 (vend/prod 0x12d1/0x1001) is not claimed by any active driver</pre>
<p>Если <em>vend/prod</em> определилось как <em>0x12d1/0&#215;1001</em>, то все в порядке. Модем работает как нам и нужно в режиме &#171;только модем&#187;. Если вместо <em>0&#215;1001</em> другие цифры, например <em>0&#215;1446</em>, что означает работу модема в заводском режиме, то вы сделали что-то не так на шаге <a href="#section1">подготовки модема</a>.</p>
<p>Подключаем модуль для работы с нашим модемом</p>
<pre class="brush: bash; title: ; notranslate">insmod usbserial vendor=0x12d1 product=0x1001</pre>
<p>и проверяем наличие новых девайсов</p>
<pre class="brush: bash; title: ; notranslate">ls -l /dev/usb/tts/*
crw-------    1 admin    root     188,   0 Jan  1 00:00 /dev/usb/tts/0
crw-------    1 admin    root     188,   1 Jan  1 00:00 /dev/usb/tts/1
crw-------    1 admin    root     188,   2 Jan  1 00:00 /dev/usb/tts/2</pre>
<p>Выше видно, что у нас появилось три новых девайса <em>/dev/usb/tts/[0-2]</em>. Работать будем с <em>/dev/usb/tts/0</em>.</p>
<p>Если все в порядке, перейдем непосредственно к настройке подключения.<br />
Создадим директорию <em>/tmp/ppp/peers</em>:</p>
<pre class="brush: bash; title: ; notranslate">mkdir /tmp/ppp/peers</pre>
<p>Пропишем в файле <em>/tmp/ppp/peers/dialup</em> необходимые настройки модема, выполнив в консоли ряд команд:</p>
<pre class="brush: bash; title: ; notranslate">echo &quot;debug&quot; &gt; /tmp/ppp/peers/dialup
echo &quot;/dev/usb/tts/0&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;460800&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;crtscts&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;noipdefault&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;ipcp-accept-local&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;lcp-echo-interval 60&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;lcp-echo-failure 5&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;usepeerdns&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;noauth&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;persist&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;nodetach&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;user ''&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;password ''&quot; &gt;&gt; /tmp/ppp/peers/dialup
echo &quot;connect \&quot;/usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2&gt;/tmp/chat.log\&quot;&quot; &gt;&gt; /tmp/ppp/peers/dialup</pre>
<p>Проверим что у нас получилось, не пропуская ни одной кавычки:</p>
<pre class="brush: bash; title: ; notranslate">cat /tmp/ppp/peers/dialup</pre>
<p>Вывод должен выглядеть следующим образом:</p>
<pre class="brush: plain; title: ; notranslate">debug
/dev/usb/tts/0
460800
crtscts
noipdefault
ipcp-accept-local
lcp-echo-interval 60
lcp-echo-failure 5
usepeerdns
noauth
persist
nodetach
user ''
password ''
connect &quot;/usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2&gt;/tmp/chat.log&quot;</pre>
<blockquote><p>Править файлы можно консольным редактором <em>vi</em>, который присутствует в данной прошивке. Например</p>
<pre class="brush: bash; title: ; notranslate">vi /tmp/ppp/peers/dialup</pre>
<p>откроет файл <em>/tmp/ppp/peers/dialup</em> в этом редакторе.</p>
<p>Клавиша &#171;<em>i</em>&#187; переведет редактор в режим редактирования.<br />
&#171;<em>Esc</em>&#187; &#8212; выход из режима редактирования.<br />
&#171;<em>:qw</em>&#187; &#8212; выход с сохранением.<br />
&#171;<em>:q!</em>&#187; &#8212; выход без сохранения.</p></blockquote>
<p>Теперь настроим файл <em>/tmp/ppp/dialup.chat</em> так же выполнив ряд консольных команд:</p>
<pre class="brush: bash; title: ; notranslate">echo &quot;'' ''&quot; &gt; /tmp/ppp/dialup.chat
echo &quot;'' 'ATZ'&quot; &gt;&gt; /tmp/ppp/dialup.chat
echo &quot;'' 'AT+CGDCONT=1,&quot;IP&quot;,&quot;internet&quot;'&quot; &gt;&gt; /tmp/ppp/dialup.chat
echo &quot;'OK' 'ATD *99#'&quot; &gt;&gt; /tmp/ppp/dialup.chat
echo &quot;'CONNECT' ''&quot; &gt;&gt; /tmp/ppp/dialup.chat</pre>
<p>Проверим что у нас получилось:</p>
<pre class="brush: bash; title: ; notranslate">[admin@(none) root]$ cat /tmp/ppp/dialup.chat
'' ''
'' 'ATZ'
'' 'AT+CGDCONT=1,IP,internet'
'OK' 'ATD *99#'
'CONNECT' ''</pre>
<p>Если все верно, закрепим результат выполнив еще несколько команд:</p>
<pre class="brush: bash; title: ; notranslate">echo /tmp/ppp/peers/dialup &gt; /tmp/local/.files
echo /tmp/ppp/dialup.chat &gt;&gt; /tmp/local/.files
flashfs save &amp;&amp; flashfs commit &amp;&amp; flashfs enable</pre>
<p>Последняя строка запишет все наши изменения в память роутера, чтобы они остались после перезагрузки. Результатом её выполнения будет примерно следующее:</p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">tar: removing leading '/' from member names
tmp/local/
tmp/local/.files
tmp/local/root/
tmp/ppp/peers/dialup
tmp/ppp/dialup.chat
-rw-r--r--    1 admin    root          451 Jan  1 00:11 /tmp/flash.tar.gz
Check saved image and type &quot;/sbin/flashfs commit&quot; to commit changes
.
Committed.</pre>
<p>Теперь можно перезагрузить маршрутизатор отправив в консоль команду</p>
<pre class="brush: bash; title: ; notranslate">reboot</pre>
<p>Ждем порядка 20 секунд и вновь заходим в консоль с помощью <em>telnet</em></p>
<pre class="brush: bash; title: ; notranslate">~$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
(none) login: admin
Password:
[admin@(none) root]$</pre>
<p>После входа в консоль роутера выполняем</p>
<pre class="brush: bash; title: ; notranslate">insmod usbserial vendor=0x12d1 product=0x1001</pre>
<p>и</p>
<pre class="brush: bash; title: ; notranslate">pppd call dialup</pre>
<p>В консоли должно появиться много строк примерно следующего содержания</p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">Script /usr/sbin/chat -s -S -V -t 60 -f /tmp/ppp/dialup.chat 2&gt;/tmp/chat.log finished (pid 104), status = 0x0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 &lt;--&gt; /dev/usb/tts/0
sent [LCP ConfReq id=0x1 &lt;asyncmap 0x0&gt; &lt;magic 0x9faec1e2&gt; &lt;pcomp&gt; &lt;accomp&gt;]
rcvd [LCP ConfReq id=0x0 &lt;asyncmap 0x0&gt; &lt;auth chap MD5&gt; &lt;magic 0x102357d&gt; &lt;pcomp&gt; &lt;accomp&gt;]
No auth is possible
sent [LCP ConfRej id=0x0 &lt;auth chap MD5&gt;]
rcvd [LCP ConfAck id=0x1 &lt;asyncmap 0x0&gt; &lt;magic 0x9faec1e2&gt; &lt;pcomp&gt; &lt;accomp&gt;]
rcvd [LCP ConfReq id=0x1 &lt;asyncmap 0x0&gt; &lt;magic 0x102357d&gt; &lt;pcomp&gt; &lt;accomp&gt;]
sent [LCP ConfAck id=0x1 &lt;asyncmap 0x0&gt; &lt;magic 0x102357d&gt; &lt;pcomp&gt; &lt;accomp&gt;]
sent [LCP EchoReq id=0x0 magic=0x9faec1e2]
sent [CCP ConfReq id=0x1 &lt;mppe -H -M -S -L -D +C&gt; &lt;deflate 15&gt; &lt;deflate(old#) 15&gt; &lt;bsd v1 15&gt;]
sent [IPCP ConfReq id=0x1 &lt;compress VJ 0f 01&gt; &lt;addr 0.0.0.0&gt; &lt;ms-dns1 0.0.0.0&gt; &lt;ms-dns2 0.0.0.0&gt;]
rcvd [LCP DiscReq id=0x2 magic=0x102357d]
rcvd [LCP EchoRep id=0x0 magic=0x102357d 9f ae c1 e2]
rcvd [LCP ProtRej id=0x3 80 fd 01 01 00 15 12 06 00 00 00 01 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
rcvd [IPCP ConfNak id=0x1 &lt;ms-dns1 10.11.12.13&gt; &lt;ms-dns2 10.11.12.14&gt; &lt;ms-wins 10.11.12.13&gt; &lt;ms-wins 10.11.12.14&gt;]
sent [IPCP ConfReq id=0x2 &lt;compress VJ 0f 01&gt; &lt;addr 0.0.0.0&gt; &lt;ms-dns1 10.11.12.13&gt; &lt;ms-dns2 10.11.12.14&gt; &lt;ms-wins 10.11.12.13&gt; &lt;ms-wins 10.11.12.14&gt;]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 &lt;addr 0.0.0.0&gt;]
rcvd [IPCP ConfRej id=0x2 &lt;compress VJ 0f 01&gt; &lt;ms-wins 10.11.12.13&gt; &lt;ms-wins 10.11.12.14&gt;]
sent [IPCP ConfReq id=0x3 &lt;addr 0.0.0.0&gt; &lt;ms-dns1 10.11.12.13&gt; &lt;ms-dns2 10.11.12.14&gt;]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfNak id=0x3 &lt;addr 10.248.41.100&gt; &lt;ms-dns1 83.149.19.123&gt; &lt;ms-dns2 83.149.19.124&gt;]
sent [IPCP ConfReq id=0x4 &lt;addr 10.248.41.100&gt; &lt;ms-dns1 83.149.19.123&gt; &lt;ms-dns2 83.149.19.124&gt;]
rcvd [IPCP ConfAck id=0x4 &lt;addr 10.248.41.100&gt; &lt;ms-dns1 83.149.19.123&gt; &lt;ms-dns2 83.149.19.124&gt;]
Could not determine remote IP address: defaulting to 10.64.64.64
local  IP address 10.248.41.100
remote IP address 10.64.64.64
primary   DNS address 83.149.19.123
secondary DNS address 83.149.19.124
Script /tmp/ppp/ip-up started (pid 107)
Script /tmp/ppp/ip-up finished (pid 107), status = 0x0</pre>
<p>и произойти подключение интернета через модем (синяя лампочка на модеме будет постоянно гореть).</p>
<p>Проверяем интернет, загрузив на компьютере браузер и посетив несколько сайтов.</p>
<p>Отлично. Теперь разорвем подключение комбинацией &#171;<strong>Ctrl+C</strong>&#187; в консоли и пропишем подключение через модем в автозагрузку роутера:</p>
<p>Выполним несколько команд:</p>
<pre class="brush: bash; title: ; notranslate">mkdir /tmp/local/sbin
echo &quot;#!/bin/sh&quot; &gt; /tmp/local/sbin/post-boot
echo &quot;insmod usbserial vendor=0x12d1 product=0x1001&quot; &gt;&gt; /tmp/local/sbin/post-boot
echo &quot;sleep 10&quot; &gt;&gt; /tmp/local/sbin/post-boot
echo &quot;pppd call dialup&quot; &gt;&gt; /tmp/local/sbin/post-boot
chmod +x /tmp/local/sbin/post-boot</pre>
<p>и проверим что получилось:</p>
<pre class="brush: bash; title: ; notranslate">[admin@(none) root]$ cat /tmp/local/sbin/post-boot
#!/bin/sh
insmod usbserial vendor=0x12d1 product=0x1001
sleep 10
pppd call dialup</pre>
<p>Если все верно, запишем результат в память маршрутизатора:</p>
<pre class="brush: bash; title: ; notranslate">flashfs save &amp;&amp; flashfs commit &amp;&amp; flashfs enable</pre>
<p>На этом все. Попытка подключения интернета через модем теперь будет происходить автоматически после перезагрузки роутера.</p>
<p><a name="section4"></a><br />
<h4>Эпилог</h4>
<p>Теперь у нас есть рабочий WiFi-роутер, способный раздавать не только проводной интернет, но так же интернет от 3G USB-модема &#171;Мегафон&#187; и интернет от 4G-модемов WiMAX (последнее включается в web-админке роутера).</p>
<p>Напоследок скажу, что я в курсе существующих &#171;альтернативных&#187; прошивок для <em>DIR-320</em> в которых подключение можно настроить проще (некоторые имеют встроенный usb-modeswitch и даже 3G-настройки в панели web-администрирования), но в силу ряда причин первое рабочее подключение у меня получилось именного с данной конфигурацией, которой я и решил поделиться.</p>
<p>Думаю, что руководство подойдет ко всей линейке маршрутизаторов <em>ASUS WL-500gx / WL-550gE / WL-500gp / WL-500W / WL-320gE / WL-320gP / WL-330gE / WL-500gp V2 / WL-520gU</em> за исключением способа прошивки.</p>
<p><a name="section5"></a><br />
<h4>Полезные ссылки</h4>
<ul>
<li><a href="http://rus-linux.net/nlib.php?name=/MyLDP/internet/modem-ru.html">Отключение эмуляции CD-ROM на модеме.</a></li>
<li><a href="http://red-forum.com/showthread.php?t=6780">Настройка 3G-интернета на DIR-320.</a></li>
<li><a href="http://www.w3schools.com/html/html_links.asp">Использование HTML-тега &lt;a&gt;&lt;/a&gt;</a> (вспоминал как ставить &#171;якорь&#187;)</li>
<li><a href="http://crazylog.co.ua/archives/wordpress-posts-revision-control/">Управление редакциями записей в WordPress.</a> (<a href="http://wordpress.org/extend/plugins/revision-control/">Revision Control</a> сокращает количество редакций)</li>
</ul>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.org/peredacha-zvuka-po-seti-pri-pomoshhi-pulseaudio" title="Передача звука по сети при помощи PulseAudio">Передача звука по сети при помощи PulseAudio</a></li><li><a href="http://ky6uk.org/ubuntu-11-10-oneiric-ocelot-pora-obnovlyatsya" title="Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!">Ubuntu 11.10 Oneiric Ocelot &#8212; пора обновляться!</a></li><li><a href="http://ky6uk.org/pochtovyj-smtp-imap-server-svoimi-rukami" title="Почтовый SMTP / IMAP сервер своими руками.">Почтовый SMTP / IMAP сервер своими руками.</a></li><li><a href="http://ky6uk.org/ubuntu-11-04-natty-narwhal-obnovlyaemsya" title="Ubuntu 11.04 Natty Narwhal. Обновляемся.">Ubuntu 11.04 Natty Narwhal. Обновляемся.</a></li><li><a href="http://ky6uk.org/ispolzovanie-neskolkix-ssh-klyuchej" title="Использование нескольких SSH ключей">Использование нескольких SSH ключей</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.org/razdayom-3g-internet-ot-megafona-cherez-dir-320/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

