<?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>Temporini Matteo &#187; email</title>
	<atom:link href="http://www.temporini.net/category/email/feed" rel="self" type="application/rss+xml" />
	<link>http://www.temporini.net</link>
	<description>It&#039;s time to fix!</description>
	<lastBuildDate>Fri, 27 Jan 2012 23:21:23 +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>Virtual User con Postifx e spamassassin&#8230; come migliorare il controllo Antispam!!</title>
		<link>http://www.temporini.net/virtual-user-con-postifx-e-spamassassin-come-migliorare-il-controllo-antispam</link>
		<comments>http://www.temporini.net/virtual-user-con-postifx-e-spamassassin-come-migliorare-il-controllo-antispam#comments</comments>
		<pubDate>Wed, 07 Apr 2010 15:09:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[email]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Matteo]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[reti]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[virtualhost]]></category>
		<category><![CDATA[antispam]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[ham]]></category>
		<category><![CDATA[horde]]></category>
		<category><![CDATA[Postifx]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[virtual users]]></category>
		<category><![CDATA[vmail]]></category>

		<guid isPermaLink="false">http://www.temporini.net/?p=331</guid>
		<description><![CDATA[<p>Un po&#8217; di tempo fa ho scritto un articolo su come configurare Virtual Users And Domains With Postfix, Courier, MySQL (Ubuntu 8.04 LTS 64bit), ora a partire da questo articolo vediamo come poter migliorare l&#8217;identificazione dello spam tramite il comando sa-learn di spamassassin, e l&#8217;utilizzo dell&#8217;opzione &#8211;spam e &#8211;ham.</p> <p>Innanzitutto facciamo una distinzione fra Spam [...]]]></description>
			<content:encoded><![CDATA[<p>Un po&#8217; di tempo fa ho scritto un articolo su come configurare <a title="Virtual Users And Domains With Postfix, Courier, MySQL (Ubuntu 8.04 LTS 64bit)" href="http://www.temporini.net/virtual-users-and-domains-with-postfix-courier-mysql-and-ubuntu-804-lts-64bit" target="_blank">Virtual Users And Domains With Postfix, Courier, MySQL (Ubuntu 8.04 LTS 64bit)</a>, ora a partire da questo articolo vediamo come poter migliorare l&#8217;identificazione dello spam tramite il comando sa-learn di spamassassin, e l&#8217;utilizzo dell&#8217;opzione &#8211;spam e &#8211;ham.</p>
<p>Innanzitutto facciamo una distinzione fra Spam e Ham</p>
<p>Spam : sono le email indesiderate che non si vogliono ricevere, e che quindi vanno scartate, taggate o comunque a cui va fatto aumentare il valore di spam in caso di matching del contenuto con i nostri db di spam.</p>
<p>Ham: sono le mail buone (Ham = prosciutto BUONO!), le email che quindi vogliamo tenere.</p>
<p>Dalla nostra webmail, creiamo una cartella che si chiama Spam e che verrà quindi creata sul filesystem in una cartellina che si chiama .Spam</p>
<p>Ricordando brevemente la struttura delle directory che abbiamo assegnato per ogni email avremo una struttura simile alla seguente</p>
<p><code>ls -al /home/vmail/domain.tld/info</code></p>
<p><code>drwx------  6 vmail vmail 4096 2010-02-23 19:18 .Bozze</code><br />
<code>drwx------  6 vmail vmail 4096 2010-02-23 19:18 .Cestino</code><br />
<code>drwx------  2 vmail vmail 4096 2010-04-07 12:05 courierimapkeywords</code><br />
<code>-rw-r--r--  1 vmail vmail  105 2010-02-23 19:48 courierimapsubscribed</code><br />
<code>-rw-r--r--  1 vmail vmail 1193 2010-04-07 11:56 courierimapuiddb</code><br />
<code>drwx------  2 vmail vmail 4096 2010-04-07 12:01 cur</code><br />
<code>drwx------  6 vmail vmail 4096 2010-04-07 12:41 .Drafts</code><br />
<code>drwx------  2 vmail vmail 4096 2010-04-07 11:56 new</code><br />
<code>drwx------  6 vmail vmail 4096 2010-04-07 12:43 .Sent</code><br />
<code>drwx------  6 vmail vmail 4096 2010-02-23 15:53 .sent-mail</code><br />
<code>drwx------  6 vmail vmail 4096 2010-02-23 19:18 .Spam</code><br />
<code>drwx------  6 vmail vmail 4096 2010-02-23 19:51 .Templates</code><br />
<code>drwx------  2 vmail vmail 4096 2010-04-07 16:51 tmp</code><br />
<code>drwx------  6 vmail vmail 4096 2010-03-02 20:22 .Trash</code></p>
<p>Tutti le email di tutti i domini hanno questa struttura, quindi cosa succede&#8230;</p>
<p>Quando dalla nostra webmail vediamo che c&#8217;è un&#8217;email che ha passato i nostri antispam, non facciamo altro che dire &#8220;no questa email la sposto nella cartellina Spam!&#8221;. (da horde c&#8217;è un opzione che permette eventualmente di marcare un&#8217;email come spam e automaticamente spostarla in quella cartella).</p>
<p>A questo punto noi avremo che in:</p>
<p><code>/home/vmail/domain.tld/info/cur = avremo le mail buone (Ham)</code></p>
<p>mentre in</p>
<p><code>/home/vmail/domain.tld/info/.Spam = avremo le email di Spam</code></p>
<p>Sfruttando questo possiamo creare una regola ad hoc, per fare &#8220;imparare&#8221; a spamassassin, quali sono le mail buone e quali quelle cattive.</p>
<p>Mettiamo tutto in crontab per ottenere questo:</p>
<p><code>20 * * * * /usr/bin/sa-learn --spam /home/vmail/*/*/.Spam/* &amp;&gt; /dev/null</code><br />
<code>10 * * * * /usr/bin/sa-learn --ham /home/vmail/*/*/cur/* &amp;&gt; /dev/null</code></p>
<p>Ai 10  e 20 minuti di ogni ora verranno fatti gli aggiornamenti e il nostro sistema &#8220;imparerà&#8221; da noi quali sono le mail che non sono spam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/virtual-user-con-postifx-e-spamassassin-come-migliorare-il-controllo-antispam/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wrapper Sendmail</title>
		<link>http://www.temporini.net/wrapper-sendmail</link>
		<comments>http://www.temporini.net/wrapper-sendmail#comments</comments>
		<pubDate>Fri, 23 Nov 2007 16:16:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[demoni]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://www.temporini.net/wrapper-sendmail</guid>
		<description><![CDATA[<p>Problema del giorno&#8230; quante volte capita che qualche script non sicuro (es. form php senza controlli di sicurezza sull&#8217;inserimento dei dati e conseguente invio di un&#8217;email), riempia le code dei nostri server di posta? A me sinceramente molto spesso (si pensi a qualcuno che crea uno script di &#8220;test&#8221; che basta lanciarlo e viene spedita [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problema del giorno</strong>&#8230; quante volte capita che qualche script non sicuro (es. form php senza controlli di sicurezza sull&#8217;inserimento dei dati e conseguente invio di un&#8217;email), riempia le code dei nostri server di posta? A me sinceramente molto spesso (si pensi a qualcuno che crea uno script di &#8220;test&#8221; che basta lanciarlo e viene spedita un&#8217;email, lo script viene dimenticato li e trovato da qualche bontempone che si diverte a esguirlo centinaia di volte&#8230; voi direte &#8220;ma chi vuoi che lo faccia?!?!?!?&#8221; e io vi rispondo dicendo solo&#8230; &#8220;più di quanti si possa immaginare&#8221;).</p>
<p>Conseguenza di tutto questo sono ore perse a cercare qualche script, sito o altro responsabile del fattaccio, con conseguenti improperi verso ogni genere di essere vivente vi si presenti vicino.</p>
<p><span id="more-103"></span>Grazie ai consigli e all&#8217;aiuto di <strong>Marco Londero</strong>, abbiamo ideato un piccolo wrapper php che genera un log sulla posta che viene inviata trmamite il comando <strong>mail()</strong> di php, e aggiunge un <strong>header</strong> all&#8217;interno dell&#8217;email stessa in grado di permetterci di risalire al log desiderato e riuscire ad identificare meglio l&#8217;origine di un certo problema.</p>
<p>All&#8217;interno di tale log avremo una cosa molto importante, il path dello script che ha generato e inviato l&#8217;email in questione.</p>
<p>Siamo partiti a partire un <a href="http://gregmaclellan.com/blog/sendmail-wrapper/" title="Sendmail Wrapper">wrapper</a> trovato su <a href="http://www.gregmaclellan.com/">groogsblog</a> e tramite semplici modifiche siamo riusciti ad ottenere quel che ci serviva.</p>
<p>Una definizione di <strong>wrapper</strong> (giusto per capire di cosa si parla) potrebbe essere la seguente &#8220;<em>Un <strong><span class="QUOTE">wrapper</span></strong> è uno script di shell che       incorpora una utility o un comando di sistema. Questo evita di       dover digitare una serie di parametri che andrebbero passati       manualmente a quel comando.</em>&#8221;</p>
<p>Vediamo ora come installarlo.</p>
<p>Presupponiamo di utilizzare postfix (di fatto si potrebbe usare qualunqua altro sistema senza problemi),</p>
<p><code>cd /etc/postfix/</code></p>
<p><code>touch sendmail.php</code></p>
<p><code>chmod 775 sendmail.php</code></p>
<p><code>nano sendmail.php</code></p>
<p>A questo punto nel file sendmail.php inseriamo il codice del <a href="http://www.temporini.net/wp-content/uploads/2007/11/sendmailtar.gz" title="Sendmail Wrapper">Wrapper</a>, e salviamo il file.</p>
<p>Modifichiamo olra il file php.ini e permettiamo al wrapper di essere eseguito prima di sendmail (sarà il wrapper stesso dal suo interno a richiamare sendmail al momento opportuno).</p>
<p><code>nano /etc/php.ini</code></p>
<p>sostituiamo il valore di sendmail_path con il seguente</p>
<p>sendmail_path = /etc/postfix/sendmail.php</p>
<p>Prepariamo le directory che conterranno i log che che genererà il nostro simpatico wrapper</p>
<p><code>mkdir /var/log/phpmail<br />
chown root:apache /var/log/phpmail<br />
chmod 770 /var/log/phpmail</code></p>
<p>ed ora non ci resta altro che riavviare apache<br />
<code><br />
/etc/init.d/apache2 restart</code></p>
<p>Date una controllata al file /var/log/httpd/error_log per vedere che sia tutto corretto e aspettate (o create uno script in php per testarlo), ora quando verrà inviata un&#8217;email da uno script in php accadranno due cose</p>
<p>1- nell&#8217;header dell&#8217;email vi sarà un campo nuovo che si chiama X-MsgID e che altro non è che il nome del file in /var/log/phpmail/ che contiene i dati dell&#8217;email inviata dal webserver</p>
<p>2- all&#8217;interno del file relativo all&#8217;header X-MsgID vi sarà un campo che indicherà il path dello script che ha inviato un&#8217;email</p>
<p>Riporto di seguito un esempio del contenuto del file di log di un&#8217;email</p>
<p><em>Body: 574 bytesDate: Fri, 23 Nov 2007 16:35:37 +0100<br />
PWD: /var/www/vhost/XXX.TLD/home/html/phpBB2<br />
Msg ID: ns3.eastitaly.it_20071123163537.4746f3495849d</em></p>
<p><em>Message:<br />
&#8212;&#8212;&#8212;-<br />
To: tusysweelszew@mail.ru<br />
Subject: Welcome to www.</em><em>XXX.TLD</em><em> Forums<br />
Reply-to: info@</em><em>XXX.TLD</em><br />
<em> From: info@</em><em>XXX.TLD</em><br />
<em> Return-Path: info@</em><em>XXX.TLD</em><br />
<em> Message-ID: &lt;aace212218a818186b114bcd1fe00573@www.</em><em>XXX.TLD</em><em>&gt;<br />
MIME-Version: 1.0<br />
Content-type: text/plain; charset=iso-8859-1<br />
Content-transfer-encoding: 8bit<br />
Date: Fri, 23 Nov 2007 16:35:37 +0100<br />
X-Priority: 3<br />
X-MSMail-Priority: Normal<br />
X-Mailer: PHP<br />
X-MimeOLE: Produced By phpBB2<br />
X-MsgID: ns3.eastitaly.it_20071123163537.4746f3495849d<br />
&#8212;&#8212;&#8212;-<br />
Body: 574 bytes</em></p>
<p>Da questo log oltre a tutti i dati tipici di un&#8217;email si può notare la riga</p>
<p><em> PWD: /var/www/vhost/XXX.TLD/home/html/phpBB2</em></p>
<p>che non è altro che il path dello script che ha inviato l&#8217;email, chiaramente sarebbe più efficiente se vi fosse la possibilità di identificare direttamente il nome dello script, ma diciamo che già così gran parte dei problemi si riescono a isolare e identificare in breve tempo.</p>
<p>Un altra eventuali miglioria che si può apportare è di gestire tutto questo anzichè come file separati come un unico file di log, ma lo faremo col tempo e con la voglia come sempre <img src='http://www.temporini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Saluti</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/wrapper-sendmail/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurazione snmp</title>
		<link>http://www.temporini.net/configurazione-snmp</link>
		<comments>http://www.temporini.net/configurazione-snmp#comments</comments>
		<pubDate>Wed, 20 Jun 2007 09:21:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CPU]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[demoni]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[file system]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Memoria]]></category>
		<category><![CDATA[monitor risorse]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[ncftp]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[Snmp]]></category>
		<category><![CDATA[Swap]]></category>
		<category><![CDATA[TCP]]></category>

		<guid isPermaLink="false">http://www.temporini.net/archives/27</guid>
		<description><![CDATA[<p>Questa breve guida spiega (o almeno ci prova) come configurare il servizio di snmp su un server linux, per il monitoraggio delle risorse. Provvede poi a integrare i dati raccolti tramite grafici generati con Mrtg.</p> <p>Questa guida è stata sviluppata su sistemi Fedora Core 5, ma è facilmente adattabile (se non addirittura direttamente applicabile) anche [...]]]></description>
			<content:encoded><![CDATA[<p>Questa breve guida spiega (o almeno ci prova) come configurare il servizio di <strong>snmp</strong> su un server <strong>linux</strong>, per il <strong>monitoraggio delle risorse</strong>. Provvede poi a integrare i dati raccolti tramite grafici generati con <strong><a href="http://oss.oetiker.ch/mrtg/" title="MRTG - Tobi Oetiker's MRTG">Mrtg</a></strong>.</p>
<p>Questa guida è stata sviluppata su sistemi <strong>Fedora Core 5</strong>, ma è facilmente adattabile (se non addirittura direttamente applicabile) anche ad altri sistemi (<a href="http://www.debian.org" title="Debian -- il Sistema Operativo Universale"><strong>Debian</strong></a>, <strong><a href="http://www.slackware.org" title="The Slackware Linux Project">Slackware</a> </strong>con piccole modifiche inereti al sistema di pacchettizzazione).</p>
<p><em><strong>1. Installazione e configurazione Snmpd</strong></em></p>
<p>Per prima cosa provvediamo a installare il servizio <strong>snmpd </strong>tramite i pacchetti disponibili della nostra distribuzione:<br />
<em>[root@localhost ~] yum install net-snmp-utils net-snmp</em></p>
<p>per Debian i pacchetti si installano con il seguente comando</p>
<p><em>[root@localhost ~] apt-get install snmpd snmp</em></p>
<p>A questo punto controllate se il demone <strong>snmpd </strong>è stato lanciato<br />
<em>[root@localhost ~] ps -aux | grep snmpd</em></p>
<p>dovreste visualizzare qualcosa tipo</p>
<p><em>root   5512  0.0  2.3  5872 3012 pts/0    S    22:04   0:00 /usr/sbin/snmpd</em></p>
<p>Se il demone non è in esecuzione provare a lanciarlo a mano con il seguente comando</p>
<p><em>[root@localhost ~] /etc/init.d/snmpd restart</em></p>
<p>e ricontrollate il suo stato.</p>
<p>Per aggiungere lo script all&#8217;avvio della macchina basta eseguire<br />
<em>[root@localhost ~] chkconfig &#8211;level 345 snmpd on</em></p>
<p>Ora il demone snmpd è correttamente in esecuzione, proviamo a controllarne il corretto funzionamento tramite una semplice query sulle interfacce di rete:</p>
<p><em>[root@ns9 ~]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndexIP-MIB::ipAdEntIfIndex.81.208.101.XXX = INTEGER: 2IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1<br />
IP-MIB::ipAdEntIfIndex.192.168.0.XXX = INTEGER: 3<br />
[root@ns9 ~]#</em></p>
<p>Se tutto funziona correttamente, allora il demone è correttamente configurato, se doveste avere qualche problema, è meglio controllare il file di configurazione /etc/snmp/snmpd.conf</p>
<p>All&#8217;interno di questo file modifichiamo questa linea<br />
<em> com2sec notConfigUser  default       public</em></p>
<p>e sostituiamola con quella di seguito adattando ovviamente le subnet come preferite.</p>
<p><em> com2sec local     localhost           public<br />
com2sec mynetwork 192.168.0.0/24      public</em></p>
<p>Scendendo ancora nel file cercate la stringa</p>
<p><em>group   notConfigGroup v1           notConfigUser<br />
group   notConfigGroup v2c           notConfigUser</em></p>
<p>e sostituitela con</p>
<p><em>group MyRWGroup v1         local<br />
group MyRWGroup v2c        local<br />
group MyRWGroup usm        local<br />
group MyROGroup v1         mynetwork<br />
group MyROGroup v2c        mynetwork<br />
group MyROGroup usm        mynetwork</em></p>
<p>Cerchiamo ora la stringa seguente</p>
<p><em>view    systemview     included      system</em></p>
<p>e sostituiamola con</p>
<p><em>view all    included  .1                               80</em></p>
<p>Abbiamo quasi finito&#8230; cercate la stringa</p>
<p><em>access  notConfigGroup &#8220;&#8221;      any       noauth    exact  systemview none none</em></p>
<p>e sostituitela con</p>
<p><em>access MyROGroup &#8220;&#8221;      any       noauth    exact  all    none   none<br />
access MyRWGroup &#8220;&#8221;      any       noauth    exact  all    all    none</em></p>
<p>Ed ora l&#8217;ultima stringa da modificare<br />
<em>syslocation Unknown (edit /etc/snmp/snmpd.conf)<br />
syscontact Root root@localhost (configure /etc/snmp/snmp.local.conf)</em></p>
<p>queste stringhe sono delle brevi stringhe descrittive per l&#8217;identificazione del vostro sistema, fondamentalmente potete scriverci cosa volete io ho messo questo</p>
<p><em>syslocation Linux (FEDORA_FC5), localhost<br />
syscontact matteo@temporini.net</em></p>
<p>Bene ora se tutto è andato per il verso giusto, riavviate il demone snmp (/etc/init.d/snmpd restart) e provate a fare nuovamente la query (snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex) che a questo punto non dovrebbe darvi problemi.</p>
<p><em><strong>2. Installazione e configurazione MRTG</strong></em></p>
<p>Installiamo <strong>mrtg </strong>con il comando</p>
<p><em>[root@localhost ~]# yum install mrtg</em></p>
<p>analogamente per <strong>debian </strong></p>
<p><em>[root@localhost ~]# apt-get install mrtg</em></p>
<p>A questo punto presuppongo che abbiate un <strong>webserver </strong>correttamente funzionante (io uso <a href="http://www.apache.org" title="The Apache Software Foundation">Apache</a> ma non vi sono problemi a utilizzarne altri come <strong>ISS </strong>o <strong>Lighthttpd</strong>).</p>
<p>Presupponiamo che la root di <strong>apache </strong>stia in /var/www/html/ andiamo a creare la cartella che conterrà i nostri dati</p>
<p><em>[root@localhost ~]# mkdir -p /var/www/html/mymrtg/</em></p>
<p>ora eseguiamo il seguente comando per generare automaticamente il file di configurazione di <strong>mrtg</strong></p>
<p><em>[root@localhost ~]# cfgmaker &#8211;global &#8216;WorkDir: /var/www/html/mymrtg&#8217; &#8211;output /etc/mrtg/mymrtg.cfg public@localhost</em></p>
<p>e creiamo l&#8217;index.html del nostro sistema di monitoraggio</p>
<p><em>[root@localhost ~]# indexmaker &#8211;output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg</em></p>
<p>(N.B.= &#8212; sono due trattini (-) vicini ma sembrano una linea unica se fate il cut &#038; paste fate attenzione)</p>
<p>Ora è tutto pronto non ci resta che eseguie <strong>mrtg </strong>indicandogli il file di configurazione da utilizzare</p>
<p><em>[root@localhost ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>In ambiente <strong>fedora </strong>è necessaria la stringa env LANG=C, su altri sistemi probabilmente questa variabile di ambiente è già settata in questo modo per cui potrebbe bastare solamente</p>
<p><em>[root@localhost ~]# /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>A questo punto non rimane che vedere il risultato di tutto il nostro lavoro andando al seguente indirizzo http://www.your.com/mymrtg/ o http://localhost/mymrtg/</p>
<p>L&#8217;ultimo step da seguire consiste nel mettere in <strong>crontab </strong>l&#8217;esecuzione dello script di aggiornamento di <strong>mrtg</strong>, il modo più semplice per farlo è con il comando</p>
<p><em>[root@localhost ~]# crontab -e</em></p>
<p>Vi si aprirà una finestra e qui inseriteci</p>
<p><em>*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg &#8211;logging /var/log/mrtg.log</em></p>
<p>lo script verrà lanciato ogni 5 minuti, in tal modo i campionamenti verranno aggiornati sui nostri grafici in ogni 5 minuti. Qualora voleste avere stime più precise potete diminuire il tempo di campionamento ad 1 minuto ad esempio ottenendo così risultati più accurati.</p>
<p><em><strong>3. Ulteriori risorse da monitorare</strong></em></p>
<p>Quanto sino ad ora visto, permette di creare un piccolo sistema di monitoraggio per la banda utilizzata dai vari dispositivi di rete, in un tempo realtivamente ristretto e con una buona accuratezza (questo dipende ovviamente dall&#8217;intervallo di campionamento che si sceglie).</p>
<p>La domanda a questo punto che uno potrebbe porsi è &#8220;ma posso monitorare solo la banda o anche altre risorse?&#8221;.</p>
<p>Ovviamente la risposta è si, è possibile monitorare altri risorse di sistema, cosa che si è resa molto utile per identificare anomalie nei sitemi e risolverle (es.: utilizzi intensivi della cpu da parte di particolari processi in determinate ore della giornata).</p>
<p>Riporterò ora delle piccole porzioni di codice da aggiungere al file /etc/mrtg/myrtgc.cfg per aggiungere queste funzionalità.</p>
<p>3.1 Monitoraggio dell&#8217;utilizzo di <strong>CPU</strong></p>
<p><em>#<br />
# CPU Monitoring<br />
# (Scaled so that the sum of all three values doesn&#8217;t exceed 100)<br />
#</em></p>
<p><em>Target[server.cpu]:ssCpuRawUser.0&amp;ssCpuRawUser.0:public@localhost + ssCpuRawSystem.0&amp;ssCpuRawSystem.0:public@localhost + ssCpuRawNice.0&amp;ssCpuRawNice.0:public@localhost<br />
Title[server.cpu]: Server CPU Load<br />
PageTop[server.cpu]: &lt;H1&gt;CPU Load &#8211; System, User and Nice Processes&lt;/H1&gt;<br />
MaxBytes[server.cpu]: 100<br />
ShortLegend[server.cpu]: %<br />
YLegend[server.cpu]: CPU Utilization<br />
Legend1[server.cpu]: Current CPU percentage load<br />
LegendI[server.cpu]: Used<br />
LegendO[server.cpu]:<br />
Options[server.cpu]: growright,nopercent<br />
Unscaled[server.cpu]: ymwd </em></p>
<p>3.2 Monitoraggio dell&#8217;utilizzo della <strong>memoria </strong>totale rispetto a quella disponibile</p>
<p><em>#<br />
# Memory Monitoring (Total Versus Available Memory)<br />
#</em></p>
<p><em>Target[server.memory]: memAvailReal.0&amp;memTotalReal.0:public@localhost<br />
Title[server.memory]: Free Memory<br />
PageTop[server.memory]: &lt;H1&gt;Free Memory&lt;/H1&gt;<br />
MaxBytes[server.memory]: 100000000000<br />
ShortLegend[server.memory]: B<br />
YLegend[server.memory]: Bytes<br />
LegendI[server.memory]: Free<br />
LegendO[server.memory]: Total<br />
Legend1[server.memory]: Free memory, not including swap, in bytes<br />
Legend2[server.memory]: Total memory<br />
Options[server.memory]: gauge,growright,nopercent<br />
kMG[server.memory]: k,M,G,T,P,X</em></p>
<p>3.3  Percentuale di utilizzo della <strong>Memoria</strong></p>
<p><em>#<br />
# Memory Monitoring (Percentage usage)<br />
#<br />
Title[server.mempercent]: Percentage Free Memory<br />
PageTop[server.mempercent]: &lt;H1&gt;Percentage Free Memory&lt;/H1&gt;<br />
Target[server.mempercent]: ( memAvailReal.0&amp;memAvailReal.0:public@localhost ) * 100 / ( memTotalReal.0&amp;memTotalReal.0:public@localhost )<br />
options[server.mempercent]: growright,gauge,transparent,nopercent<br />
Unscaled[server.mempercent]: ymwd<br />
MaxBytes[server.mempercent]: 100<br />
YLegend[server.mempercent]: Memory %<br />
ShortLegend[server.mempercent]: Percent<br />
LegendI[server.mempercent]: Free<br />
LegendO[server.mempercent]: Free<br />
Legend1[server.mempercent]: Percentage Free Memory<br />
Legend2[server.mempercent]: Percentage Free Memory</em></p>
<p>3.4. Nuove connessioni <strong>TCP</strong></p>
<p><em>#<br />
# New TCP Connection Monitoring (per minute)<br />
#</em></p>
<p><em>Target[server.newconns]: tcpPassiveOpens.0&amp;tcpActiveOpens.0:public@localhost<br />
Title[server.newconns]: Newly Created TCP Connections<br />
PageTop[server.newconns]: &lt;H1&gt;New TCP Connections&lt;/H1&gt;<br />
MaxBytes[server.newconns]: 10000000000<br />
ShortLegend[server.newconns]: c/s<br />
YLegend[server.newconns]: Conns / Min<br />
LegendI[server.newconns]: In<br />
LegendO[server.newconns]: Out<br />
Legend1[server.newconns]: New inbound connections<br />
Legend2[server.newconns]: New outbound connections<br />
Options[server.newconns]: growright,nopercent,perminute</em></p>
<p>3.5 Connessioni <strong>TCP </strong>stabilite</p>
<p><em>#<br />
# Established TCP Connections<br />
#</em></p>
<p><em>Target[server.estabcons]: tcpCurrEstab.0&amp;tcpCurrEstab.0:public@localhost<br />
Title[server.estabcons]: Currently Established TCP Connections<br />
PageTop[server.estabcons]: &lt;H1&gt;Established TCP Connections&lt;/H1&gt;<br />
MaxBytes[server.estabcons]: 10000000000<br />
ShortLegend[server.estabcons]:<br />
YLegend[server.estabcons]: Connections<br />
LegendI[server.estabcons]: In<br />
LegendO[server.estabcons]:<br />
Legend1[server.estabcons]: Established connections<br />
Legend2[server.estabcons]:<br />
Options[server.estabcons]: growright,nopercent,gauge</em></p>
<p>3.6 Utilizzo del <strong>disco</strong></p>
<p>L&#8217;utilizzo di questo parametro di monitoraggio richiede l&#8217;inserimento nel file /etc/snmp/snmpd.conf del seguente codice</p>
<p><em>disk /</em></p>
<p>con conseguente riavvio del demone snmpd<br />
<em>#<br />
# Disk Usage Monitoring<br />
#</em></p>
<p><em>Target[server.disk]: dskPercent.1&amp;dskPercent.1:public@localhost<br />
Title[server.disk]: Disk Partition Usage<br />
PageTop[server.disk]: &lt;H1&gt;Spazio su disco utilizzato&lt;/H1&gt;<br />
MaxBytes[server.disk]: 100<br />
ShortLegend[server.disk]: %<br />
YLegend[server.disk]: Utilization<br />
LegendI[server.disk]: Partizione /<br />
Options[server.disk]: gauge,growright,nopercent<br />
Unscaled[server.disk]: ymwd</em></p>
<p>3.7 Carichi della <strong>CPU</strong></p>
<p><em>#<br />
# Load Average<br />
#</em></p>
<p><em>Target[server.loadavg]: laLoadInt.2&amp;laLoadInt.3:public@localhost<br />
MaxBytes[server.loadavg]: 5000<br />
Title[server.loadavg]: Load Average * 100<br />
PageTop[server.loadavg]:&lt;h1&gt;Load Average * 100&lt;/h1&gt;<br />
YLegend[server.loadavg]: Load Average<br />
ShortLegend[server.loadavg]:<br />
Legend1[server.loadavg]: Load average 5 min<br />
Legend2[server.loadavg]: Load average 15 min<br />
LegendI[server.loadavg]:  5min load avg<br />
LegendO[server.loadavg]:  15min load avg<br />
Options[server.loadavg]: nopercent,growright,noinfo,gauge</em></p>
<p><strong>4. Monitoraggio del traffico email di Postfix </strong></p>
<p>Un discorso a parte va fatto per quanto riguarda il monitoraggio sull&#8217;invio e la ricezione di email tramite <strong>postfix</strong>.</p>
<p>Grazie alla documentazione trovata in rete mi è stato possibile implmentare un sistema che permette di contare il numero di email inviate e ricevute dal server di posa, nell&#8217;arco di tempo dell&#8217;intervallo di campionamento (i famosi 5 minuti). Questo viene  realizzato tramite il richiamo, da parte di <strong>mrtg</strong>, di alcuni script esterni che fanno quanto richiesto, una volta raccolti i dati vengono processati da mrtg per la generazione dei grafici.</p>
<p>Questi script che bisogna utilizzaresono scritti in perl per cui dovete installare alcuni moduli in perl tramite <strong>cpan</strong>, prima di fare questo installate <strong>ncftp </strong>che viene utilizzato da perl per scaricare i file, questo semplicemente usando il comando</p>
<p><em>[root@localhost ~]# yum install ncftp</em></p>
<p>analogamente per <strong>debian </strong></p>
<p><em>[root@localhost ~]# apt-get install ncftp</em></p>
<p>a questo punto lanciate il comando cpan e dopo aver risposto a un po&#8217; di domande, che vi chiederà lui per la corretta configurazione di della shell del <strong>perl </strong>(solitamente basta dare invio a tutte prendendo i parametri di default), eseguite il comando</p>
<p><em>[root@localhost ~]# cpan<br />
Terminal does not support AddHistory.</em></p>
<p><em>cpan shell &#8212; CPAN exploration and modules installation (v1.7602)<br />
ReadLine support available (try &#8216;install Bundle::CPAN&#8217;)</em></p>
<p><em>cpan&gt; install File::Tail</em></p>
<p>una volta finita l&#8217;installazione di questo moduletto possiamo caricare i file in <strong>perl</strong>, son tre semplici file che dovete mettere in /usr/local/bin con i permessi di esecuzione</p>
<p><a href="http://www.temporini.net/wp-content/uploads/mrtg-mailstats.pl" title="mrtg-mailstats.pl">mrtg-mailstats.pl</a><br />
<a href="http://www.temporini.net/wp-content/uploads/mailstats.pl" title="mailstats.pl">mailstats.pl</a><br />
<a href="http://www.temporini.net/wp-content/uploads/update-mailstats.pl" title="update-mailstats.pl">update-mailstats.pl</a></p>
<p>A questo punto non ci rimane che lanciare il processo  update-mailstats.pl (script che si occupa di tenere costantemente monitorato il traffico del <strong>mailserver</strong>) con il comando</p>
<p><em>[root@localhost ~]# /usr/local/bin/update-mailstats.pl &amp;</em></p>
<p>con il comando mailstats.pl è possibile vedere le statistiche in tempo reale sul numero totale di messaggi inviati e ricevuti come nel seguente esempio</p>
<p><em>[root@localhost ~]# mailstats.pl<br />
RECEIVED:smtp 98057<br />
SENT:local 235<br />
SENT:smtp 54423<br />
SENT:virtual 42947<br />
[root@localhost ~]#  </em></p>
<p>Aggiungiamo nel file /etc/mrtg/mymrtg.cfg il seguente codice</p>
<p><em>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#<br />
# MRTG mail cfg:  Postfix mailstats plotting with MRTG          #<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#<br />
Target[postfix]: `/usr/local/bin/mrtg-mailstats.pl`<br />
Options[postfix]: gauge, growright<br />
Title[postfix]: Postfix Statistics<br />
PageTop[postfix]: &lt;H1&gt;Postfix Statistics&lt;/H1&gt;<br />
MaxBytes[postfix]: 1000000<br />
WithPeak[postfix]: dwmy<br />
YLegend[postfix]: No. of messages<br />
ShortLegend[postfix]: messages<br />
LegendI[postfix]:  Incoming:<br />
LegendO[postfix]:  Outgoing:<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;#</em></p>
<p>rigeneriamo l&#8217;index di <strong>mrtg </strong>con il comando</p>
<p><em>[root@localhost ~]# indexmaker &#8211;output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg</em></p>
<p>e abbiamo finito <img src='http://www.temporini.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ora dovreste vedere, man mano che i valori vengono campionati, i grafici anche sulle mail in ingresso e in uscita di postfix. Una tecnica simile penso sia molto semplice da utilizzare anche per altri programmi e risorse.</p>
<p>Se avete suggerimenti, scritiche miglioramenti, script o teniche per il monitoraggio di altre risorse di sistema, contattatemi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.temporini.net/configurazione-snmp/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

