<?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>Kamenitza Notepad &#187; Linux</title>
	<atom:link href="http://kamenitza.org/archives/category/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://kamenitza.org</link>
	<description>Още една халба с акъл...</description>
	<lastBuildDate>Sun, 08 Jan 2012 21:38:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Send email with attachment in bash shell</title>
		<link>http://kamenitza.org/archives/784</link>
		<comments>http://kamenitza.org/archives/784#comments</comments>
		<pubDate>Sun, 08 Jan 2012 21:35:57 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[attach]]></category>
		<category><![CDATA[attachment]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[mutt]]></category>
		<category><![CDATA[send]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=784</guid>
		<description><![CDATA[Да изпратим писмо с прикачени файлове в bash. Удобно и лесно това става с меил-клиента mutt: # echo &#34;Body&#34; &#124; mutt -s &#34;Subject&#34; -a file1 -a file2 user@domain.tld]]></description>
			<content:encoded><![CDATA[<p>Да изпратим писмо с прикачени файлове в bash.<br />
Удобно и лесно това става с меил-клиента <strong>mutt</strong>:<br />
<code># echo &quot;Body&quot; | mutt -s &quot;Subject&quot; -a file1 -a file2 user@domain.tld</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/784/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sendmail relay to Gmail</title>
		<link>http://kamenitza.org/archives/774</link>
		<comments>http://kamenitza.org/archives/774#comments</comments>
		<pubDate>Sat, 07 Jan 2012 09:03:35 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[authenticate]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[relay]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[smarthost]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=774</guid>
		<description><![CDATA[Най-сигурният начин за изпращане на поща от какъвто и да е сървър е препращането на писмата към пощенски сървър, който отговаря на всички стандарти, така че кореспонденцията идваща от него да не се счита за спам и да не бъде филтрирана. Ще дам пример как sendmail ще &#8220;релейва&#8221; през пощенските сървъри на Гугъл. Това означава, [...]]]></description>
			<content:encoded><![CDATA[<p>Най-сигурният начин за изпращане на поща от какъвто и да е сървър е препращането на писмата към пощенски сървър, който отговаря на всички стандарти, така че кореспонденцията идваща от него да не се счита за спам и да не бъде филтрирана.<br />
Ще дам пример как sendmail ще &#8220;релейва&#8221; през пощенските сървъри на Гугъл. Това означава, че задължително трябва да имаме активен пощенски акаунт в gmail.com.</p>
<p>В <strong>/etc/mail/sendmail.mc</strong> намираме следният ред:<br />
<code>dnl define(`SMART_HOST&#039;, `smtp.your.provider&#039;)dnl</code><br />
и го корегираме на:<br />
<code>define(`SMART_HOST&#039;, `smtp.gmail.com&#039;)dnl</code></p>
<p>Следва компилация на направените промени:<br />
<code># m4 /etc/mail/sendmail.mc &gt; /etc/mail/sendmail.cf</code><br />
<em>(Необходимо е пакета sendmail-cf да бъде инсталиран)</em></p>
<p>В /etc/mail/access добавяме реда с данните за аутентикация:<br />
<code>AuthInfo:smtp.gmail.com &quot;U:username@gmail.com&quot; &quot;P:password&quot; &quot;M:PLAIN&quot;</code></p>
<p>Следва отново &#8220;компилация&#8221; на направената промяна:<br />
<code># makemap hash /etc/mail/access &lt; /etc/mail/access</code></p>
<p>Всички домейни писмата, до които не трябва да се изпращат към smart host-а се описват в <strong>/etc/mail/local-host-names</strong> по един на ред:<br />
<pre><code>loclahost
localhost.localdomain
hostmaster.kamenitza.org</code></pre><br />
Така ще избегнете всички писма генерирани от локалните демони да излизат в Интернет.</p>
<p>И рестартиране на sendmail:<br />
<code># /etc/init.d/sendmail restart</code></p>
<p>Не забравяйте да настроите sendmail да се стартира автоматично с операционната система:<br />
<code># chkconfig sendmail on</code></p>
<p>Туй то <img src='http://kamenitza.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/774/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DRBD &#8211; replicated filesystem</title>
		<link>http://kamenitza.org/archives/752</link>
		<comments>http://kamenitza.org/archives/752#comments</comments>
		<pubDate>Sat, 26 Nov 2011 16:48:05 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[drbd]]></category>
		<category><![CDATA[ext3]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[redundant]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[sync]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=752</guid>
		<description><![CDATA[За да сме сигурни, че няма да загубим някаква информация обикновено я архивираме, нали? Веднъж месечно, веднъж седмично, веднъж дневно? Ами ако ни е необходимо по-често архивиране, на ресурс, който постоянно се актуализира, като база данни например? Някои сървъри за бази данни (като mysql) осигуряват собствено репликиране върху отдалечен сървър. Нещо по-добро е репликирането на [...]]]></description>
			<content:encoded><![CDATA[<p>За да сме сигурни, че няма да загубим някаква информация обикновено я архивираме, нали? Веднъж месечно, веднъж седмично, веднъж дневно? Ами ако ни е необходимо по-често архивиране, на ресурс, който постоянно се актуализира, като база данни например? Някои сървъри за бази данни (като mysql) осигуряват собствено репликиране върху отдалечен сървър.</p>
<p>Нещо по-добро е репликирането на цяла файлова система на блоково ниво. Всяка една промяна върху диска се репликира моментално каквато и да е тя &#8211; и то без софтуерът, който ползва тази файлова система да разбере.</p>
<p>Удобен начин да се направи това в линукс е чрез <a href="http://www.drbd.org/" target="_blank">DRBD</a>. Тъй като репликацията е на много ниско ниво, не можем да репликираме отделни директории или файлове &#8211; работим с цели дискове или дялове (партишъни). Тъй като не всеки разполага със свободен диск/дял, който да ползва за репликацията, ще дам пример с &#8220;изкуствен&#8221; диск, създаден във файл върху текущата файлова система (loopback image). Т.е. правим един файл с размер 1GB, присъединяваме го като виртуален локален диск, правим му файлова система по желание и вече е в бизнеса <img src='http://kamenitza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Създаваме файл с размер 1GB (на двата сървъра между, които ще репликираме):<br />
<code># dd if=/dev/zero of=/root/disk.img bs=1M count=1024</code></p>
<p>Сега да го прилепим към локално устройство <strong>/dev/loop0</strong>:<br />
<code># losetup /dev/loop0 /root/disk.img</code></p>
<p>Това до тук ще работи, но докато не рестартираме машината. За тази цел правим един init-скрипт, който да върши тази работа при стартиране на операционната система:<br />
<pre><code>#!/bin/bash
# lofsd:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Loopback filesystem
#
# chkconfig:&nbsp;&nbsp;&nbsp;&nbsp;- 10 80
# description:&nbsp;&nbsp;Creates loopback device
DRBD_SRC=&quot;/root/disk.img&quot;
DRBD_DEVICE=&quot;/dev/loop0&quot;
LOSETUP_CMD=&quot;/sbin/losetup&quot;
RETVAL=0
start() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Connecting loop devices $DRBD_DEVICE&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$LOSETUP_CMD $DRBD_DEVICE $DRBD_SRC
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETVAL=$?
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $RETVAL
}
stop() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Releasing loop devices $DRBD_DEVICE&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$LOSETUP_CMD -d $DRBD_DEVICE
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETVAL=$?
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $RETVAL
}
restart() {
&nbsp;&nbsp;&nbsp;&nbsp;stop
&nbsp;&nbsp;&nbsp;&nbsp;sleep 1
&nbsp;&nbsp;&nbsp;&nbsp;start
}
case &quot;$1&quot; in
&nbsp;&nbsp;&nbsp;&nbsp;start)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start
&nbsp;&nbsp;&nbsp;&nbsp;;;
&nbsp;&nbsp;&nbsp;&nbsp;stop)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop
&nbsp;&nbsp;&nbsp;&nbsp;;;
&nbsp;&nbsp;&nbsp;&nbsp;restart)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restart
&nbsp;&nbsp;&nbsp;&nbsp;;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Usage: $0 {start|stop|restart}&quot;
&nbsp;&nbsp;&nbsp;&nbsp;exit 1
esac
exit $?
exit $RETVAL</code></pre><br />
Записваме го под името <strong>/etc/init.d/lofsd</strong>. След това го правим изпълним:<br />
<code># chkmod +x /etc/init.d/lofsd</code></p>
<p>Регистрираме скрипта като системна услуга и го активираме:<br />
<pre><code># chkconfig --add lofsd
# chkconfig lofsd on</code></pre></p>
<p>До тук вече имаме един локален виртуален диск на <strong>/dev/loop0</strong> и нищо повече. Сега е ред да инсталираме и самото DRBD:<br />
<code># yum -y install drbd kmod-drbd</code></p>
<p>Конфигурационният му файл /etc/drbd.conf, е съвсем празен веднага след инсталацията, но има много добре коментиран примерен такъв в <strong>/usr/share/doc/drbd</strong>. Набързо спретвам следната конфигурация, която изглежда сложна само на пръв поглед (еднаква е и за двата сървъра):<br />
<pre><code>global { usage-count no; }
resource repdata {
&nbsp;&nbsp;&nbsp;&nbsp;protocol C;
&nbsp;&nbsp;&nbsp;&nbsp;startup { wfc-timeout 0; degr-wfc-timeout&nbsp;&nbsp;&nbsp;&nbsp; 120; }
&nbsp;&nbsp;&nbsp;&nbsp;disk { on-io-error detach; }
&nbsp;&nbsp;&nbsp;&nbsp;net {&nbsp;&nbsp;cram-hmac-alg &quot;sha1&quot;; shared-secret &quot;ie74t6384&quot;; }
&nbsp;&nbsp;&nbsp;&nbsp;syncer { rate 10M; }
&nbsp;&nbsp;&nbsp;&nbsp;on n1.kamenitza.org {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device /dev/drbd0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disk /dev/loop0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address 10.0.0.1:7788;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;meta-disk internal;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;on n2.kamenitza.org {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;device /dev/drbd0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disk /dev/loop0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address 10.0.0.2:7788;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;meta-disk internal;
&nbsp;&nbsp;&nbsp;&nbsp;}
}</code></pre></p>
<p>Няма да коментирам кой ред какво върши &#8211; вероятно само очевидните неща като, пътища до устройства и адреси ще трябва да редактирате &#8211; останалото е почти универсално. Все пак, ако се интересувате &#8211; разгледайте примерният <strong>drbd.conf</strong>, който е изключително добре коментиран. Когато приключите с конфигурацията &#8211; копирайте я и на вторият сървър.</p>
<p>Време е да инициализираме мета-данните (и на двата сървъра):<br />
<pre><code># drbdadm create-md repdata
v08 Magic number not found
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.</code></pre></p>
<p>Сигурно веднага ще опитате да стартирате услугата, но може да ударите стена:<br />
<pre><code># /etc/init.d/drbd start
Restarting all DRBD resourcesNo response from the DRBD driver! Is the module loaded?
Command &#039;/sbin/drbdsetup /dev/drbd0 down&#039; terminated with exit code 20
command exited with code 20
ERROR: Module drbd does not exist in /proc/modules</code></pre></p>
<p>Ами това помага <img src='http://kamenitza.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> :<br />
<code># modprobe drbd</code></p>
<p>След като сте стартирали сървиса (и на двата сървъра), можете да наблюдавате статуса на дисковия ресурс ето така:<br />
<pre><code># cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11:30:17
 0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
&nbsp;&nbsp;&nbsp;&nbsp;ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:1048508</code></pre></p>
<p>Ако някой забелязва &#8211; и двете копия са вторични (secondary). Такива ще си останат, докато ние не изберем, кой да е водещият сървър и в неговия шел пуснем ето това:<br />
<code># drbdadm -- --overwrite-data-of-peer primary repdata</code></p>
<p>Я да видим статуса:<br />
<pre><code># cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11:30:17
 0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
&nbsp;&nbsp;&nbsp;&nbsp;ns:16932 nr:0 dw:0 dr:19168 al:0 bm:1 lo:0 pe:4 ua:70 ap:0 oos:1031676
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&gt;....................] sync&#039;ed:&nbsp;&nbsp;2.0% (1031676/1048508)K
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finish: 0:00:59 speed: 16,832 (16,832) K/sec</code></pre></p>
<p>Сякаш работи и вече тече репликация, а? <img src='http://kamenitza.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Остана да направим една файлова система на DRBD диска:<br />
<code># mkfs -t ext3 /dev/drbd0</code></p>
<p>И да го монтираме (създайте директорията /mnt/disk и на двата сървъра, но го монтирайте само на първия):<br />
<code>mount /dev/drbd0 /mnt/disk</code></p>
<p>След приключване на репликацията, нещата изглеждат горе долу така:<br />
<pre><code># cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
 0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
&nbsp;&nbsp;&nbsp;&nbsp;ns:56 nr:1412 dw:1468 dr:21 al:2 bm:3 lo:0 pe:0 ua:0 ap:0 oos:0</code></pre></p>
<p>Ами можем вече да го изпробваме. Копирайте някакви файлове на диска преди това.<br />
Ръчно размонтираме и правим вторичен първият сървър (n1):<br />
<code># umount /mnt/disk ; drbdadm secondary repdata</code></p>
<p>Сега отиваме на втория (n2) и правим следното:<br />
<code># drbdadm primary repdata ; mount /dev/drbd0 /mnt/disk</code></p>
<p>И трябва да виждаме същите файлове, които преди това копирахме от сървър n1.</p>
<p>За да си улесним живота в бъдеще можем да редактираме и /etc/fstab, който до момента изглежда горе-долу така:<br />
<pre><code>LABEL=/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext3&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 1
tmpfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /dev/shm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpfs&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
devpts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/pts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;devpts&nbsp;&nbsp;gid=5,mode=620&nbsp;&nbsp;0 0
sysfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysfs&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proc&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
LABEL=SWAP-sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; swap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0</code></pre></p>
<p>Добавяме следният ред най-долу:<br />
<pre><code>/dev/drbd0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/mnt/disk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext3&nbsp;&nbsp;&nbsp;&nbsp;noauto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
</code></pre></p>
<p>Така, че файлът да придобие този вид:<br />
<pre><code>LABEL=/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext3&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 1
tmpfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /dev/shm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpfs&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
devpts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/pts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;devpts&nbsp;&nbsp;gid=5,mode=620&nbsp;&nbsp;0 0
sysfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysfs&nbsp;&nbsp; defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proc&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
LABEL=SWAP-sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; swap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap&nbsp;&nbsp;&nbsp;&nbsp;defaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0
/dev/drbd0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/mnt/disk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext3&nbsp;&nbsp;&nbsp;&nbsp;noauto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0</code></pre></p>
<p>Цялата тази глезотия става изключително полезна, когато се съвмести с <strong>Heartbeat</strong>. Тогава в <strong>/etc/ha.d/haresources</strong> добавяме следният ред:<br />
<pre><code>n1.kamenitza.org&nbsp;&nbsp; drbddisk::repdata Filesystem::/dev/drbd0::/mnt/disk::ext3::rw
</code></pre></p>
<p>Ще се радвам, ако някой успее да приложи това някъде и сподели коментари <img src='http://kamenitza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/752/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables: Unknown error 18446744073709551615</title>
		<link>http://kamenitza.org/archives/749</link>
		<comments>http://kamenitza.org/archives/749#comments</comments>
		<pubDate>Sun, 13 Nov 2011 15:02:13 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[18446744073709551615]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=749</guid>
		<description><![CDATA[Неизвестна грешка&#8230; Никаква представа нямам какво я поражда &#8211; появява се когато си поиска при задаване на правила в iptables. Ядрото е: Linux xxx 2.6.18-274.7.1.el5 #1 SMP Thu Oct 20 16:21:01 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux Реших проблема като разреших centos-plus хранилището на yum: /etc/yum.repos.d/CentOS-Base.repo: [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&#38;arch=$basearch&#38;repo=centosplus #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 [...]]]></description>
			<content:encoded><![CDATA[<p>Неизвестна грешка&#8230;<br />
Никаква представа нямам какво я поражда &#8211; появява се когато си поиска при задаване на правила в iptables.<br />
Ядрото е:<br />
<code>Linux xxx 2.6.18-274.7.1.el5 #1 SMP Thu Oct 20 16:21:01 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux</code><br />
Реших проблема като разреших centos-plus хранилището на yum:<br />
<strong>/etc/yum.repos.d/CentOS-Base.repo:</strong><br />
<pre><code>[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&amp;arch=$basearch&amp;repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5</code></pre></p>
<p>И актуализирах ядрото с<br />
<code>yum upgrade</code></p>
<p>Към явно по-прилична компилация:<br />
<code>Linux xxx 2.6.18-274.7.1.el5.centos.plus #1 SMP Thu Oct 20 19:28:06 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux</code></p>
<p>Проблема повече не се е появявал <img src='http://kamenitza.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/749/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transfer RRD files to another platform</title>
		<link>http://kamenitza.org/archives/745</link>
		<comments>http://kamenitza.org/archives/745#comments</comments>
		<pubDate>Sun, 23 Oct 2011 20:40:05 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[rrd]]></category>
		<category><![CDATA[rrdtool]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=745</guid>
		<description><![CDATA[Имам предвид трансферирането на RRD базите данни от 64 битова платформа на 32 битова. Да, това не става просто с копиране на самите RRD файлове &#8211; те са различни в зависимост от това на каква платформа са създадени за по-добра оптимизация и бързодействие. При просто копиране на файловете ще получаваме грешки от сорта на: rrd_graph() [...]]]></description>
			<content:encoded><![CDATA[<p>Имам предвид трансферирането на RRD базите данни от 64 битова платформа на 32 битова. Да, това не става просто с копиране на самите RRD файлове &#8211; те са различни в зависимост от това на каква платформа са създадени за по-добра оптимизация и бързодействие.</p>
<p>При просто копиране на файловете ще получаваме грешки от сорта на:<br />
<code>rrd_graph() ERROR: This RRD was created on another architecture</code></p>
<p>Най-доброто, което може да се направи е базите данни да се експортират в XML формат, след това тези XML файлове да се копират и да се конвертират обратно в RRD.</p>
<p>Експортиране в XML:<br />
<code>for i in `find -name &quot;*.rrd&quot;`; do rrdtool dump $i &gt; $i.xml; done</code></p>
<p>Конвертиране обратно в RRD:<br />
<code>for i in `find -name &quot;*.xml&quot;`; do rrdtool restore $i `echo $i | sed s/.xml//g`; done</code></p>
<p>Енжой <img src='http://kamenitza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/745/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Squid and proxy authentication</title>
		<link>http://kamenitza.org/archives/742</link>
		<comments>http://kamenitza.org/archives/742#comments</comments>
		<pubDate>Sun, 25 Sep 2011 17:09:28 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=742</guid>
		<description><![CDATA[Целта е да се изконфигурира прокси, което да допуска всеки &#8220;регистриран&#8221; клиент &#8211; такъв с име и парола. Squid поддържа много методи за уторизация на потребители, но най-лесен ми се струва NCSA. Ще дам пример със squid на CentOS 5.6 64bit. Създаваме файла с потребителските имена и пароли: # htpasswd -c /etc/squid/passwd user Само ще [...]]]></description>
			<content:encoded><![CDATA[<p>Целта е да се изконфигурира прокси, което да допуска всеки &#8220;регистриран&#8221; клиент &#8211; такъв с име и парола.</p>
<p>Squid поддържа много методи за уторизация на потребители, но най-лесен ми се струва NCSA. Ще дам пример със squid на CentOS 5.6 64bit.</p>
<p>Създаваме файла с потребителските имена и пароли:<br />
<code># htpasswd -c /etc/squid/passwd user</code><br />
Само ще попита за парола.</p>
<p>Модула ncsa_auth обикновено е инсталиран заедно със squid. Можете да проверите ето така:<br />
<code># rpm -ql squid | grep ncsa_auth</code></p>
<p>Следните няколко реда се добавят в <strong>squid.conf</strong>:<br />
<pre><code>auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Please authenticate!
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off</code></pre></p>
<p>Без ACL запис няма да минем естествено <img src='http://kamenitza.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<pre><code>acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users</code></pre></p>
<p>Необходим е рестарт на squid.</p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/742/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDD free space monitoring</title>
		<link>http://kamenitza.org/archives/659</link>
		<comments>http://kamenitza.org/archives/659#comments</comments>
		<pubDate>Fri, 12 Aug 2011 20:14:02 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=659</guid>
		<description><![CDATA[Важно е да следим, с колко свободно пространство разполагаме. Давам пример на едно роботче писано на bash, което изпраща e-mail (sms), когато свободното пространство на посочен дял от диска падне под определена граница: #!/bin/bash #------Configuration #Send alert to this email address EMAIL=&#34;35988xxxxxxx@sms.mtel.net&#34; #Partition which should be monitored PARTITION=&#34;/dev/md1&#34; #If free space is less than this [...]]]></description>
			<content:encoded><![CDATA[<p>Важно е да следим, с колко свободно пространство разполагаме. Давам пример на едно роботче писано на bash, което изпраща e-mail (sms), когато свободното пространство на посочен дял от диска падне под определена граница:<br />
<pre><code>
#!/bin/bash

#------Configuration

#Send alert to this email address
EMAIL=&quot;35988xxxxxxx@sms.mtel.net&quot;

#Partition which should be monitored
PARTITION=&quot;/dev/md1&quot;

#If free space is less than this value in KB - send email
SPACELIMIT=1000000

#How long to wait in minutes to send another email
REMINDTIMEOUT=120

#Time format used in the message
TIME=`date +&quot;%d.%m.%y %H:%M&quot;`

#The marker prevents sending of too many messages
#Must be unique for each partition monitored.
#Add different numbers at the end of the file name for each partition
MARKER=&quot;/tmp/freespacereached&quot;

#------END of Configuration

if [ -f $MARKER ]; then
&nbsp;&nbsp;&nbsp;&nbsp;MARKERAGE=$(($((`date +%s`-`stat -c %Z $MARKER`)) / 60))
else
&nbsp;&nbsp;&nbsp;&nbsp;MARKERAGE=0
fi

if [ $MARKERAGE -gt $REMINDTIMEOUT ]; then
&nbsp;&nbsp;&nbsp;&nbsp;rm -f $MARKER
fi

FREESPACE=`df | grep &quot;$PARTITION&quot; | awk &#039;{ print $4}&#039;`
# Prevent crash in case of wrong partition configuration or data extraction
FREESPACE=$((FREESPACE+0));

if [ $FREESPACE -lt $SPACELIMIT ]; then
&nbsp;&nbsp;&nbsp;&nbsp;MSG=&quot;$TIME - Spacecheck WARNING! - $((FREESPACE/1024))MB available on $PARTITION&quot;
&nbsp;&nbsp;&nbsp;&nbsp;if [ ! -f &quot;$MARKER&quot; ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $MSG | mail $EMAIL
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch $MARKER
&nbsp;&nbsp;&nbsp;&nbsp;fi
else
&nbsp;&nbsp;&nbsp;&nbsp;rm -f $MARKER
fi
</code></pre></p>
<p>Изпълнението на скрипта се предоставя на cron, като се създава конфигурационен ред, подобен на този:<br />
<pre><code>
0 9-21 * * * /scripts/spacecheck.sh
</code></pre><br />
Т.е. прави проверка на всеки кръгъл час, но няма да ни безпокои през нощта <img src='http://kamenitza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Машината, на която се изпълнява трябва да може да изпраща електронна поща, т.е. трябва да има работещ sendmail, postfix или друга алтернатива.</p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/659/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Measure HDD temperature through SNMP</title>
		<link>http://kamenitza.org/archives/459</link>
		<comments>http://kamenitza.org/archives/459#comments</comments>
		<pubDate>Wed, 08 Jun 2011 22:02:39 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[hdd]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[SNMP]]></category>
		<category><![CDATA[temperature]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=459</guid>
		<description><![CDATA[SNMP е най-удобния протокол да следим състоянието на&#8230; всичко &#8211; натоварване на мрежовите интерфейси, на процесора, на паметта и на какво ли още не. За темата на тази статия съм загатнал тук, но сега ще дам по-точен пример. Ще споделя как може да се следи температурата на хард дисковете с негова помощ. Приемам, че сте [...]]]></description>
			<content:encoded><![CDATA[<p>SNMP е най-удобния протокол да следим състоянието на&#8230; всичко &#8211; натоварване на мрежовите интерфейси, на процесора, на паметта и на какво ли още не. За темата на тази статия съм загатнал <a href="http://kamenitza.org/archives/364">тук</a>, но сега ще дам по-точен пример.</p>
<p>Ще споделя как може да се следи температурата на хард дисковете с негова помощ. Приемам, че сте конфигурирали snmpd правилно и демонът работи (за справка &#8211; <a href="http://kamenitza.org/archives/259">тук</a>).</p>
<p>В конфигурацията на демона &#8211; <code>/etc/snmp/snmpd.conf</code> добавяте това:</p>
<p><code>exec hdd1temp /root/hdd1temp.sh</code></p>
<p>Това е съдържанието на <code>/root/hdd1temp.sh</code>:</p>
<p><pre><code>#!/bin/bash
/usr/sbin/smartctl -A /dev/sda | grep -i temperatur | awk &#039;{print&nbsp;&nbsp;$10}&#039;</code></pre></p>
<p>Задължително файлът да е изпълним (chmod +x &#8230;).</p>
<p>Рестарт на <code>snmpd</code> и нека проверим какво се случи:</p>
<p><code># snmpwalk -v2c -c communitypass localhost UCD-SNMP-MIB::extOutput</code></p>
<p>Този пример със <code>snmpwalk </code>ще &#8220;изплюе&#8221; всички <code>exec</code> редове от <code>snmpd.conf</code> по ред на номерата им.</p>
<p>От тук нататък е въпрос на фантазия какво ще правите със събираните данни. Можете да си настроите аларма при превишаване на температурата с подходящ bash скрипт, както и да рисувате статистика с RRD или MRTG.</p>
<p>Ето така ще получите само конкретната стойност готова за по-нататъшна обработка:</p>
<p><code># snmpwalk -v2c -Oqv -c communitypass localhost UCD-SNMP-MIB::extOutput.1</code></p>
<p>Примерът е от CentOS. За други дистрибуции файлът snmpd.conf може да е в друга директория, но останалото остава същото <img src='http://kamenitza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Енджой!</p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/459/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One router &#8211; two Internet Service Providers</title>
		<link>http://kamenitza.org/archives/447</link>
		<comments>http://kamenitza.org/archives/447#comments</comments>
		<pubDate>Tue, 07 Jun 2011 12:16:50 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[dual isp]]></category>
		<category><![CDATA[dual wan]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=447</guid>
		<description><![CDATA[Постановката е следната: Линукс рутер който се ползва за NAT-ване на домашна/офис мрежа за достъп до Интернет. Два Интернет доставчика за да има някаква резервираност. В най-простия пример линукс рутера е с 3 лан-карти &#8211; Доставчик1, Доставчик2 и Вътрешна мрежа. Приемам, че можете да си конфигурирате маскирането (NAT) така, че вътрешната мрежа да има Интернет, [...]]]></description>
			<content:encoded><![CDATA[<p>Постановката е следната:<br />
Линукс рутер който се ползва за NAT-ване на домашна/офис мрежа за достъп до Интернет.<br />
Два Интернет доставчика за да има някаква резервираност.<br />
В най-простия пример линукс рутера е с 3 лан-карти &#8211; Доставчик1, Доставчик2 и Вътрешна мрежа. Приемам, че можете да си конфигурирате маскирането (NAT) така, че вътрешната мрежа да има Интернет, но проблема ви е, че рутера не може да има едновременно два шлюза по подразбиране (default gateway). Добре де, за тези, които не знаят ще дам кратко примерче и за това <img src='http://kamenitza.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Доставчик1:<br />
закачен е към eth0<br />
IP: 100.100.100.12/255.255.255.0<br />
GW: 100.100.100.1</p>
<p>Доставчик2:<br />
закачен е към eth1<br />
IP: 200.200.200.56/255.255.255.0<br />
GW: 200.200.200.1</p>
<p>Вътрешна мрежа:<br />
закачена е към eth2<br />
192.168.1.1/24</p>
<p>Транслиране на изходящия трафик през интерфейсите към Интернет доставчиците:<br />
<code># iptables -t nat -A POSTROUTING -j MASQUERADE</code><br />
Маскирането по този начин работи дори и IP адреса да е динамичен.</p>
<p>От тук нататък дали ще ползваме Доставчик1 или Доставчик2 зависи само от това кой шлюз по подразбиране ще оставим активен на рутера &#8211; 100.100.100.1 или 200.200.200.1.</p>
<p>Сега едно малко скрипт-роботче ще проверява през 5 минути (или колкото вие решите) дали има връзка към Интернет. Проверката ще става като пингва един от ДНС сървърите на OpenDNS 208.67.222.222 (може и ИП адреса на някой root-DNS да сложите, няма значение &#8211; нещо което е винаги винаги на линия). Механизъмът е устроен така, че ако не получи отговор, ще подмени шлюза с този на другия доставчик.</p>
<p><pre><code>#!/bin/bash
GW1=100.100.100.1
GW2=200.200.200.1
CHECK_HOST=208.67.222.222

DEFAULT_GW=`ip route list | grep default | awk &#039;{print $3}&#039;`
if /bin/ping -n -c 5 $CHECK_HOST 1&gt;/dev/null 2&gt;/dev/null; then
&nbsp;&nbsp;echo &quot;Link OK&quot;
else
&nbsp;&nbsp;echo &quot;Link down! Switching...&quot;
&nbsp;&nbsp;if [ $DEFAULT_GW==GW1 ]; then
&nbsp;&nbsp;&nbsp;&nbsp;ip route del default
&nbsp;&nbsp;&nbsp;&nbsp;ip route add default via $GW2
&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;ip route del default
&nbsp;&nbsp;&nbsp;&nbsp;ip route add default via $GW1
&nbsp;&nbsp;fi
fi</code></pre></p>
<p>Копирайте този скрипт в текстов файл, направете го изпълним (chmod +x filename) и го добавете в crontab за изпълнение през определено време.</p>
<p>В този пример и двата доставчика са еднакво предпочитани. Т.е. когато от Д1 отпадне и преминем на Д2 &#8211; ще останем на Д2 дори и след като Д1 възстанови нормална работа. И така докато ползваният в момента доставчик не отпадне.</p>
<p>В следващ пост ще покажа и пример с 2 доставчика, в който се следи състоянието на 2те линии едновременно и можем да конфигурираме предпочитан и резервен доставчик.</p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/447/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrade linux password hashing security</title>
		<link>http://kamenitza.org/archives/444</link>
		<comments>http://kamenitza.org/archives/444#comments</comments>
		<pubDate>Tue, 07 Jun 2011 14:52:16 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=444</guid>
		<description><![CDATA[По подразбиране в RHEL/CentOS паролите на потребителите се съхраняват под формата на MD5 hash. Дали е така може да се провери с тази команда: # authconfig --test &#124; grep hashing За да променим алгоритъма за генериране на hash-ове пишем това: # authconfig --passalgo=sha512 --update Всички нови пароли ще бъдат в SHA512 формат.]]></description>
			<content:encoded><![CDATA[<p>По подразбиране в RHEL/CentOS паролите на потребителите се съхраняват под формата на MD5 hash.<br />
Дали е така може да се провери с тази команда:<br />
<code># authconfig --test | grep hashing</code></p>
<p>За да променим алгоритъма за генериране на hash-ове пишем това:<br />
<code># authconfig --passalgo=sha512 --update</code></p>
<p>Всички нови пароли ще бъдат в SHA512 формат.</p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/444/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix + clamav antivirus</title>
		<link>http://kamenitza.org/archives/423</link>
		<comments>http://kamenitza.org/archives/423#comments</comments>
		<pubDate>Tue, 21 Dec 2010 10:34:53 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[clamav]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=423</guid>
		<description><![CDATA[След като вече имаме работещ пощенски сървър със що-годе прилична спам-защита е добре да помислим и за антивирусна защита. Давам пример отново с CentOS 5.5, Postfix и доста популярната безплатна Clamav. Инсталация на антивирусната: # yum install clamav clamav-milter Редакция на /etc/clamav-milter.conf: MilterSocket inet:7357 MaxFileSize 100M AddHeader Replace ReportHostname mx.kamenitza.org Показвам само редовете, които аз [...]]]></description>
			<content:encoded><![CDATA[<p>След като вече имаме работещ пощенски сървър със що-годе прилична спам-защита е добре да помислим и за антивирусна защита.<br />
Давам пример отново с CentOS 5.5, Postfix и доста популярната безплатна Clamav.</p>
<p>Инсталация на антивирусната:<br />
<code># yum install clamav clamav-milter</code></p>
<p>Редакция на <strong>/etc/clamav-milter.conf</strong>:<br />
<pre><code>MilterSocket inet:7357
MaxFileSize 100M
AddHeader Replace
ReportHostname mx.kamenitza.org</code></pre></p>
<p>Показвам само редовете, които аз съм редактирал. Конфигурационният файл е много добре коментиран и описан така, че всеки може да пипа според нуждите си.</p>
<p>Стартираме демоните на антивирусната:<br />
<pre><code>#/etc/init.d/clamd start
#/etc/init.d/clamav-milter start</code></pre></p>
<p>Ще се покаже съобщение, че вирусните дефиниции са стари. Задължително е да ги обновим:<br />
<code>#freshclam</code></p>
<p>Добра идея е това да го сложим в cron, за да опреснява периодично:<br />
<code>#crontab -e</code></p>
<p>И добавяме реда:<br />
<code>0 1 * * * /usr/bin/freshclam</code></p>
<p>Следва настройката на Postfix, така, че да &#8220;прекара&#8221; писмата през антивирусната.<br />
Добавяне в <strong>/etc/postfix/main.cf</strong>:<br />
<pre><code>smtpd_milters = inet:127.0.0.1:7357
milter_default_action = accept</code></pre></p>
<p>В случай, че има конфигуриран и друг milter (както е при мен) &#8211; просто ги разделете със запетая:<br />
<code>smtpd_milters = inet:localhost:10027, inet:127.0.0.1:7357</code></p>
<p>Начин да проверите дали писмо е минало през антивирусната е като разгледате хедъра. Там ще видите нещо от сорта на:<br />
<pre><code>X-Virus-Scanned: clamav-milter 0.96.5 at mx.kamenitza.org
X-Virus-Status: Clean</code></pre></p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/423/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix + dk-milter = Not spam for sure</title>
		<link>http://kamenitza.org/archives/421</link>
		<comments>http://kamenitza.org/archives/421#comments</comments>
		<pubDate>Tue, 21 Dec 2010 08:28:08 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[dk-milter]]></category>
		<category><![CDATA[domainkey]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[milter]]></category>
		<category><![CDATA[not-spam]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=421</guid>
		<description><![CDATA[Един много добър вариант да покажете, че писмата излизащи от вашият пощенски сървър не са спам е използването на така наречения domainkey. Идеята е следната: Публичен ключ се съхранява в ТХТ запис на DNS-a на домейна от който ще изпращаме писмата, а с личният ключ се подписва всяко изпратено писмо. Така всеки спам филтър може [...]]]></description>
			<content:encoded><![CDATA[<p>Един много добър вариант да покажете, че писмата излизащи от вашият пощенски сървър не са спам е използването на така наречения <strong>domainkey</strong>. Идеята е следната:<br />
Публичен ключ се съхранява в ТХТ запис на DNS-a на домейна от който ще изпращаме писмата, а с личният ключ се подписва всяко изпратено писмо. Така всеки спам филтър може да сравни двата ключа и да се увери, че писмото е автентично и не е спам. Подобен спам филтър ползва и Google.</p>
<p>Изтегляне на dk-milter:<br />
<code>#rpm -Uvh http://www.topdog-software.com/oss/dk-milter/dk-milter-1.0.2-1.i386.rpm</code></p>
<p>Генериране на ключовете:<br />
<pre><code>#/usr/share/doc/dk-milter-1.0.2/gentxt.sh
</code></pre></p>
<p>Където<br />
е име по избор, аз използвах &#8220;mx&#8221;:<br />
<code>#/usr/share/doc/dk-milter-1.0.2/gentxt.sh mx kamenitza.org</code></p>
<p>Това ще генерира няколко файла:<br />
<strong>mx.txt</strong>:<br />
<code>mx._domainkey IN TXT &quot;g=; k=rsa; t=y; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMDcC/ip9pXcyRy6H9lw2Nl5aRjeg8KiIeL71tFsg+ja3P4Zm2aCCtjQevStFBKEAZG7cxIMY7mNdnum1dJj55cCAwEAAQ==&quot;</code></p>
<p><strong>mx.public</strong>:<br />
<pre><code>-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMDcC/ip9pXcyRy6H9lw2Nl5aRjeg8Ki
IeL71tFsg+ja3P4Zm2aCCtjQevStFBKEAZG7cxIMY7mNdnum1dJj55cCAwEAAQ==
-----END PUBLIC KEY-----</code></pre></p>
<p><strong>mx.private</strong>:<br />
<pre><code>-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBAMDcC/ip9pXcyRy6H9lw2Nl5aRjeg8KiIeL71tFsg+ja3P4Zm2aC
CtjQevStFBKEAZG7cxIMY7mNdnum1dJj55cCAwEAAQJAE/Ov2V3cAM0CkVJAEUK3
bGg/Ey+R+gTD9LORGcFcNC6h21sClpYV0mrIS1PkXX1cUZgQ9jl/gFzAXORL2E56
IQIhAP8+HmAS8RT+dCOCnioWa2kSmkwmITHnCdePrHVYl6l9AiEAwW6Kyks76ecG
TT8nPegYObAMqokM9fF3XBp4nLcHgaMCIQCGoDYXSIZeI2QQgsl3u4GF1ykJNydV
Ed5wEzjMYCEGZQIgHIs6ceWuPrL3zBhgqxL/2CtxgwzcW8K5MV86oy2jLu8CIQDA
kXZ6SyJvhJsw3KwhLsKU4IKAu1VM/YLzkKaffWVYBw==
-----END RSA PRIVATE KEY-----</code></pre></p>
<p>Преместете liчният ключ (mx.private) в <strong>/etc/mail/domainkeys</strong>. След това:<br />
<strong>#chown dk-milter:dk-milter mx.private<br />
#chmod 600 mx.private</strong></p>
<p>След това добавете в DNS конфигурацията на зоната на домейна<br />
<code>_domainkey IN TXT &quot;t=y; o=~&quot;</code><br />
Съдържанието на текстовия файл <strong>mx.txt</strong> също трябва да бъде добавено в DNS зоната на домейна.</p>
<p>Следва редактиране на <strong>/etc/sysconfig/dk-milter</strong>:<br />
<pre><code>USER=&quot;dk-milt&quot;
PORT=&quot;inet:10027@127.0.0.1&quot;
SIGNING_DOMAIN=&quot;domain.tld&quot;
SELECTOR_NAME=&quot;mx&quot;
KEYFILE=&quot;/etc/mail/domainkeys/mx.private&quot;
SIGNER=yes
VERIFIER=yes
CANON=simple
REJECTION=&quot;bad=r,dns=t,int=t,no=a,miss=r&quot;
EXTRA_ARGS=&quot;-h -l -D&quot;
MILTER_GROUP=&quot;mail&quot;</code></pre></p>
<p>Стартиране на демона:<br />
<code>#/etc/init.d/dk-milter start</code></p>
<p>И на края редакция на <strong>/etc/postfix/main.cf</strong>:<br />
<pre><code>smtpd_milters = inet:localhost:10027
non_smtpd_milters = inet:localhot:10027</code></pre></p>
<p>И рестартирате postfix.</p>
<p>За да се тества дали работи тази конфигурация изпратете празно писмо до test@dktest.jason.long.name.</p>
<p>Информацията за тази статия е синтезирана от <a href="http://jason.long.name/dkfilter/">http://jason.long.name/dkfilter/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/421/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postfix + postgresql + dovecot + postfixadmin + Centos</title>
		<link>http://kamenitza.org/archives/409</link>
		<comments>http://kamenitza.org/archives/409#comments</comments>
		<pubDate>Mon, 20 Dec 2010 15:05:08 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[dovecot]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[postfixadmin]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=409</guid>
		<description><![CDATA[Много е удобно да се ползват виртуални потребители за пощенски сървър, а е и много по-сигурно. В тази конфигурация ще ползвам операционна система CentOS 5.5 и демоните dovecot, postfix, postgresql. Косвено участва и Apache, като уеб сървър за уеб интерфейса postfixadmin. 1. Инсталиране на postgresql server: #yum -y install postgresql-server След стартиране на postgresql &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Много е удобно да се ползват виртуални потребители за пощенски сървър, а е и много по-сигурно.<br />
В тази конфигурация ще ползвам операционна система CentOS 5.5 и демоните dovecot, postfix, postgresql. Косвено участва и Apache, като уеб сървър за уеб интерфейса postfixadmin.</p>
<p><strong>1. Инсталиране на postgresql server:</strong><br />
<code>#yum -y install postgresql-server</code></p>
<p>След стартиране на postgresql &#8211; продължаваме.<br />
Създаване на потребител и база за postfix:<br />
<pre><code>#su postgres
$psql
postgres=# create user postfix with password &#039;password&#039;;
postgres=# create database postfix owner postfix;
postgres=# \q
$exit</code></pre></p>
<p><strong>2. Инсталиране на Postfix с поддръжка на база данни.</strong><br />
Ако до сега сте имали инсталиран Postfix, той трябва да бъде деинсталиран:<br />
<code>#yum erase postfix</code></p>
<p>Редактира се <strong>/etc/yum.repos.d/CentOS-Base.repo</strong>:<br />
В раздел <strong>[base]</strong> и <strong>[updates]</strong> се добавя реда:<br />
<code>exclude=postfix</code><br />
В раздел <strong>[centosplus]</strong>:<br />
<code>enabled=1</code></p>
<p>Проверка дали пакета на Postfix с поддръжката на  бази данни се &#8220;вижда&#8221;:<br />
<pre><code>#yum list postfix
...
...
postfix.x86_64&nbsp;&nbsp;2:2.3.3-2.1.centos.mysql_pgsql</code></pre></p>
<p>Това, което ни трябва се вижда на края &#8211; &#8220;&#8230;mysql_pgsql&#8221;.<br />
Инсталираме:<br />
<code>#yum -y install postfix</code></p>
<p>Това, което ни трбява в <strong>/etc/postfix/main.cf</strong>:<br />
<pre><code>myhostname = mail.mydomain.tld
inet_interfaces = all
transport_maps = pgsql:/etc/postfix/transport.cf
virtual_alias_maps = pgsql:/etc/postfix/virtual.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_minimum_uid = 5000
virtual_minimum_gid = 5000
virtual_mailbox_domains = pgsql:/etc/postfix/transport.cf
virtual_mailbox_base = /home/mail
virtual_mailbox_maps = pgsql:/etc/postfix/mailboxes.cf
virtual_mailbox_limit = 1073741824</code></pre></p>
<p>Последния ред означава, че имаме лимит от 1GB на пощенска кутия.</p>
<p><strong>/etc/postfix/transport.cf</strong>:<br />
<pre><code>hosts = localhost
user = postfix
password = password
dbname = postfix
table = domain
select_field = transport
where_field = domain</code></pre></p>
<p><strong>/etc/postfix/virtual.cf</strong><br />
<pre><code>hosts = localhost
user = postfix
password = password
dbname = postfix
table = alias
select_field = goto
where_field = address</code></pre></p>
<p><strong>/etc/postfix/mailboxes.cf</strong><br />
<pre><code>hosts = localhost
user = postfix
password = password
dbname = postfix
table = mailbox
select_field = maildir
where_field = username</code></pre></p>
<p>След като всички конфигурационни файлове са готови, стартираме демона:<br />
<code>#/etc/init.d/postfix start</code></p>
<p><strong>3. Инсталиране на dovecot:</strong><br />
<code>#yum -y install dovecot</code></p>
<p>В <strong>/etc/dovecot.conf</strong>:<br />
<pre><code>auth default {
&nbsp;&nbsp;&nbsp;&nbsp;mechanisms = plain
&nbsp;&nbsp;&nbsp;&nbsp;passdb sql {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args = /etc/dovecot-pgsql.conf
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;userdb sql {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args = /etc/dovecot-pgsql.conf
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;socket listen {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;client {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path = /var/run/dovecot/auth-client
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode = 0660
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user = postfix
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group = postfix
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
}
first_valid_uid = 5000
first_valid_gid = 5000</code></pre></p>
<p><strong>/etc/dovecot-pgsql.conf</strong>:<br />
<pre><code>driver = pgsql
connect = host=localhost dbname=postfix user=postfix password=password
default_pass_scheme = crypt
password_query = SELECT password FROM mailbox WHERE username=&#039;%u&#039; AND active=&#039;1&#039;
user_query = SELECT &#039;/home/mail/&#039;||maildir AS home, &#039;/home/mail/&#039;||maildir AS mail, 5000 as uid, 5000 as gid FROM mailbox WHERE username=&#039;%u&#039; AND active=&#039;1&#039;</code></pre></p>
<p>Стартиране на <strong>dovecot</strong>:<br />
<code>#/etc/init.d/dovecot start</code></p>
<p>Поглеждаме в <strong>/var/log/maillog</strong> за евентуални грешки. Ако всичко е наред може би дори ще се вижда и поток от спам към несъществуващи пощенски кутии.</p>
<p><strong>4. Postfixadmin</strong><br />
Инсталацията му се свежда до разархивирането на архива в папка достъпна през уеб и редакцията на <strong>config.inc.php</strong>, като в него единствено трябва да са попълни конфигурацията за достъп до базата данни.</p>
<p>След като създадем потребители чрез <strong>postfixadmin</strong>, те вече ще могат да получават поща, както и ще имат достъп до пощенските си кутии чрез IMAP/POP3.</p>
<p><strong>5. Изпращане на електронна поща &#8211; SMTP</strong><br />
 Елементарен начин това да стане е като се опишат мрежите, които е разрешено да релейват през този пощенски сървър в <strong>/etc/postfix/main.cf</strong>:<br />
<code>mynetworks = 127.0.0.0/8 192.168.0.0/24</code></p>
<p>Това не е най-сигурният метод, понеже не използва никаква идентификация на ниво потребител.<br />
По-добрият вариант е потребителят да трябва да се идентифицира, за да изпрати успешно писмо.<br />
Добавяме в <strong>/etc/postfix/main.cf</strong> следните няколко реда:<br />
<pre><code>smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination</code></pre></p>
<p>Вече можете и да изпращате през този сървър <img src='http://kamenitza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Добре ще е да сложим и елементарна спам-защита. Необхоримо е да преработим <strong>smtpd_recipient_restrictions</strong> записа в <strong>main.cf</strong>, така, че да се получи следното:<br />
<pre><code>smtpd_recipient_restrictions =
&nbsp;&nbsp;&nbsp;&nbsp;reject_non_fqdn_sender,
&nbsp;&nbsp;&nbsp;&nbsp;reject_non_fqdn_recipient,
&nbsp;&nbsp;&nbsp;&nbsp;permit_mynetworks,
&nbsp;&nbsp;&nbsp;&nbsp;permit_sasl_authenticated,
&nbsp;&nbsp;&nbsp;&nbsp;check_client_access hash:/etc/postfix/whitelist,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client zen.spamhaus.org,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client bl.spamcop.net,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client 0spam.fusionzero.com,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client bl.spamcannibal.org,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client blackholes.five-ten-sg.com,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client blackholes.intersil.net,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client dnsbl.sorbs.net,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client dnsbl-0.uceprotect.net,
&nbsp;&nbsp;&nbsp;&nbsp;reject_rbl_client dnsbl-1.uceprotect.net,
&nbsp;&nbsp;&nbsp;&nbsp;reject_unauth_destination</code></pre></p>
<p>Като файлът <strong>/etc/postfix/whitelist</strong> съдържа хостове изпращащи поща, които не желаете да преминат през спам-филтрите. Обикновено това са пощенски сървъри на мързеливи администратори, които не отговарят на някое или всички изисквания за легитимно изпращане на поща. Ето примерно съдържание на файла:<br />
<pre><code>212.39.90.88&nbsp;&nbsp;OK
mbox.contact.bg&nbsp;&nbsp;OK
sts-tech.com&nbsp;&nbsp;OK
87.121.24.7&nbsp;&nbsp;OK</code></pre></p>
<p>Това е всичко необходимо за напълно работещ сървър с виртуални потребители. За въпроси &#8211; ползвайте коментарите. Скоро ще пусна статия как да подсигурим същият този сървър с помощта на SSL.</p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/409/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS DLNA server</title>
		<link>http://kamenitza.org/archives/397</link>
		<comments>http://kamenitza.org/archives/397#comments</comments>
		<pubDate>Thu, 09 Dec 2010 23:35:54 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[dlna]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=397</guid>
		<description><![CDATA[Digital Living Network Alliance &#8211; Нещо модерно и удобно, което набира популярност с доста голяма скорост Телевизорът ни има DLNA клиент, та трябваше да му спретна и съответен сървър от където да идва и видеото. Операционна система CentOS 5.5 32bit. Задължително е да сте добавили rpmforge хранилищата за yum! # yum -y install ushare Следва [...]]]></description>
			<content:encoded><![CDATA[<p>Digital Living Network Alliance &#8211; Нещо модерно и удобно, което набира популярност с доста голяма скорост <img src='http://kamenitza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Телевизорът ни има DLNA клиент, та трябваше да му спретна и съответен сървър от където да идва и видеото.<br />
Операционна система CentOS 5.5 32bit.<br />
Задължително е да сте добавили rpmforge хранилищата за yum!</p>
<p><code># yum -y install ushare</code></p>
<p>Следва бърза редакция на <code>/etc/ushare.conf</code>:<br />
<pre><code>USHARE_NAME=My_Server
USHARE_IFACE=
USHARE_PORT=
USHARE_TELNET_PORT=
USHARE_DIR=/mnt/md1/files/Movies
USHARE_OVERRIDE_ICONV_ERR=
ENABLE_WEB=
ENABLE_TELNET=
ENABLE_XBOX=
ENABLE_DLNA=yes</code></pre></p>
<p>И стартиране на услугата:<br />
<code># /etc/init.d/ushare start</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/397/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chmod for directories/files only</title>
		<link>http://kamenitza.org/archives/395</link>
		<comments>http://kamenitza.org/archives/395#comments</comments>
		<pubDate>Thu, 09 Dec 2010 23:16:57 +0000</pubDate>
		<dc:creator>Тодор</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[directories]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[kamenitza]]></category>
		<category><![CDATA[каменица]]></category>

		<guid isPermaLink="false">http://kamenitza.org/?p=395</guid>
		<description><![CDATA[Ето как можете да приложите chmod само върху директориите: find . -type d -exec chmod 755 {} \; А ето така върху файловете: find . -type f -exec chmod 644 {} \;]]></description>
			<content:encoded><![CDATA[<p>Ето как можете да приложите chmod само върху директориите:<br />
<code>find . -type d -exec chmod 755 {} \;</code></p>
<p>А ето така върху файловете:<br />
<code>find . -type f -exec chmod 644 {} \;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kamenitza.org/archives/395/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

