<?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"
	>

<channel>
	<title>Ricerche IT</title>
	<atom:link href="http://www.ricercheit.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ricercheit.net</link>
	<description>Ricerca di documentazione IT di supporto</description>
	<pubDate>Thu, 05 Aug 2010 21:03:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Gestire attributo di stile height con doctype xhtml 1.0 transitional</title>
		<link>http://www.ricercheit.net/2010/08/05/gestire-attributo-di-stile-height-con-doctype-xhtml-10-transitional/</link>
		<comments>http://www.ricercheit.net/2010/08/05/gestire-attributo-di-stile-height-con-doctype-xhtml-10-transitional/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 21:03:30 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Programmazione Web]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=442</guid>
		<description><![CDATA[Me lo appunto qui, così magari non lo dimentico, approfittandone anche per tirar via le ragnatele da questo spazio.
In una pagina HTML, se specifico un doctype di tipo xhtml 1.0 transitional, devo prendere alcuni accorgimenti se intendo utilizzare l&#8217;attributo di stile &#8220;height&#8221;, riferito ad uno o più elementi div ed espresso in percentuale; ad esempio, [...]]]></description>
			<content:encoded><![CDATA[<p>Me lo appunto qui, così magari non lo dimentico, approfittandone anche per tirar via le ragnatele da questo spazio.</p>
<p>In una pagina HTML, se specifico un doctype di tipo xhtml 1.0 transitional, devo prendere alcuni accorgimenti se intendo utilizzare l&#8217;attributo di stile &#8220;height&#8221;, riferito ad uno o più elementi div ed espresso in percentuale; ad esempio, se ho un codice di questo tipo:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">style</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span>&gt;</span>
    #div1
    {
    width: 100%;
    height: 15%;
    border: 2px solid blue;
    }
    #div2
    {
    width: 100%;
    height: 60%;
    border: 2px solid red;
    }
    #div3
    {
    width: 100%;
    height: 25%;
    border: 2px solid green;
    }
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">style</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>TEST<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;div1&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Contenitore 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;div2&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Contenitore 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;div3&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Contenitore 3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p>posso notare come in realtà, lo spazio occupato dai tre elementi div sia quello strettamente necessario a contenere le tre intestazioni delimitate dai tag h1, come mostrato in figura 1:</p>
<div id="attachment_445" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2010/08/test1.png"><img class="size-medium wp-image-445" title="Figura 1" src="http://www.ricercheit.net/wp-content/uploads/2010/08/test1-300x180.png" alt="Pagina html con attributo height impostato ma non funzionante" width="300" height="180" /></a><p class="wp-caption-text">Pagina html con attributo height impostato ma non funzionante</p></div>
<p>dove è possibile vedere che le percentuali che ho indicato relative all&#8217;altezza da assegnare ai tre elementi div sono state bellamente ignorate dal browser.</p>
<p>Per risolvere il problema, devo indicare l&#8217;altezza complessiva degli elementi html e body, e impostarla al 100%, per cui il codice precedente assume quest&#8217;aspetto:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">style</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span>&gt;</span>
    html,body
    {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    }
    #div1
    {
    width: 100%;
    height: 15%;
    border: 2px solid blue;
    }
    #div2
    {
    width: 100%;
    height: 60%;
    border: 2px solid red;
    }
    #div3
    {
    width: 100%;
    height: 25%;
    border: 2px solid green;
    }
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">style</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>TEST<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;div1&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Contenitore 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;div2&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Contenitore 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;div3&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>Contenitore 3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p>Il risultato dell&#8217;applicazione di questo codice è visibile in figura 2:</p>
<div id="attachment_444" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2010/08/test2.png"><img class="size-medium wp-image-444" title="Figura 2" src="http://www.ricercheit.net/wp-content/uploads/2010/08/test2-300x180.png" alt="Pagina html con l'impostazione corretta dell'attributo height riferito ai tag html e body" width="300" height="180" /></a><p class="wp-caption-text">Pagina html con l&#39;impostazione corretta dell&#39;attributo height riferito ai tag html e body</p></div>
<p>A parte il fatto che in questo modo il box in fondo alla pagina deborda un po&#8217; (a causa dell&#8217;applicazione dei bordi, la cui dimensione si va a sommare al 100% complessivo dell&#8217;altezza degli elementi div), è possibile vedere che abbiamo raggiunto lo scopo di poter gestire a piacimento l&#8217;altezza dei vari elementi div, esprimendo questi valori dell&#8217;attributo di stile height in percentuale rispetto all&#8217;altezza del 100% della pagina.</p>
<p>Questo problema invece non si presentava utilizzando un doctype HTML 4.0 TRANSITIONAL, che era decisamente meno rigoroso su questi aspetti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2010/08/05/gestire-attributo-di-stile-height-con-doctype-xhtml-10-transitional/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buone Feste!</title>
		<link>http://www.ricercheit.net/2009/12/25/buone-feste/</link>
		<comments>http://www.ricercheit.net/2009/12/25/buone-feste/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 13:08:55 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=435</guid>
		<description><![CDATA[Oggi è Natale, quindi non sono proprio in anticipo, però vorrei lo stesso fare gli auguri di Buon Natale (per quel che rimane), di buone Feste, e di un sereno 2010 a tutti i lettori del blog, sia a coloro che sono più assidui, sia a coloro che arrivano qui per caso partendo da una [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi è Natale, quindi non sono proprio in anticipo, però vorrei lo stesso fare gli auguri di Buon Natale (per quel che rimane), di buone Feste, e di un sereno 2010 a tutti i lettori del blog, sia a coloro che sono più assidui, sia a coloro che arrivano qui per caso partendo da una ricerca su Google (la maggior parte).</p>
<p>AUGURI A TUTTI!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/12/25/buone-feste/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ho a disposizione 25 inviti per Google Wave</title>
		<link>http://www.ricercheit.net/2009/12/08/ho-a-disposizione-25-inviti-per-google-wave/</link>
		<comments>http://www.ricercheit.net/2009/12/08/ho-a-disposizione-25-inviti-per-google-wave/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 10:17:00 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=433</guid>
		<description><![CDATA[Sto giocando con testando Google Wave, lo strumento collaborativo messo a disposizione da Google. Al momento, i miei scarsissimi test me lo fanno sembrare un prodotto carino&#8230; in prospettiva.
Comunque, non è dei miei test che vorrei parlare (anche perché finirei molto presto), ma del fatto che ho 25 inviti a disposizione, per cui, chi volesse [...]]]></description>
			<content:encoded><![CDATA[<p>Sto <span style="text-decoration: line-through;">giocando con</span> testando Google Wave, lo strumento collaborativo messo a disposizione da Google. Al momento, i miei scarsissimi test me lo fanno sembrare un prodotto carino&#8230; in prospettiva.</p>
<p>Comunque, non è dei miei test che vorrei parlare (anche perché finirei molto presto), ma del fatto che ho 25 inviti a disposizione, per cui, chi volesse usufruirne, può lasciare un commento. <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/12/08/ho-a-disposizione-25-inviti-per-google-wave/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mailbox virtuali con Postfix e Dovecot su Debian</title>
		<link>http://www.ricercheit.net/2009/11/29/mailbox-virtuali-con-postfix-e-dovecot-su-debian/</link>
		<comments>http://www.ricercheit.net/2009/11/29/mailbox-virtuali-con-postfix-e-dovecot-su-debian/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 20:30:48 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Debian / Ubuntu]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Mail Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=415</guid>
		<description><![CDATA[Scenario
Facendo riferimento ai due precedenti articoli su Postfix e Dovecot, dove si era vista una configurazione minimale di un server di posta e l&#8217;utilizzo di alias e domini virtuali, sempre basandoci sull&#8217;ambiente di test precedentemente illustrato, in questo articolo vedremo come utilizzare le mailbox virtuali su Postfix, e quindi come accedere a queste mailbox con [...]]]></description>
			<content:encoded><![CDATA[<h3>Scenario</h3>
<p>Facendo riferimento ai due <a href="http://www.ricercheit.net/2009/01/01/server-di-posta-basilare-con-postfix-e-dovecot/"><strong>precedenti</strong></a> <a href="http://www.ricercheit.net/2009/01/25/gestire-alias-e-domini-virtuali-con-postfix/"><strong>articoli</strong></a> su Postfix e Dovecot, dove si era vista una configurazione minimale di un server di posta e l&#8217;utilizzo di alias e domini virtuali, sempre basandoci sull&#8217;<a href="http://www.ricercheit.net/2008/12/26/ambiente-di-test/"><strong>ambiente di test</strong></a> precedentemente illustrato, in questo articolo vedremo come utilizzare le mailbox virtuali su Postfix, e quindi come accedere a queste mailbox con Dovecot. L&#8217;utilizzo di mailbox virtuali è un passo avanti rispetto alle configurazioni precedentemente trattate, poiché con questo tipo di caselle di posta elettronica, facciamo in modo che le mailbox siano completamente distinte dagli utenti di sistema, in questo modo non saremo costretti a creare un utente Linux da utilizzare ogniqualvolta abbiamo bisogno di una casella di posta. Oltre alle mailbox, avremo anche dei domini virtuali, in tal modo potremo ospitare sullo stesso server caselle di posta elettronica riferite a diversi domini, con tutti i vantaggi del caso. Le informazioni su mailbox e domini virtuali saranno contenute in file di testo sul file system del sistema operativo.</p>
<h3>Configurazione di Postfix</h3>
<p>Andremo a configurare mailbox virtuali sul server Giapeto per i domini cerere.mail e saturno.mail. In questa situazione, se esistono, è bene cancellare dal file di configurazione /etc/postfix/main.cf tutte le impostazioni relative ad alias e domini virtuali, poiché queste impostazioni andranno eventualmente riscritte secondo il formato richiesto dalle mailbox virtuali. La configurazione precedentemente descritta si esplicita nelle seguenti direttive nel file di configurazione /etc/postfix/main.cf; le altre informazioni riferite ai parametri basilari di Postfix rimangono quelle descritte nell&#8217;articolo riguardante la configurazione di base di Postfix:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">virtual_mailbox_domains = cerere.mail saturno.mail
virtual_mailbox_base = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail
virtual_mailbox_maps = <span style="color: #7a0874; font-weight: bold;">hash</span>:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>vmailbox
virtual_minimum_uid = <span style="color: #000000;">5000</span>
virtual_uid_maps = static:<span style="color: #000000;">5000</span>
virtual_gid_maps = static:<span style="color: #000000;">5000</span>
virtual_alias_maps = <span style="color: #7a0874; font-weight: bold;">hash</span>:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>virtual</pre></td></tr></table></div>

<p>La prima riga fa riferimento ai domini virtuali per i quali il sistema è abilitato a ricevere messaggi di posta, cioè cerere.mail e saturno.mail. La seconda riga fa riferimento alla directory di base scelta come deposito di tutta la posta ricevuta su questo server, al cui interno vi saranno le varie sottodirectory relative ai domini virtuali, e per ogni dominio virtuale vi saranno le directory riferite alle varie mailbox di quel dominio, dove verrà depositata la posta elettronica, secondo il formato di archiviazione Maildir, come vedremo di seguito. La terza riga indica il file dove vengono elencate le mailbox virtuali definite sul sistema e la loro posizione sul file system, a partire dalla directory definita in precedenza col parametro virtual_mailbox_base. La quarta riga specifica l&#8217;id minimo dell&#8217;utente utilizzato dal sistema per andare a scrivere i file rappresentanti i messaggi di posta sul file system, nella posizione indicata con il parametro virtual_mailbox_base; questo utente avrà un ID utente e un ID di gruppo, specificati con precisione nella quinta e nella sesta riga della porzione del file di configurazione specificata poco sopra. La settima e ultima riga è opzionale, e indica la posizione del file contenente gli alias virtuali delle mailbox virtuali effettive, come descritto nell&#8217;articolo precedente riguardante gli alias virtuali, anche se nell&#8217;articolo precedente gli alias si riferivano alle mailbox di sistema e non a quelle virtuali.</p>
<p>Modificata la configurazione di Postfix, creiamo la directory che conterrà le mailbox virtuali:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail</pre></div></div>

<p>Ora invece dobbiamo creare la mappa che conterrà l&#8217;elenco delle mailbox virtuali definite sul sistema:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>vmailbox</pre></div></div>

<p>Quindi andremo ad editare il file vmailbox appena creato per definire l&#8217;elenco delle mailbox sul nostro sistema, in questo modo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">salvor.hardin<span style="color: #000000; font-weight: bold;">@</span>cerere.mail   cerere.mail<span style="color: #000000; font-weight: bold;">/</span>salvor.hardin<span style="color: #000000; font-weight: bold;">/</span>
hober.mallow<span style="color: #000000; font-weight: bold;">@</span>cerere.mail    cerere.mail<span style="color: #000000; font-weight: bold;">/</span>hober.mallow<span style="color: #000000; font-weight: bold;">/</span>
preem.palver<span style="color: #000000; font-weight: bold;">@</span>saturno.mail   saturno.mail<span style="color: #000000; font-weight: bold;">/</span>preem.palver<span style="color: #000000; font-weight: bold;">/</span>
stor.gendibal<span style="color: #000000; font-weight: bold;">@</span>saturno.mail  saturno.mail<span style="color: #000000; font-weight: bold;">/</span>stor.gendibal<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<p>Questo è un tipico file di mappa di Postfix, dove nella prima colonna sono indicate le mailbox virtuali, mentre nella seconda è indicato il percorso della casella in cui andrà depositata la posta, a partire dalla &#8220;radice&#8221; che altro non è che il percorso indicato nella direttiva virtual_mailbox_base del file main.cf, come visto in precedenza; ad esempio, la posta della mailbox virtuale salvor.hardin@cerere.mail verrà depositata nella directory /var/spool/vmail/cerere.mail/salvor.hardin. Da notare lo slash (/) alla fine del percorso di ogni mailbox virtuale, il quale indica a Postfix di archiviare la posta nel formato Maildir.</p>
<p>Creare a questo punto la mappa in formato .db partendo dal file appena editato:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">postmap <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>vmailbox</pre></div></div>

<p>Ora editiamo il file di mappa /etc/postfix/virtual in cui andare ad inserire gli alias per le mailbox virtuali:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">postmaster<span style="color: #000000; font-weight: bold;">@</span>cerere.mail    salvor.hardin<span style="color: #000000; font-weight: bold;">@</span>cerere.mail
abuse<span style="color: #000000; font-weight: bold;">@</span>cerere.mail         salvor.hardin<span style="color: #000000; font-weight: bold;">@</span>cerere.mail
postmaster<span style="color: #000000; font-weight: bold;">@</span>saturno.mail   preem.palver<span style="color: #000000; font-weight: bold;">@</span>saturno.mail
abuse<span style="color: #000000; font-weight: bold;">@</span>saturno.mail        preem.palver<span style="color: #000000; font-weight: bold;">@</span>saturno.mail</pre></td></tr></table></div>

<p>e compiliamo quindi la mappa degli alias:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">postmap <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>virtual</pre></div></div>

<h3>Configurazione di Dovecot</h3>
<p>Configurato Postfix, dobbiamo informare anche Dovecot delle mutate impostazioni di archiviazione della posta elettronica, per cui Dovecot dovrà essere informato della nuova posizione delle mailbox; inoltre, Dovecot non si baserà più sugli utenti di sistema per l&#8217;autenticazione sulla casella di posta, per cui andremo a fornirgli un file in cui sono elencati gli utenti ed un file in cui sono elencate le relative password, secondo lo schema stesso di Linux, basato su un file passwd dove sono indicati gli utenti, ed un file shadow dove sono elencate le password. Di seguito vediamo le impostazioni da inserire nel file di configurazione di Dovecot /etc/dovecot/dovecot.conf, fare attenzione ad aprire e chiudere le graffe, esistenti e non, all&#8217;interno del file di configurazione:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">mail_location = Maildir:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/%</span>d<span style="color: #000000; font-weight: bold;">/%</span>n
auth default <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  mechanisms = plain <span style="color: #c20cb9; font-weight: bold;">login</span>
  userdb passwd-file <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    args = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/%</span>d<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span>
  <span style="color: #7a0874; font-weight: bold;">&#125;</span>
  passdb passwd-file <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    args = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/%</span>d<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shadow
  <span style="color: #7a0874; font-weight: bold;">&#125;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>Nella riga 1 andiamo a specificare la posizione in cui Dovecot andrà a leggere la posta archiviata da Postfix, utilizzando delle variabili; ciò consente a Dovecot di leggere la posta di più domini, utilizzando la variabile %d, che indica la parte dopo la chiocciola dell&#8217;indirizzo di posta (il dominio), e la variabile %n, che indica la parte prima della chiocciola dell&#8217;indirizzo di posta (il nome utente): tra l&#8217;altro, ciò comporta l&#8217;accortezza di autenticarsi indicando, alla richiesta del nome utente, l&#8217;indirizzo completo di posta.</p>
<p>La seconda riga indica l&#8217;inizio della sezione riguardante le impostazioni di autenticazione su Dovecot, che sono evidenziate ad iniziare dalla terza riga, che indica i meccanismi di transito sulla rete delle password, che nel caso illustrato vengono trasmesse in chiaro per l&#8217;autenticazione su Dovecot; questo causa qualche problema di sicurezza, poiché le password viaggiano in chiaro sulla rete, quindi basta sniffarla il tempo necessario per carpire le password. Quarta e quinta riga indicano la posizione del file in cui sono indicati gli utenti possessori di una casella di posta, mentre settima e ottava riga indicano il percorso del file contenente il nome utente e la relativa password; da notare che anche in questo caso è stata utilizzata la variabile %d, seguita dalla directory etc/ che conterrà i due file: tale directory è stata creata semplicemente per coerenza con la struttura delle directory Linux, ma non è assolutamente necessaria.</p>
<h3>Creazione directory, utenti e password</h3>
<p>Ora bisogna creare gli utenti e le password sia per l&#8217;accesso di Postfix alla directory /var/spool/vmail, sia per l&#8217;autenticazione su Dovecot da parte di un qualsiasi MUA (Mail User Agent). Cominciamo creando l&#8217;utente di sistema che useremo per l&#8217;accesso alla directory in cui saranno contenute le mailbox virtuali:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">useradd <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span> <span style="color: #660033;">-m</span> <span style="color: #660033;">-U</span> <span style="color: #660033;">-u</span> <span style="color: #000000;">5000</span> vmail</pre></div></div>

<p>Con questo comando creiamo l&#8217;utente vmail, a cui assegnamo la home directory /var/spool/vmail e la shell &#8220;fasulla&#8221; /bin/false, ed a cui assegnamo l&#8217;id utente 5000, come indicato nella configurazione di Postfix; inoltre, con l&#8217;opzione –U andiamo a creare un gruppo con caratteristiche identiche all&#8217;utente appena creato. È possibile notare che la home directory assegnata all&#8217;utente vmail corrisponde alla directory indicata in Postfix come directory &#8220;root&#8221; per l&#8217;archiviazione di posta elettronica, in questo modo assegnamo subito a questo utente l&#8217;ownership (ovvero la proprietà) della directory, poiché sarà l&#8217;utente vmail che effettivamente avrà il compito di archiviare sul file system la posta elettronica.</p>
<p>Il passaggio successivo consiste nel creare le directory relative ai domini, ai file contenenti utenti e password, ed alle mailbox virtuali. Iniziamo con le directory relative ai domini cerere.mail e saturno.mail:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail</pre></td></tr></table></div>

<p>Ora creiamo la directory etc per ogni dominio, che conterrà i file relativi ad utenti e password corrispondenti alle mailbox virtuali create per ogni dominio; gli utenti e le password verranno utilizzati da Dovecot per autenticare l&#8217;accesso alle caselle di posta virtuali:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail<span style="color: #000000; font-weight: bold;">/</span>etc</pre></td></tr></table></div>

<p>Ora andiamo a creare, per ogni dominio, il file degli utenti (passwd) e delle password (shadow), coerentemente con quanto indicato nel file di configurazione di Dovecot:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span>
<span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shadow
<span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span>
<span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shadow</pre></td></tr></table></div>

<p>Creati i file, bisogna inserire il contenuto relativo a utenti e password, di seguito sono elencati i comandi per inserire i contenuti dei due file degli utenti passwd:</p>
<p><span style="text-decoration: underline;">Utenti per il dominio cerere.mail</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> salvor.hardin::<span style="color: #000000;">5000</span>:<span style="color: #000000;">5000</span>::<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>salvor.hardin <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> hober.mallow::<span style="color: #000000;">5000</span>:<span style="color: #000000;">5000</span>::<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>hober.mallow <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span></pre></td></tr></table></div>

<p><span style="text-decoration: underline;">Utenti per il dominio saturno.mail</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> preem.palver::<span style="color: #000000;">5000</span>:<span style="color: #000000;">5000</span>::<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail<span style="color: #000000; font-weight: bold;">/</span>preem.palver <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> stor.gendibal::<span style="color: #000000;">5000</span>:<span style="color: #000000;">5000</span>::<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail<span style="color: #000000; font-weight: bold;">/</span>stor.gendibal <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span></pre></td></tr></table></div>

<p>Dall&#8217;analisi di questi file, si può intuire che nel file viene indicato il nome utente, poi l&#8217;ID utente e di gruppo (il 5000 preso per l&#8217;utente locale vmail), quindi viene indicata la directory in cui Dovecot andrà a leggere la posta per quell&#8217;utente</p>
<p>Ora bisogna popolare il file shadow con le password degli utenti. Siccome voglio che le password siano criptate (ad esempio utilizzando l&#8217;algoritmo md5, anche se non è il più sicuro che esista), per generare le password dovrò utilizzare il comando dovecotpw. Ad esempio, per assegnare a tutti gli utenti la password Password00, dovrò scrivere qualcosa del genere:</p>
<p><span style="text-decoration: underline;">Password per il dominio cerere.mail</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> salvor.hardin:$<span style="color: #7a0874; font-weight: bold;">&#40;</span>dovecotpw –s md5 –p Password00<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shadow
<span style="color: #7a0874; font-weight: bold;">echo</span> hober.mallow:$<span style="color: #7a0874; font-weight: bold;">&#40;</span>dovecotpw –s md5 –p Password00<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>cerere.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shadow</pre></td></tr></table></div>

<p><span style="text-decoration: underline;">Password per il dominio saturno.mail</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> preem.palver:$<span style="color: #7a0874; font-weight: bold;">&#40;</span>dovecotpw –s md5 –p Password00<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shadow
<span style="color: #7a0874; font-weight: bold;">echo</span> stor.gendibal:$<span style="color: #7a0874; font-weight: bold;">&#40;</span>dovecotpw –s md5 –p Password00<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>saturno.mail<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shadow</pre></td></tr></table></div>

<p>A questo punto, avendo trafficato con l&#8217;utente root all&#8217;interno della directory /var/spool/vmail, è necessario reimpostare l&#8217;ownership della directory e del suo contenuto con il comando</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chown</span> –R <span style="color: #000000;">5000</span>:<span style="color: #000000;">5000</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>vmail</pre></div></div>

<h3>Collaudo del sistema</h3>
<p>Per testare il server di posta elettronica, è sufficiente inviare una mail ad uno degli indirizzi di posta appena creati, e Postfix, alla ricezione della mail, creerà la directory in cui depositare la posta e che rappresenterà il deposito di tutta la posta per quella determinata mailbox. Se voglio controllare cosa accade durante la ricezione della mail, sia per curiosità, sia per motivi di troubleshooting, è possibile consultare il log della posta, contenuto nel file /var/log/mail.log, che ci darà tutte le informazioni che ci necessitano. Se invece voglio controllare in tempo reale che accade, posso utilizzare un&#8217;opzione sciccosa del comando tail in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tail</span> –f <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mail.log</pre></div></div>

<p>che mi mostrerà appunto in tempo reale le righe che vengono eventualmente aggiunte al file /var/log/mail.log.</p>
<h3>Conclusioni</h3>
<p>Questa configurazione comincia ad essere un tantino più professionale rispetto alle configurazioni proposte in precedenza, infatti ora possiamo gestire con maggiore flessibilità più domini ed i relativi utenti, che non sono più utenti di sistema, per cui possiamo avere lo stesso nome utente per domini diversi. Questa configurazione però ha anche alcuni difetti, ovvero il metodo di creazione di utenti e password per l&#8217;accesso alla posta elettronica, che è un po&#8217; macchinoso basandosi sulla riga di comando; un&#8217;altra mancanza non indifferente è rappresentata dal fatto che sostanzialmente, con questa configurazione, ci fidiamo di tutto ciò che ci arriva, poiché non vi sono restrizioni sulla posta in arrivo.</p>
<p>Per la definizione delle mappe delle mailbox virtuali e degli alias, nonché per la definizione di utenti e password per Dovecot, vedremo in seguito una configurazione in cui Postfix e Dovecot utilizzano MySQL al posto delle tecniche trattate finora, mentre per spam e antivirus verranno analizzati alcuni strumenti come greylist e blacklist, e ClamAV come sistema di scansione antivirus della posta elettronica. Rimane fondamentale una corretta configurazione di Postfix per impedire che il nostro MTA funga da open relay, ciò dipende essenzialmente, per quanto visto finora, da ciò che si inserisce nel parametro mynetworks, come illustrato negli articoli precedenti.</p>
<h3>Link di riferimento</h3>
<p><a title="Postfix and Dovecot for Virtual Users" href="http://neranjara.org/article/title/How_to_configure_PostFix_and_Dovecot_for_Virtual_Users_with_out_a_Database_" onclick="pageTracker._trackPageview('/outgoing/neranjara.org/article/title/How_to_configure_PostFix_and_Dovecot_for_Virtual_Users_with_out_a_Database?referer=');">How to configure PostFix and Dovecot for Virtual Users with out a Database</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/11/29/mailbox-virtuali-con-postfix-e-dovecot-su-debian/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Strategie aziendali</title>
		<link>http://www.ricercheit.net/2009/11/09/strategie-aziendali/</link>
		<comments>http://www.ricercheit.net/2009/11/09/strategie-aziendali/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 21:46:06 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=412</guid>
		<description><![CDATA[Stasera, cazzeggiando un po&#8217; per la blogosfera, che non ho voglia di dedicarmi a cose &#8220;serie&#8221;, mi sono imbattuto in questo post di Gaspar Torriero, in cui viene descritto un intervento che egli ha fatto al Venezia Camp (già svoltosi) insieme a Marco Massarotto, in cui, da quanto leggo dal blog di Gaspar Torriero, e [...]]]></description>
			<content:encoded><![CDATA[<p>Stasera, cazzeggiando un po&#8217; per la blogosfera, che non ho voglia di dedicarmi a cose &#8220;serie&#8221;, mi sono imbattuto in <a href="http://www.gaspartorriero.it/2009/10/veneziacamp-il-mio-intervento.html" onclick="pageTracker._trackPageview('/outgoing/www.gaspartorriero.it/2009/10/veneziacamp-il-mio-intervento.html?referer=');"><strong>questo post</strong></a> di <a href="http://www.gaspartorriero.it" onclick="pageTracker._trackPageview('/outgoing/www.gaspartorriero.it?referer=');"><strong>Gaspar Torriero</strong></a>, in cui viene descritto un intervento che egli ha fatto al Venezia Camp (già svoltosi) insieme a <a href="http://marcomassarotto.com/" onclick="pageTracker._trackPageview('/outgoing/marcomassarotto.com/?referer=');"><strong>Marco Massarotto</strong></a>, in cui, da quanto leggo dal blog di Gaspar Torriero, e se non ho capito male, si è parlato da due punti di vista differenti rispetto all&#8217;opportunità per le aziende di fare promozione tramite il Web, o qualcosa di simile.</p>
<p>Gaspar Torriero è scettico, e porta a sostegno della propria opinione alcuni esempi, tra cui <a href="http://forum.bertuccia.com/index.php?showtopic=4187" onclick="pageTracker._trackPageview('/outgoing/forum.bertuccia.com/index.php?showtopic=4187&amp;referer=');"><strong>questo thread</strong></a> del <a href="http://forum.bertuccia.com/" onclick="pageTracker._trackPageview('/outgoing/forum.bertuccia.com/?referer=');"><strong>Bertuccia Forum</strong></a>. Il thread, a mio parere, è qualcosa di assolutamente esilarante. Astenersi dalla lettura se l&#8217;argomento &#8220;regolarità intestinale&#8221; è causa di qualsivoglia turbamento. <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/11/09/strategie-aziendali/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fare il binding di IIS 6 su un solo indirizzo IP</title>
		<link>http://www.ricercheit.net/2009/11/08/fare-il-binding-di-iis-6-su-un-solo-indirizzo-ip/</link>
		<comments>http://www.ricercheit.net/2009/11/08/fare-il-binding-di-iis-6-su-un-solo-indirizzo-ip/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 22:10:09 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Server WEB]]></category>

		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=381</guid>
		<description><![CDATA[Scenario
Si prenda in considerazione un server Windows Server 2003 con Internet Information Services 6 con installato almeno un sito Web; il server in questione ha due o più schede di rete, oppure una scheda di rete con definiti due o più indirizzi IP, ad esempio, il nostro server ha due indirizzi IP, 172.16.1.1 e 172.16.1.10. [...]]]></description>
			<content:encoded><![CDATA[<h3>Scenario</h3>
<p>Si prenda in considerazione un server Windows Server 2003 con Internet Information Services 6 con installato almeno un sito Web; il server in questione ha due o più schede di rete, oppure una scheda di rete con definiti due o più indirizzi IP, ad esempio, il nostro server ha due indirizzi IP, 172.16.1.1 e 172.16.1.10. Questo server ha un&#8217;installazione di IIS predefinita, con uno o più siti Web installati. In tale situazione, IIS rimane in ascolto sulla porta 80 su tutti gli indirizzi IP definiti sulla macchina.</p>
<p>Ora esaminiamo l&#8217;ipotesi di dover far girare sulla stessa macchina un altro server Web, che deve anch&#8217;esso rimanere in ascolto sulla porta 80: in questo caso, bisogna fare in modo che i siti di IIS rimangano in ascolto, invece che su entrambi gli indirizzi IP, su un solo indirizzo IP; nel nostro caso scegliamo l&#8217;indirizzo 172.16.1.1, in modo da lasciare &#8220;libero&#8221; l&#8217;indirizzo 172.16.1.10 per l&#8217;altro server Web.</p>
<p>A prima vista, la soluzione sembrerebbe semplice, cioé configurare il sito (o i siti) Web per rimanere in ascolto solamente sull&#8217;indirizzo 172.16.1.1, come mostrato in figura 1:</p>
<div class="mceTemp">
<dl id="attachment_403" class="wp-caption alignnone" style="width: 429px;">
<dt class="wp-caption-dt"><a href="http://www.ricercheit.net/wp-content/uploads/2009/11/iislisten.png"><img class="size-full wp-image-403" title="Porta d'ascolto sito IIS" src="http://www.ricercheit.net/wp-content/uploads/2009/11/iislisten.png" alt="Porta d'ascolto sito IIS" width="419" height="108" /></a></dt>
</dl>
</div>
<p>Purtroppo però questa soluzione non funziona, IIS continua a rimanere in ascolto sulla porta 80 su tutti gli indirizzi IP della macchina, com&#8217;è possibile vedere col comando netstat:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">netstat -noa | find &quot;:80&quot;</pre></div></div>

<p>il cui output risulta essere questo:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2548</pre></div></div>

<p>che indica appunto che IIS si appropria della porta 80 su tutti gli IP disponibili.</p>
<h3>Configurazione di IIS</h3>
<p>Con i normali strumenti messi a disposizione dalla console di gestione di IIS, che io sappia non c&#8217;è modo di superare questa limitazione; per risolvere il problema, possiamo utilizzare l&#8217;utility <a title="Descrizione utility httpcfg" href="http://technet.microsoft.com/it-it/library/cc787508%28WS.10%29.aspx" onclick="pageTracker._trackPageview('/outgoing/technet.microsoft.com/it-it/library/cc787508_28WS.10_29.aspx?referer=');"><strong>httpcfg</strong></a>, contenuta nel pacchetto <a title="Windows Server 2003 Support Tools" href="http://www.microsoft.com/downloads/details.aspx?familyid=96A35011-FD83-419D-939B-9A772EA2DF90&amp;displaylang=en" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/downloads/details.aspx?familyid=96A35011-FD83-419D-939B-9A772EA2DF90_amp_displaylang=en&amp;referer=');"><strong>Windows Server 2003 Support Tools</strong></a>, che consente di svolgere questo e altri compiti su IIS.</p>
<p>Il primo passo consiste nel verificare su quali porte sta in ascolto IIS, col comando</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">httpcfg query iplisten</pre></div></div>

<p>che, nel mio caso, restituisce questo output:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">HttpQueryServiceConfiguration completed with 1168</pre></div></div>

<p>Ciò significa che IIS segue l&#8217;impostazione predefinita, ovvero rimane in ascolto su tutti gli IP disponibili sulla macchina. Con httpcfg posso cambiare questa impostazione, istruendo IIS per rimanere in ascolto solamente sull&#8217;IP 172.16.1.1:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">httpcfg set iplisten -i 172.16.1.1</pre></div></div>

<p>il quale restituisce questo messaggio che conferma la corretta esecuzione del comando:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">HttpSetServiceConfiguration completed with 0</pre></div></div>

<p>La conferma è utile, ma è meglio controllare se la configurazione è corretta, digitando di nuovo il comando</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">httpcfg query iplisten</pre></div></div>

<p>il cui output stavolta è differente:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">      IP                      : 172.16.1.1
------------------------------------------------------------------------------</pre></div></div>

<p>La configurazione è avvenuta correttamente, per renderla attiva è necessario riavviare il servizio HTTP e i servizi dipendenti, HTTP SSL e World Wide Web Publishing Service:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">net stop http /y</pre></div></div>

<p>L&#8217;opzione /y riavvia http e i servizi dipendenti da questo senza attendere la conferma dell&#8217;utente; procediamo ora all&#8217;avvio dei servizi fermati:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">net start http
net start w3svc</pre></div></div>

<p>Dopo aver riavviato i servizi, verifichiamo con netstat che IIS si sia piegato al nostro volere:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">netstat -noa | find &quot;:80&quot;</pre></div></div>

<p>ora l&#8217;output del comando netstat è quello &#8220;giusto&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">TCP    172.16.1.1:80          0.0.0.0:0              LISTENING       3928</pre></div></div>

<h3>Conclusioni</h3>
<p>httpcfg è un&#8217;utility che consente di ovviare a quella che è una &#8220;curiosa&#8221; mancanza della GUI di IIS; una volta che se ne conosce l&#8217;esistenza e le modalità d&#8217;utilizzo, è abbastanza semplice arrivare al risultato desiderato, ma il sysadmin che si trova per la prima volta di fronte ad un problema simile può perdere anche parecchio tempo prima di risolvere il problema, e ciò secondo me è negativo e soprattutto poco sensato.</p>
<h3>Link di riferimento</h3>
<p><a title="Esempi d'uso di httpcfg" href="http://technet.microsoft.com/en-us/library/cc786389%28WS.10%29.aspx" onclick="pageTracker._trackPageview('/outgoing/technet.microsoft.com/en-us/library/cc786389_28WS.10_29.aspx?referer=');">http://technet.microsoft.com/en-us/library/cc786389%28WS.10%29.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/11/08/fare-il-binding-di-iis-6-su-un-solo-indirizzo-ip/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sniffing del traffico di rete con Cisco ASA 5505</title>
		<link>http://www.ricercheit.net/2009/11/03/sniffing-del-traffico-di-rete-con-cisco-asa-5505/</link>
		<comments>http://www.ricercheit.net/2009/11/03/sniffing-del-traffico-di-rete-con-cisco-asa-5505/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 22:00:53 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Cisco]]></category>

		<category><![CDATA[Firewall]]></category>

		<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=384</guid>
		<description><![CDATA[Panoramica
Può capitare, alle volte, di trovarci nella necessità di dover fare troubleshooting sulla nostra rete in conseguenza di un qualche malfunzionamento (software o hardware che sia); in alcuni casi, può essere estremamente utile &#8220;sniffare&#8221; il traffico di rete, cioé avere in una qualche forma comprensibile all&#8217;essere umano l&#8217;insieme (o, più spesso, un sottoinsieme) delle comunicazioni [...]]]></description>
			<content:encoded><![CDATA[<h3>Panoramica</h3>
<p>Può capitare, alle volte, di trovarci nella necessità di dover fare troubleshooting sulla nostra rete in conseguenza di un qualche malfunzionamento (software o hardware che sia); in alcuni casi, può essere estremamente utile &#8220;sniffare&#8221; il traffico di rete, cioé avere in una qualche forma comprensibile all&#8217;essere umano l&#8217;insieme (o, più spesso, un sottoinsieme) delle comunicazioni che avvengono sulla rete.</p>
<p>Per sniffare il traffico su una rete locale (o solo su alcuni hosts della stessa), bisogna innanzitutto avere uno switch che consenta tale attività (cioé uno switch managed), quindi utilizzare un software che consenta l&#8217;attività di sniffing vera e propria: il più famoso di questi è senza dubbio <a title="Sito ufficiale di Wireshark" href="http://www.wireshark.org" onclick="pageTracker._trackPageview('/outgoing/www.wireshark.org?referer=');"><strong>Wireshark</strong></a>.</p>
<p>Può succedere però che si debba verificare se il traffico transita o meno sul nostro firewall; in tal caso, è necessario che l&#8217;operazione di sniffing avvenga direttamente sul firewall, e a meno che il firewall non sia una macchina Windows o Linux, non è possibile utilizzare Wireshark o tcpdump. Se il firewall è un Cisco ASA, è possibile utilizzare IOS per poter sniffare il traffico, oppure è possibile utilizzare ASDM (ovvero l&#8217;interfaccia web di amministrazione), che non ho la più pallida idea di come funzioni; in genere sui firewall Cisco si utilizza la riga di comando.</p>
<h3>Sniffing del traffico</h3>
<p>Per i miei test su questa funzionalità dell&#8217;ASA, ho ripreso l&#8217;ambiente di test descritto nel <a title="Articolo su VPN IPSEC con ASA 5505" href="http://www.ricercheit.net/2009/08/24/vpn-site-to-site-ipsec-con-cisco-asa-5505/"><strong>precedente articolo</strong></a> riguardante la VPN IPSEC tra due ASA 5505.</p>
<p>Come prima prova, effettuerò lo sniffing del traffico ICMP dal client su LAN1 al firewall ASA-1. Per farlo dovrò utilizzare il comando capture di IOS; sia questo comando, sia i successivi, vengono eseguiti in privileged mode:</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">capture traffic_asa1_inside interface inside</pre></div></div>

<p>dove capture indica il comando da utilizzare per istruire l&#8217;ASA sulla cattura del traffico di rete, traffic_asa1_inside è un nome da dare a piacere che indica la singola operazione di sniffing (serve perché potrei voler utilizzare diversi processi di cattura per diversi scopi), interface inside indica l&#8217;interfaccia del firewall sulla quale avviene il monitoraggio del traffico; da notare che dando queste indicazioni, viene catturato tutto il traffico di rete.</p>
<p>Fatto questo, pingo, dal client su LAN1, il firewall ASA-1, quindi dovrò vedere sul dispositivo se la cattura avviene correttamente; a questo scopo, devo digitare il seguente comando sull&#8217;ASA (dopo aver pingato il firewall, ovviamente):</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">show capture traffic_asa1_inside</pre></div></div>

<p>una parte dell&#8217;output del comando sarà simile al seguente:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">14: 11:36:14.393961 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
15: 11:36:14.394190 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply
16: 11:36:15.399072 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
17: 11:36:15.399210 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply
18: 11:36:16.412881 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
19: 11:36:16.413018 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply
20: 11:36:17.426812 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
21: 11:36:17.426949 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply</pre></td></tr></table></div>

<p>Vorrei porre l&#8217;attenzione sul fatto che tutte le righe iniziano con un numero, ma questo numero, nel mio caso, non parte da 1, ma da 14. Questo avviene perché, prima delle mie richieste ICMP, viene loggata l&#8217;attività che svolgo sul firewall, in quanto sono loggato allo stesso via SSH, di conseguenza, il comando capture così indicato sniffa tutto il traffico di rete, rendendo più complicata la lettura dell&#8217;output restituito. Per ovviare a questo inconveniente, devo limitare il traffico catturato, interrompendo prima di tutto lo sniffing del traffico, con il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">no capture traffic_asa1_inside</pre></div></div>

<p>in questo modo al firewall viene indicato di interrompere la cattura del traffico. Per poter limitare lo sniffing dei pacchetti di rete a determinati protocolli, è necessario utilizzare delle access-list che indichino il tipo di traffico da monitorare, per poi essere utilizzate col comando capture, come mostrato di seguito:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">configure terminal
access-list test_icmp extended permit icmp any interface inside
exit
capture icmp_asa1_inside access-list test_icmp interface inside</pre></td></tr></table></div>

<p>le righe che ci interessano sono la 2 e la 4 (se il significato delle altre due righe non è conosciuto, consultare il <a href="http://http://www.ricercheit.net/2008/01/20/configurazione-di-base-di-cisco-asa-5505/" onclick="pageTracker._trackPageview('/outgoing/http_//www.ricercheit.net/2008/01/20/configurazione-di-base-di-cisco-asa-5505/?referer=');"><strong>precedente articolo</strong></a> riguardante la configurazione di base di un Cisco ASA), in particolare, la riga 2 rappresenta il comando per creare la access list chiamata test_icmp che consente il traffico ICMP tra la rete locale e l&#8217;ASA, mentre la riga 4 è la ripetizione del comando capture, con in più l&#8217;indicazione di monitorare esclusivamente il traffico consentito dall&#8217;access list test_icmp. Se dal mio PC vado a pingare il firewall ASA-1, posso poi dare il comando show capture per verificare il traffico ICMP sull&#8217;interfaccia inside:</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">show capture icmp_asa1_inside</pre></div></div>

<p>il cui output è questo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">1: 12:41:30.148582 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
2: 12:41:31.151572 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
3: 12:41:32.154365 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
4: 12:41:33.155280 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request</pre></td></tr></table></div>

<p>In questo caso vedo solamente le richieste ICMP e non le relative risposte, ciò dipende dall&#8217;impostazione che ho dato precendentemente all&#8217;access-list; se voglio vedere anche le risposte alle richieste ICMP, modificherò l&#8217;access-list in questo modo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">configure terminal
access-list test_icmp extended permit icmp 192.168.1.0 255.255.255.0 192.168.1.0 255.255.255.0
no access-list test_icmp extended permit icmp any interface inside
exit</pre></td></tr></table></div>

<p>Per testare il funzionamento dello sniffing basato sulla access-list cambiata, è meglio pulire tutti i risultati della cattura raccolti fino ad ora:</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">clear capture icmp_asa1_inside</pre></div></div>

<p>ora, se pingo il firewall e digito di nuovo il comando show capture mostrato in precedenza, avrò questo output:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">1: 12:48:34.685541 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
2: 12:48:34.685770 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply
3: 12:48:35.687037 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
4: 12:48:35.687220 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply
5: 12:48:36.688593 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
6: 12:48:36.688730 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply
7: 12:48:37.690989 802.1Q vlan#1 P0 192.168.1.3 &gt; 192.168.1.254: icmp: echo request
8: 12:48:37.691141 802.1Q vlan#1 P0 192.168.1.254 &gt; 192.168.1.3: icmp: echo reply</pre></td></tr></table></div>

<p>In questo caso è decisamente semplice interpretare l&#8217;output mostrato dal firewall Cisco, ma se mi trovo a dover sniffare il traffico di diversi protocolli su un link di rete piuttosto trafficato, potrei trovarmi in difficoltà nel capire ciò che avviene. In tal caso, il Cisco ASA ci viene incontro con una simpaticissima funzionalità, che consiste nel poter scaricare un file rappresentante la cattura del traffico visualizzabile con Wireshark. Per poter sfruttare questa funzionalità, è necessario avere il server web abilitato; nel caso non lo fosse, bisogna indicare questi comandi:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">configure terminal
http server enable
http 192.168.1.0 255.255.255.0 inside
exit</pre></td></tr></table></div>

<p>dove la riga 2 rappresenta il comando per abilitare il server web (che rimane in ascolto in modo predefinito in modalità https), mentre la riga 3 indica gli host che possono connettersi via https al firewall e su quale interfaccia, nel nostro caso, gli hosts della rete 192.168.1.0/24 sull&#8217;interfaccia inside.</p>
<p>Ora possiamo connetterci tramite un browser all&#8217;indirizzo</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">https://192.168.1.254/capture/icmp_asa1_inside/pcap</pre></div></div>

<p>dove al posto di icmp_asa1_inside andremo a mettere il nome che abbiamo assegnato alla cattura del traffico tramite il comando capture. Essendo la connessione di tipo https, verrà segnalata l&#8217;inaffidabilità del certificato, possiamo proseguire ignorando tranquillamente la segnalazione, dopodiché ci verranno richiesti nome utente e password, ed a quel punto bisogna inserire la password per entrare in privileged mode, senza indicare il nome utente; fatti questi passaggi, ci verrà richiesto di salvare il file pcap, a cui daremo un nome a scelta con estensione .pcap, visualizzabile direttamente con Wireshark. Nei miei test (decisamente poco esaustivi), ho notato come Wireshark mi apra perfettamente i file generati dall&#8217;ASA, escludendo però l&#8217;ultima riga e restituendo questo errore all&#8217;apertura del file .pcap: &#8220;The capture file appears to have been cut short in the middle of a packet&#8221;; questo errorino comunque non pregiudica una corretta visualizzazione del traffico sniffato.</p>
<h3>Conclusioni</h3>
<p>La funzionalità di sniffing integrata nel Cisco ASA può risultare molto utile quando si tratta di effettuare troubleshooting su determinate connessioni di rete. In questo articolo ho fatto alcuni test connettendomi al firewall via SSH, ma nel mondo reale, secondo me è caldamente raccomandabile sniffare il traffico connettendosi all&#8217;ASA direttamente in console, questo per evitare che eventuali comunicazioni di rete tra il proprio host e il firewall si vadano a sovrapporre al traffico vero e proprio che si vuole monitorare.</p>
<h3>Link di riferimento</h3>
<p><a title="Troubleshoot connection through the PIX and ASA" href="http://www.cisco.com/en/US/products/ps6120/products_tech_note09186a00807c35e7.shtml" onclick="pageTracker._trackPageview('/outgoing/www.cisco.com/en/US/products/ps6120/products_tech_note09186a00807c35e7.shtml?referer=');">http://www.cisco.com/en/US/products/ps6120/products_tech_note09186a00807c35e7.shtml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/11/03/sniffing-del-traffico-di-rete-con-cisco-asa-5505/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VPN Site to Site IPSEC con Cisco ASA 5505</title>
		<link>http://www.ricercheit.net/2009/08/24/vpn-site-to-site-ipsec-con-cisco-asa-5505/</link>
		<comments>http://www.ricercheit.net/2009/08/24/vpn-site-to-site-ipsec-con-cisco-asa-5505/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 21:29:20 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Cisco]]></category>

		<category><![CDATA[Firewall]]></category>

		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=325</guid>
		<description><![CDATA[Scenario
Si prenda in esame un&#8217;azienda con due sedi distinte e ad una certa distanza tra loro.
In questo caso, potrebbe non essere conveniente fare una connessione dedicata tra le due sedi aziendali, per cui, è possibile sfruttare la rete Internet per interconnettere le due sedi tra di loro; in tale situazione, si pongono ovvi problemi di [...]]]></description>
			<content:encoded><![CDATA[<h3>Scenario</h3>
<p>Si prenda in esame un&#8217;azienda con due sedi distinte e ad una certa distanza tra loro.</p>
<p>In questo caso, potrebbe non essere conveniente fare una connessione dedicata tra le due sedi aziendali, per cui, è possibile sfruttare la rete Internet per interconnettere le due sedi tra di loro; in tale situazione, si pongono ovvi problemi di sicurezza, poiché i dati transitano su una rete pubblica, e sono quindi tranquillamente sniffabili da chiunque sia un po&#8217; troppo &#8220;curioso&#8221;. Per ovviare a questi problemi, è necessario criptare il traffico di rete fra le due sedi aziendali, anche se questo comporta un leggero calo delle prestazioni: tutte queste caratteristiche sono comprese in un tipo di connessione chiamato <a href="http://it.wikipedia.org/wiki/Virtual_Private_Network" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/Virtual_Private_Network?referer=');">VPN</a> (Virtual Private Network), che, come dice il nome, stabilisce un canale privato virtuale (tunnel) sulla rete pubblica (Internet).</p>
<p>Una VPN può essere di diversi tipi, in questa situazione, dovendo interconnettere tra loro due intere reti LAN distinte tra di loro, la VPN prende il nome di &#8220;site to site&#8221;; inoltre, una VPN può essere realizzata con diversi protocolli, in questo caso, utilizzeremo il protocollo <a href="http://it.wikipedia.org/wiki/IPsec" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/IPsec?referer=');">IPSEC</a> con due firewall <a href="http://www.cisco.com/web/IT/solutions/smb/products/security/asa_5500_series_adaptive_security_appliances.html" onclick="pageTracker._trackPageview('/outgoing/www.cisco.com/web/IT/solutions/smb/products/security/asa_5500_series_adaptive_security_appliances.html?referer=');">Cisco ASA 5505</a> in un ambiente di test.</p>
<h3>Ambiente di test</h3>
<p>Per simulare la situazione prospettata nello scenario, ho creato un piccolo ambiente di test con due firewall Cisco ASA 5505, in cui, nella parte LAN, è collegato un notebook su entrambi i lati per simulare le due reti LAN (rispettivamente, LAN1 – 192.168.1.0/24 e LAN2 – 192.168.2.0/24), mentre la rete Internet è simulata utilizzando uno switch HP 1700-8, a cui sono collegate le due interfacce WAN (WAN1 – 172.16.3.1/24 e WAN2 – 172.16.3.2) del firewall. I due firewall prendono il nome rispettivamente di ASA-1 e ASA-2. Queste connessioni sono mostrate nello schema di rete in Figura 1.</p>
<div id="attachment_362" class="wp-caption aligncenter" style="width: 509px"><a href="http://www.ricercheit.net/wp-content/uploads/2009/08/testvpn.png"><img class="size-full wp-image-362" title="Ambiente di test per VPN IPSEC" src="http://www.ricercheit.net/wp-content/uploads/2009/08/testvpn.png" alt="Ambiente di test per VPN IPSEC con Cisco ASA 5505" width="499" height="178" /></a><p class="wp-caption-text">Figura 1 - Ambiente di test per VPN IPSEC con Cisco ASA 5505</p></div>
<h3>Cenni teorici su VPN IPSEC su Cisco ASA5505</h3>
<p>Una connessione VPN IPSEC viene instaurata tra due apparati che supportano questo tipo di VPN in cinque passaggi. Il primo passaggio, consiste nel transito di &#8220;traffico interessante&#8221; tra i due firewall Cisco, dove per traffico interessante si intende quel tipo di traffico che deve essere protetto tramite IPSEC. A questo punto, avviene una negoziazione dei due apparati Cisco, i quali, a negoziazione avvenuta, instaurano una security association (SA) tra i due lati della VPN, utilizzando il protocollo IKE (chiamato anche ISAKMP).</p>
<p>La negoziazione di una SA avviene in due fasi (passaggio due e tre), Phase 1 e Phase 2: la Phase 1 stabilisce un primo tunnel che protegge i successivi messaggi di negoziazione ISAKMP, mentre la Phase 2 stabilisce il secondo tunnel che si occupa della cifratura vera e propria dei dati. Durante la Phase 2 bisogna specificare un transform set, cioè il livello di protezione richiesto per la sessione IPSEC, il quale combina un metodo di protezione ed un metodo di autenticazione; è importante che i parametri impostati con un transform set siano gli stessi su entrambi gli apparati responsabili della comunicazione sicura tra le due reti.</p>
<p>Quando si vuole stabilire una negoziazione ISAKMP tra due firewall, bisogna configurare su ogni dispositivo una policy ISAKMP, cioè un insieme di impostazioni che indicano come instaurare una SA; in particolare, una policy ISAKMP è composta da:</p>
<ul>
<li>un metodo di autenticazione, che serve per identificare l&#8217;identità dei peer; l&#8217;autenticazione può avvenire tramite preshared key (una sorta di password) oppure con l&#8217;utilizzo di certificati;</li>
<li>un metodo di cifratura dei dati, usato per cifrare i dati in transito nel tunnel VPN;</li>
<li>un algoritmo di hash usato per assicurare l&#8217;integrità dei dati;</li>
<li>un tipo di gruppo Diffie-Hellman, che serve per scambiarsi in sicurezza la chiave segreta condivisa su un canale insicuro;</li>
<li>un limite di tempo oltre il quale la SA deve essere ristabilita (un timeout, in parole povere), che prende il nome lifetime.</li>
</ul>
<p>Ogni firewall invia le proprie policy ISAKMP all&#8217;altro firewall, e se le policy sono le stesse su entrambi i dispositivi, allora viene stabilita la SA, anche se per avere una connessione VPN funzionante sono necessari altri passaggi, come vedremo tra poco.</p>
<p>Instaurata una SA, su entrambi gli apparati deve essere presente una access list (ACL) che consenta il transito del traffico interessante che dalla rete LAN1 va verso la rete LAN2 e viceversa, sfruttando il canale instaurato tramite la VPN. Definita la ACL, deve essere presente anche una mappa (chiamata crypto map) che assembla i seguenti elementi della SA instaurata con i passaggi precedenti:</p>
<ul>
<li>quale traffico deve essere protetto con IPSEC (traffico interessante), definito dalla ACL di cui sopra;</li>
<li>l&#8217;indirizzo IP pubblico dell&#8217;altro lato della VPN al quale inviare il traffico tramite IPSEC (peer);</li>
<li>quale tipo di sicurezza IPSEC è richiesto per questo traffico, definito dal transform set specificato precedentemente;</li>
<li>a quale interfaccia dell&#8217;ASA va applicata la mappa.</li>
</ul>
<p>Infine va definito un tunnel group su ognuno dei due apparati, dove per una connessione VPN Site to Site può essere sufficiente specificare il tipo di connessione (Lan to Lan) e il metodo di autenticazione.</p>
<p>Definiti questi parametri, e ammesso che tutto funzioni, le due reti sono connesse tra di loro a livello IP, per cui ogni protocollo che si poggia su IP può transitare tramite il tunnel e quindi viaggiare da una rete all&#8217;altra, posto che sia configurato il corretto instradamento sugli host di ogni rete.</p>
<h3>Configurazione degli apparati</h3>
<p>La configurazione dei parametri TCP/IP di base dei due apparati, secondo lo schema di Figura 1, è stata effettuata secondo le indicazioni fornite in un <a href="http://www.ricercheit.net/2008/01/20/configurazione-di-base-di-cisco-asa-5505/">precedente articolo</a>, per cui la diamo per scontata.</p>
<p>Come descritto in precedenza, per configurare la VPN IPSEC su ognuno dei due ASA bisogna impostare una ACL per consentire il traffico tra le due LAN, una policy ISAKMP, un transform set, una mappa crypto map e un tunnel group; la configurazione va effettuata su entrambi gli apparati perché il peer VPN IPSEC è unidirezionale.</p>
<p>Per prima cosa, impostiamo la ACL per il traffico IPSEC, in modo da abilitare il transito dalla rete LAN1 alla rete LAN2, e viceversa:</p>
<p>ASA-1</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">access-list lantolan extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0</pre></div></div>

<p>ASA-2</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">access-list lantolan extended permit ip 192.168.2.0 255.255.255.0 192.168.1.0 255.255.255.0</pre></div></div>

<p>Ora configuriamo il transform set, in cui andremo ad impostare un transform set che avrà come metodo di protezione la crittografia AES 128 bit, e come metodo di autenticazione esp-sha-hmac:</p>
<p>ASA-1</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">crypto ipsec transform-set VPNTest esp-aes esp-sha-hmac</pre></div></div>

<p>ASA-2</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">crypto ipsec transform-set VPNTest esp-aes esp-sha-hmac</pre></div></div>

<p>dove VPNTest è il nome dato arbitrariamente al transform set, esp-aes è il metodo di protezione e esp-sha-hmac è il metodo di autenticazione.</p>
<p>Adesso bisogna configurare la crypto map, secondo questa sintassi:</p>
<p>ASA-1</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">crypto map vpnTest 1 match address lantolan
crypto map vpnTest 1 set peer 172.16.3.2
crypto map vpnTest 1 set transform-set VPNTest
crypto map vpnTest interface outside</pre></td></tr></table></div>

<p>ASA-2</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">crypto map vpnTest 1 match address lantolan
crypto map vpnTest 1 set peer 172.16.3.1
crypto map vpnTest 1 set transform-set VPNTest
crypto map vpnTest interface outside</pre></td></tr></table></div>

<p>La configurazione, ovviamente, è praticamente identica in tutti e due i firewall. In questo caso, vpnTest è il nome assegnato alla mappa, identico per tutte e quattro le righe di configurazione della mappa; nella riga 1, indico qual è il traffico interessante per il mio peer IPSEC, identificato dalla ACL chiamata lantolan configurata in precedenza, nella riga 2 indico l&#8217;indirizzo del dispositivo col quale voglio instaurare il peer (nel mondo reale, l&#8217;IP pubblico del firewall posto sull&#8217;altro lato da collegare tramite VPN), nella riga 3 specifico il nome del transform set indicato in precedenza, in modo da specificare le impostazioni di protezione e autenticazione, ed infine nella riga 4 indico a quale interfaccia applicare la mappa.</p>
<p>Nelle righe da 1 a 3, la mappa vpnTest viene identificata col numero 1, che è un numero chiamato sequence number, utilizzato in caso si debbano applicare più mappe alla stessa interfaccia in presenza di più VPN sullo stesso apparato.</p>
<p>Configurata la mappa, bisogna impostare le policy ISAKMP in questo modo:</p>
<p>ASA-1</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">crypto isakmp enable outside
crypto isakmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 43200</pre></td></tr></table></div>

<p>ASA-2</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">crypto isakmp enable outside
crypto isakmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 43200</pre></td></tr></table></div>

<p>Com&#8217;è evidente, la configurazione è assolutamente identica su tutti e due i firewall, ed a parte l&#8217;impostazione del parametro lifetime, che può essere diverso su ognuno dei firewall, tutto deve essere identico su entrambi gli apparati, pena il mancato funzionamento della VPN.</p>
<p>La riga 1 indica l&#8217;abilitazione di isakmp sull&#8217;interfaccia outside, la riga 2 indica la configurazione dei parametri che compongono una policy isakmp identificata dal numero 1; indicando questo comando, si aprirà una nuova modalità di configurazione che riguarda l&#8217;impostazione della policy isakmp indicata, modalità che comporta anche il cambiamento del prompt, che assume una forma del tipo:</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">ASA-1(config-isakmp-policy)</pre></div></div>

<p>La riga 3 indica il tipo di autenticazione (in questo caso preshared key, il tipo più semplice di autenticazione), la riga 4 rappresenta il metodo di protezione (crittografia AES), la riga 5 indica l&#8217;algoritmo di hash, la riga 6 indica il tipo di gruppo Diffie-Hellman, mentre la riga 7 indica il timeout della connessione IPSEC, trascorso il quale la SA deve essere rinegoziata.</p>
<p>Infine, rimane da configurare il tunnel group in questo modo:</p>
<p>ASA-1</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">tunnel-group 172.16.3.2 type ipsec-l2l
tunnel-group 172.16.3.2 ipsec-attributes
pre-shared-key ChiaveCondivisa</pre></td></tr></table></div>

<p>ASA-2</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="text text" style="font-family:monospace;">tunnel-group 172.16.3.1 type ipsec-l2l
tunnel-group 172.16.3.1 ipsec-attributes
pre-shared-key ChiaveCondivisa</pre></td></tr></table></div>

<p>La riga 1 indica a quale indirizzo connettersi per instaurare la connessione VPN e il tipo di connessione IPSEC (nel nostro caso l2l che sta per LAN to LAN), la riga 2 indica il comando per specificare gli attributi della connessione IPSEC, che sono indicati dai comandi successivi (anche in questo caso, cambia il prompt), nel nostro caso, l&#8217;unico parametro da digitare riguarda la riga 3 che rappresenta la preshared key che consente di autenticarci sull&#8217;altro dispositivo. Penso sia ovvio a questo punto che le preshared key indicate nei due firewall debbano essere identiche.</p>
<p><b>Aggiornamento 25/08/2009</b></p>
<p>Ho dimenticato di specificare una cosa. Perché i pacchetti transitino tra una rete e l&#8217;altra, se è applicato il natting sul firewall (come accade molto spesso, visto che in genere questi firewall non si occupano solo di fare da endpoint per la VPN), è necessario che il traffico interessante non venga nattato. Per evitare questa cosa, è necessario specificare questo comando su entrambi gli ASA:</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">nat (inside) 0 access-list lantolan</pre></div></div>

<p>Se tutto è andato bene, è possibile provare a testare la connettività tra i due portatili con il comando ping. Se la VPN funziona, è possibile che il primo pacchetto vada perso a causa del tempo necessario ad instaurare la SA, ma i pacchetti successivi dovrebbero arrivare correttamente; inoltre, in caso di VPN correttamente funzionante, dovrebbe accendersi il led VPN posto in posizione frontale sull&#8217;ASA 5505.</p>
<h3>Troubleshooting di base sulle connessioni VPN IPSEC</h3>
<p>In caso di mancato funzionamento, è possibile effettuare un po&#8217; di troubleshooting cercando di capire per quale motivo la VPN non funziona; in questi casi, può essere utile digitare i due comandi indicati di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">debug crypto ipsec
debug crypto isakmp</pre></div></div>

<p>Con questi due comandi, in caso di problemi compaiono un sacco di messaggi sullo schermo, sta a noi isolare quei messaggi che possono realmente aiutarci a capire che sta avvenendo. Quando i messaggi diventano troppi (ed in genere succede presto), è possibile interrompere il logging a video coi comandi</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">no debug crypto ipsec
no debug crypto isakmp</pre></div></div>

<p>oppure, più semplicemente, col comando</p>

<div class="wp_syntax"><div class="code"><pre class="text text" style="font-family:monospace;">no debug all</pre></div></div>

<p>Tenere presente che, se ci sono dei problemi, spesso accade che le policy isakmp non sono identiche su entrambi i firewall.</p>
<p>Può anche accadere che la configurazione dei due ASA sia corretta ma che il traffico non arrivi a destinazione, in questi casi bisogna verificare che l&#8217;instradamento dei pacchetti verso l&#8217;altra rete avvenga correttamente, impostando il corretto router negli host della rete locale oppure utilizzando le opportune route statiche.</p>
<h3>Link di riferimento</h3>
<p><a title="Video tutorial sui passaggi riguardanti l'instaurazione di una VPN IPSEC LAN to LAN" href="https://www.cisco.com/web/learning/le31/le46/cln/qlm/CCNP/iscw/Site-to-Site-IPsec-VPN-Operation_3/player.html" onclick="pageTracker._trackPageview('/outgoing/www.cisco.com/web/learning/le31/le46/cln/qlm/CCNP/iscw/Site-to-Site-IPsec-VPN-Operation_3/player.html?referer=');">https://www.cisco.com/web/learning/le31/le46/cln/qlm/CCNP/iscw/Site-to-Site-IPsec-VPN-Operation_3/player.html</a></p>
<p><a href="http://www.openskill.info/infobox.php?ID=806" onclick="pageTracker._trackPageview('/outgoing/www.openskill.info/infobox.php?ID=806&amp;referer=');">http://www.openskill.info/infobox.php?ID=806</a></p>
<p><a href="http://www.assint.org/content/view/71/44/" onclick="pageTracker._trackPageview('/outgoing/www.assint.org/content/view/71/44/?referer=');">http://www.assint.org/content/view/71/44/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/08/24/vpn-site-to-site-ipsec-con-cisco-asa-5505/feed/</wfw:commentRss>
		</item>
		<item>
		<title>L&#8217;importanza di essere prudenti</title>
		<link>http://www.ricercheit.net/2009/08/23/limportanza-di-essere-prudenti/</link>
		<comments>http://www.ricercheit.net/2009/08/23/limportanza-di-essere-prudenti/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 21:02:27 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=357</guid>
		<description><![CDATA[Ho appena terminato di (ri)leggere Contact di Carl Sagan, un grandioso (secondo me) libro di fantascienza, in cui sintentizzando brutalmente, si narra del &#8220;contatto&#8221;, sotto forma di un &#8220;Messaggio&#8221; proveniente da Vega, della civiltà terrestre con una civiltà extraterrestre, che si rivelerà estremamente più progedita delle nostra; durante questo contatto, i Cinque che hanno il [...]]]></description>
			<content:encoded><![CDATA[<p>Ho appena terminato di (ri)leggere Contact di Carl Sagan, un grandioso (secondo me) libro di fantascienza, in cui sintentizzando brutalmente, si narra del &#8220;contatto&#8221;, sotto forma di un &#8220;Messaggio&#8221; proveniente da Vega, della civiltà terrestre con una civiltà extraterrestre, che si rivelerà estremamente più progedita delle nostra; durante questo contatto, i Cinque che hanno il privilegio di &#8220;colloquiare&#8221; con la cività extraterrestre, vengono a conoscenza di un ulteriore Messaggio contenuto all&#8217;interno dei decimali del pi greco e di altri numeri trascendenti (e ciò mi fa rimpiangere di aver dimenticato in modo pressoché completo tutta la matematica studiata alle superiori), cosa che fa pensare ad un intervento &#8220;divino&#8221; nella creazione celato in una cosa fondamentale come la matematica. La protagonista principale, Eleanor Arroway, riesce infine a scoprire dove si cela il messaggio, scoprendo una prova tangibile, a differenza di qualsiasi testo sacro di una qualsiasi religione, dell&#8217;esistenza del Creatore dell&#8217;Universo.</p>
<p>Tra le varie cose che mi hanno colpito in questo libro, vi è il personaggio di Sol Hadden, il quale è un geniale &#8220;inventore&#8221;, che si pone e cerca di risolvere il problema dell&#8217;immortalità, prima creando una sorta di &#8220;hotel spaziale&#8221;, poiché si presuppone che a gravità zero si possa vivere più a lungo, quindi, decide di fare un viaggio interplanetario facendo &#8220;catapultare&#8221; la propria astronave da Giove fino ad attraversare, con gli anni, vari sistemi solari, proseguendo il proprio viaggio ibernato (anche grazie al fatto che nelle profondità dello spazio la temperatura è di poco superiore allo zero assoluto) e aspettando di essere &#8220;scongelato&#8221; da una civiltà extraterrestre sufficientemente evoluta. Inizialmente Hadden aveva pensato di farsi catapultare dall&#8217;orbita di Saturno, ma mentre Giove poteva essere raggiunto in due anni, Saturno avrebbe richiesto quattro anni di viaggio, perché, &#8220;se si sta inseguendo l&#8217;immortalità, bisogna stare molto attenti&#8221;.</p>
<p>Questo accenno alla prudenza come strategia primaria per vivere a lungo, mi ha fatto tornare in mente Lazarus Long, l&#8217;affascinante personaggio descritto da Robert Heinlein (del quale ho ancora letto poco, in verità), grande autore della golden age della fantascienza americana. Anche Lazarus Long era una persona prudente, anche se sapeva correre dei rischi quando ne valeva la pena, e ciò gli ha consentito, oltre alle proprie peculiarità genetiche, di vivere per millenni. L&#8217;analogia della necessità della prudenza, che è una cosa allo stesso tempo frutto di un intelligente ragionamento e di un ancestrale senso pratico, mi ha fatto venire voglia di mettermi a leggere qualcosa di nuovo di Heinlein.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/08/23/limportanza-di-essere-prudenti/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Abilitare upload di file con FCKEditor su Drupal</title>
		<link>http://www.ricercheit.net/2009/08/21/abilitare-upload-di-file-con-fckeditor-su-drupal/</link>
		<comments>http://www.ricercheit.net/2009/08/21/abilitare-upload-di-file-con-fckeditor-su-drupal/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 20:57:10 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[CMS]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=350</guid>
		<description><![CDATA[Nell&#8217;articolo precedente, avevo scritto relativamente all&#8217;installazione del modulo Wysiwyg per poter integrare degli editor visuali per inserire contenuti sul CMS Drupal. In particolare, la mia attenzione si è focalizzata sull&#8217;editor FCKEditor, che avevo già usato in precedenza e col quale mi ero trovato bene.
Abilitando il modulo e quindi l&#8217;editor, si ha una buona integrazione dell&#8217;editor [...]]]></description>
			<content:encoded><![CDATA[<p>Nell&#8217;<a title="Articolo sull'installazione del modulo Wysiwyg su Drupal" href="http://www.ricercheit.net/2009/08/20/installare-il-modulo-wysiwyg-su-drupal/">articolo precedente</a>, avevo scritto relativamente all&#8217;installazione del modulo <a title="Home page del modulo Wysiwyg sul sito Drupal" href="http://drupal.org/project/wysiwyg" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/wysiwyg?referer=');">Wysiwyg</a> per poter integrare degli editor visuali per inserire contenuti sul CMS Drupal. In particolare, la mia attenzione si è focalizzata sull&#8217;editor <a title="Home page del progetto FCKEditor" href="http://www.fckeditor.net" onclick="pageTracker._trackPageview('/outgoing/www.fckeditor.net?referer=');">FCKEditor</a>, che avevo già usato in precedenza e col quale mi ero trovato bene.</p>
<p>Abilitando il modulo e quindi l&#8217;editor, si ha una buona integrazione dell&#8217;editor con il CMS, si ha però un problema, che consiste nell&#8217;impossibilità di effettuare l&#8217;upload di file e immagini con FCKEditor, poiché nell&#8217;inserimento di link e immagini non compaiono proprio pulsanti e schede per caricare i file.</p>
<p>Il problema è dovuto ad un misto di parametri da sistemare sia su FCKEditor, sia Wysiwyg. Per prima cosa, sistemiamo le impostazioni di FCKEditor, andando ad editare il file /root-del-sito/sites/all/libraries/fckeditor/editor/filemanager/connectors/php/config.php, dove le seguenti tre righe dovranno avere questo contenuto:</p>

<div class="wp_syntax"><div class="code"><pre class="php php" style="font-family:monospace;"><span style="color: #000088;">$Config</span><span style="color: #009900;">&#91;</span><span style="">'Enabled'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">true</span> ;
<span style="color: #000088;">$Config</span><span style="color: #009900;">&#91;</span><span style="">'UserFilesPath'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="">'/sites/default/files/'</span> ;
<span style="color: #000088;">$Config</span><span style="color: #009900;">&#91;</span><span style="">'UserFilesAbsolutePath'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="">'/percorso/assoluto/del/sito/sites/default/files/'</span> ;</pre></div></div>

<p>In particolare è importante la terza riga, in cui il contenuto non va lasciato vuoto, salvo ottenere un messaggio di errore quando si tenta di effettuare l&#8217;upload come indicato <a title="Messaggio d'errore di FCKEditor" href="http://drupal.org/node/284309" onclick="pageTracker._trackPageview('/outgoing/drupal.org/node/284309?referer=');">qui</a>; in questa riga, va inserito il percorso assoluto della directory scelta per ospitare i file caricati dagli utenti, stessa cosa per la seconda riga dove però va inserito il percorso relativo e non quello assoluto. Dopo aver salvato il file config.php, mi ero aspettato che l&#8217;upload di file funzionasse&#8230; ma non è così. <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Per abilitare il caricamento di file sul nostro sito gestito con Drupal, bisogna abilitare l&#8217;upload anche nelle impostazioni di FCKEditor memorizzate nel file di configurazione specifico per il modulo Wysiwyg; editare quindi il file /root-del-sito/modules/wysiwyg/editors/fckeditor.inc e impostare in questo modo le seguenti righe (che dovrebbero comparire poco dopo la riga 100):</p>

<div class="wp_syntax"><div class="code"><pre class="php php" style="font-family:monospace;"><span style="">'LinkBrowser'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span>
<span style="">'LinkUpload'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span>
<span style="">'ImageBrowser'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span>
<span style="">'ImageUpload'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span>
<span style="">'FlashBrowser'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span>
<span style="">'FlashUpload'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span></pre></div></div>

<p>Io, a dire il vero, ho lasciato le impostazioni relative a Flash a FALSE, poiché non c&#8217;è pericolo che utilizzi animazioni Flash&#8230; <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>Dopo aver salvato il file (e magari svuotato la cache del browser per sicurezza), è possibile testare la corretta configurazione del modulo provando ad inserire un contenuto al cui interno caricare un file, e verificare se l&#8217;upload di file e immagini funziona.</p>
<h3>Link di riferimento</h3>
<p><a title="Pagina sul sito Drupal che descrive la soluzione al problema di integrazione di Wysiwyg e FCKEditor" href="http://drupal.org/node/506420" onclick="pageTracker._trackPageview('/outgoing/drupal.org/node/506420?referer=');">Wysiwyg and fckeditor - problems with image upload and browse server</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/08/21/abilitare-upload-di-file-con-fckeditor-su-drupal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installare il modulo Wysiwyg su Drupal</title>
		<link>http://www.ricercheit.net/2009/08/20/installare-il-modulo-wysiwyg-su-drupal/</link>
		<comments>http://www.ricercheit.net/2009/08/20/installare-il-modulo-wysiwyg-su-drupal/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 18:00:31 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[CMS]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=346</guid>
		<description><![CDATA[Sto continuando a giocare con Drupal, in particolare, per creare contenuti, esiste solo un editor di testi assolutamente spartano, che si riduce ad una semplice casella di testo (textarea) in cui inserire il testo del nostro contenuto. Se vogliamo utilizzare con Drupal un editor visuale più o meno evoluto, è possibile installare un modulo ad [...]]]></description>
			<content:encoded><![CDATA[<p>Sto continuando a giocare con <a title="Sito ufficiale di Drupal" href="http://drupal.org/" onclick="pageTracker._trackPageview('/outgoing/drupal.org/?referer=');">Drupal</a>, in particolare, per creare contenuti, esiste solo un editor di testi assolutamente spartano, che si riduce ad una semplice casella di testo (textarea) in cui inserire il testo del nostro contenuto. Se vogliamo utilizzare con Drupal un editor visuale più o meno evoluto, è possibile installare un modulo ad hoc, <a title="Home page del modulo Wysiwyg per Drupal" href="http://drupal.org/project/wysiwyg" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/wysiwyg?referer=');">Wysiwyg</a>, che consente di poter scaricare ed installare diversi editor visuali da integrare in Drupal.</p>
<p>L&#8217;installazione è molto semplice, basta installare il pacchetto dalla <a title="Home page del modulo Wysiwyg per Drupal" href="http://drupal.org/project/wysiwyg" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/wysiwyg?referer=');">pagina dedicata a Wysiwyg</a>, quindi va scompattato nella directory modules, assicurandoci che il contenuto vada a finire nella cartella wysiwyg. Se si ha a disposizione sul server web una shell Linux, basta posizionarci nella directory modules dell&#8217;installazione di Drupal e digitare i seguenti comandi:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>ftp.drupal.org<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>projects<span style="color: #000000; font-weight: bold;">/</span>wysiwyg-6.x-2.0.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> wysiwyg-6.x-2.0.tar.gz</pre></div></div>

<p>dove al posto di wysiwyg-6.x-2.0.tar.gz va indicata la versione corrente del pacchetto (che è quella indicata sopra al momento della stesura dell&#8217;articolo).</p>
<p>Scompattato il file, andare sul pannello di amministrazione di Drupal alla voce Amministra, Configurazione del sito, Wysiwyg, dopodiché scorrere l&#8217;elenco e scegliere l&#8217;editor visuale preferito tra quelli elencati, che sono, ovviamente, tutti supportati, quindi cliccare sul link Download a fianco del nome dell&#8217;editor e scaricare il relativo pacchetto compresso, nel mio caso FCKEditor, e scompattarlo all&#8217;interno della directory sites/all/libraries (se non esiste, va creata), avendo cura di controllare che la directory creata che contiene i file scompattati, abbia il nome corretto dell&#8217;editor senza numeri di versione (nel mio caso, fckeditor), come indicato chiaramente nelle <a title="Manuale d'installazione del modulo Wysiwyg per Drupal" href="http://drupal.org/node/371459" onclick="pageTracker._trackPageview('/outgoing/drupal.org/node/371459?referer=');">istruzioni di installazione di Wysiwyg</a>; avendo a disposizione la shell, posizionarsi all&#8217;interno della directory sites/all/libraries e digitare:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>downloads.sourceforge.net<span style="color: #000000; font-weight: bold;">/</span>project<span style="color: #000000; font-weight: bold;">/</span>fckeditor<span style="color: #000000; font-weight: bold;">/</span>FCKeditor<span style="color: #000000; font-weight: bold;">/</span>2.6.4.1<span style="color: #000000; font-weight: bold;">/</span>FCKeditor_2.6.4.1.tar.gz
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzf</span> FCKeditor_2.6.4.1.tar.gz</pre></div></div>

<p>Fatto ciò, tornare su Drupal, sempre nella pagina del modulo Wysiwyg, quindi selezionare l&#8217;editor appena installato sia per il formato input Full HTML che Filtered HTML, salvare le modifiche e verificare che l&#8217;editor funzioni correttamente. Eventualmente, tornare nella pagina di Wysiwyg e, tramite i link Modifica a fianco di Full HTML e Filtered HTML, modificare le impostazioni dell&#8217;editor predefinito.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/08/20/installare-il-modulo-wysiwyg-su-drupal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installare la traduzione italiana su Drupal</title>
		<link>http://www.ricercheit.net/2009/08/19/installare-la-traduzione-italiana-su-drupal/</link>
		<comments>http://www.ricercheit.net/2009/08/19/installare-la-traduzione-italiana-su-drupal/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:33:35 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[CMS]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=341</guid>
		<description><![CDATA[Ieri ho cominciato a giocare un po&#8217; con Drupal, un noto CMS open source, quindi, dopo averlo installato seguendo le indicazioni dell&#8217;esaustiva documentazione a riguardo, mi sono trovato di fronte al problema della lingua, poiché avevo installato Drupal in inglese, mentre avrei gradito avere l&#8217;area amministrativa ed il sito in lingua italiana.
Per raggiungere lo scopo, [...]]]></description>
			<content:encoded><![CDATA[<p>Ieri ho cominciato a giocare un po&#8217; con <a title="Sito ufficiale di Drupal" href="http://drupal.org/" onclick="pageTracker._trackPageview('/outgoing/drupal.org/?referer=');">Drupal</a>, un noto CMS open source, quindi, dopo averlo installato seguendo le indicazioni <a title="Guida all'installazione di Drupal 6" href="http://drupal.org/getting-started/install" onclick="pageTracker._trackPageview('/outgoing/drupal.org/getting-started/install?referer=');">dell&#8217;esaustiva documentazione</a> a riguardo, mi sono trovato di fronte al problema della lingua, poiché avevo installato Drupal in inglese, mentre avrei gradito avere l&#8217;area amministrativa ed il sito in lingua italiana.</p>
<p>Per raggiungere lo scopo, dopo aver installato Drupal (tenere presente che è possibile installare la traduzione italiana durante l&#8217;installazione di Drupal, io ho preferito farlo dopo l&#8217;installazione), bisogna abilitare il modulo Locale, andando, nell&#8217;interfaccia di amministrazione, sul menu di sinistra alla voce Administer, Site Building, Modules, quindi, spuntare la voce Locale e cliccare su Save configuration per salvare le modifiche.</p>
<p>A questo punto, è possibile scaricare due tipi di traduzioni, io ho scelto di scaricare il file monolitico con la traduzione in italiano chiamato drupal-all-it.po dal sito di <a title="File della traduzione italiana di Drupal" href="http://www.drupalitalia.org/node/3" onclick="pageTracker._trackPageview('/outgoing/www.drupalitalia.org/node/3?referer=');">Drupalitalia.org</a> invece della traduzione &#8220;completa&#8221;, suddivisa in più directory e file; scaricato il file, andare, tramite il menu sulla sinistra, alla voce Administer, Site building, Translate interface, poi, su questa pagina, cliccare sul menu in alto la voce Import, si aprirà una pagina in cui si trova il campo Language file, dove vado a selezionare il file drupal-all-it.po scaricato precedentemente, ed il campo Import into, dove selezionare la lingua corrispondente al pacchetto di traduzione (nel mio caso, Italian), e poi cliccare sul pulsante Import, che importerà il file drupal-all-it.po ed aggiungerà la lingua italiana a Drupal.</p>
<p>Giunti qui, andare, tramite il menu di navigazione del pannello di amministrazione, sulla voce Administer, Site configuration, Languages, dove si trovano le due lingue installate, cioè English e Italian, selezionare la casella Default in corrispondenza della riga Italian e quindi cliccare su Save configuration; il nostro sito comparirà tradotto in italiano sia nel pannello di amministrazione, sia nel sito vero e proprio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/08/19/installare-la-traduzione-italiana-su-drupal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Non vengono sincronizzati i nuovi messaggi di posta con Exchange ActiveSync</title>
		<link>http://www.ricercheit.net/2009/07/23/non-vengono-sincronizzati-i-nuovi-messaggi-di-posta-con-exchange-activesync/</link>
		<comments>http://www.ricercheit.net/2009/07/23/non-vengono-sincronizzati-i-nuovi-messaggi-di-posta-con-exchange-activesync/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 16:35:40 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Exchange]]></category>

		<category><![CDATA[Mail Server]]></category>

		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=337</guid>
		<description><![CDATA[Scenario
Su una rete con un dominio Microsoft Windows Server 2003, con un&#8217;organizzazione Exchange Server 2003, è stato abilitato il Push Direct per la sincronizzazione di un dispositivo mobile (PDA, Smartphone, ecc&#8230;) tramite Exchange ActiveSync. Nella situazione che ho affrontato, il client ActiveSync è un Nokia N73 con installato MailForExchange, anche se in questa situazione il [...]]]></description>
			<content:encoded><![CDATA[<h3>Scenario</h3>
<p>Su una rete con un dominio Microsoft Windows Server 2003, con un&#8217;organizzazione Exchange Server 2003, è stato abilitato il Push Direct per la sincronizzazione di un dispositivo mobile (PDA, Smartphone, ecc&#8230;) tramite Exchange ActiveSync. Nella situazione che ho affrontato, il client ActiveSync è un Nokia N73 con installato MailForExchange, anche se in questa situazione il client utilizzato non ha nessuna importanza.</p>
<h3>Problema</h3>
<p>Lo scenario sopra riportato, funziona perfettamente, tranne che per un piccolissimo dettaglio: le mail nuove, non ancora lette, non vengono sincronizzate con il client, ovvero, Nokia MailForExchange non sincronizza i messaggi fino a quando questi non sono letti in un altro modo, cioé tramite Outlook oppure OWA; dal punto di vista dell&#8217;utente non è molto comodo. La configurazione di Exchange e di MailForExchange è stata rivista e rivoltata fino allo sfinimento, senza trovare una soluzione funzionante, anche perché, alla fine, non era lì il problema&#8230;</p>
<h3>Soluzione</h3>
<p>Non essendoci problemi nella configurazione, rimane qualcosa di esterno alle applicazioni utilizzate; infatti, una volta disabilitato Trend Micro ScanMail for Exchange, la sincronizzazione dei messaggi funziona in tutte le situazioni, sia con i vecchi che con i nuovi messaggi. Una volta individuato il responsabile, bisogna metterlo in condizione di non nuocere, ma a quel punto, la ricerca della soluzione al problema diventa abbastanza semplice; grazie a Google, ho potuto verificare che il problema consiste nell&#8217;aggiornamento di Trend Micro ScanMail for Exchange dalla versione 7 alla versione 8, il quale lascia una voce di registro chiamata VirusScanProactiveScanning in queste chiavi (i numeri dopo Private- e Public- sono puramente indicativi):</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\&lt;servername&gt;\Private-3484c833-f074-4793-97a0-0bbbcdbb7c75</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\&lt;servername&gt;\Public-a785d57d-8a08-44ce-86c4-04bfea4691e5</p>
<p>per eliminare il problema basta cancellare la voce di registro incriminata e riavviare i servizi di ScanMail, a questo punto, il problema è risolto e possiamo goderci la nostra mail push sul telefonino.</p>
<h3>Link di riferimento</h3>
<p><a title="Thread di un forum Microsoft Technet con la soluzione al problema prospettato" href="http://social.technet.microsoft.com/Forums/en-US/exchangesvrmobility/thread/f37095ac-3e52-474e-9467-46872242469e" onclick="pageTracker._trackPageview('/outgoing/social.technet.microsoft.com/Forums/en-US/exchangesvrmobility/thread/f37095ac-3e52-474e-9467-46872242469e?referer=');">http://social.technet.microsoft.com/Forums/en-US/exchangesvrmobility/thread/f37095ac-3e52-474e-9467-46872242469e</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/07/23/non-vengono-sincronizzati-i-nuovi-messaggi-di-posta-con-exchange-activesync/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Configurare indirizzo IP e porte d&#8217;ascolto di Apache</title>
		<link>http://www.ricercheit.net/2009/07/21/configurare-indirizzo-ip-e-porte-dascolto-di-apache/</link>
		<comments>http://www.ricercheit.net/2009/07/21/configurare-indirizzo-ip-e-porte-dascolto-di-apache/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 20:27:33 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Debian / Ubuntu]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Server WEB]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=331</guid>
		<description><![CDATA[Lo appunto qui così non mi dimentico.
E&#8217; possibile configurare Apache 2 sotto Debian Lenny per fare rimanere il web server in ascolto su determinate porte e su determinati indirizzi IP, tramite la direttiva Listen. Questa direttiva (o più direttive Listen), in Debian è presente nel file di configurazione /etc/apache2/ports.conf, che viene richiamato tramite una direttiva [...]]]></description>
			<content:encoded><![CDATA[<p>Lo appunto qui così non mi dimentico.</p>
<p>E&#8217; possibile configurare Apache 2 sotto Debian Lenny per fare rimanere il web server in ascolto su determinate porte e su determinati indirizzi IP, tramite la direttiva Listen. Questa direttiva (o più direttive Listen), in Debian è presente nel file di configurazione /etc/apache2/ports.conf, che viene richiamato tramite una direttiva include dal file principale di configurazione di Apache, /etc/apache2/apache2.conf.</p>
<p>Ad esempio, avendo un server web Debian Lenny con Apache 2, con due indirizzi IP come indicato di seguito:</p>
<p>IP1: 192.168.1.1<br />
IP2: 5.6.7.8</p>
<p>se voglio che il server rimanga in ascolto su tutti e due gli indirizzi sulla porta 80, mi basta lasciare la direttiva predefinita indicata come di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">Listen <span style="color: #000000;">80</span></pre></div></div>

<p>la quale indica che Apache rimane in ascolto su tutte le interfacce di rete sulla porta 80. Se invece desidero che Apache rimanga in ascolto solamente sull&#8217;IP2 sulla porta 80, il contenuto del file ports.conf sarà il seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">Listen 5.6.7.8:<span style="color: #000000;">80</span></pre></div></div>

<p>Se invece ho l&#8217;esigenza di avere Apache in ascolto su entrambi gli indirizzi IP, ma su porte diverse, il file ports.conf si presenterà così:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">Listen 192.168.1.1:<span style="color: #000000;">80</span>
Listen 5.6.7.8:<span style="color: #000000;">8080</span></pre></div></div>

<p>Dopo ogni modifica al file ports.conf, devo far ripartire Apache con il comando</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></div></div>

<p>per applicare le modifiche effettuate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/07/21/configurare-indirizzo-ip-e-porte-dascolto-di-apache/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Similitudini ardite</title>
		<link>http://www.ricercheit.net/2009/06/17/similitudini-ardite/</link>
		<comments>http://www.ricercheit.net/2009/06/17/similitudini-ardite/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 21:18:21 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=318</guid>
		<description><![CDATA[Alcuni giorni fa, ho finito di rileggere per l&#8217;ennesima volta Dune (attenzione, contiene la trama del libro), in cui, in un passaggio del libro, Paul Muad&#8217;Dib - Usul, risvegliatosi dal coma dopo aver bevuto l&#8217;Acqua della Vita, pretende dalla madre Jessica di poter vedere quel luogo interiore dove le Reverende Madri non possono accedere, e [...]]]></description>
			<content:encoded><![CDATA[<p>Alcuni giorni fa, ho finito di rileggere per l&#8217;ennesima volta <a title="Dune su Wikipedia" href="http://it.wikipedia.org/wiki/Dune_(romanzo)" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/Dune_romanzo?referer=');">Dune</a> (attenzione, contiene la trama del libro), in cui, in un passaggio del libro, Paul Muad&#8217;Dib - Usul, risvegliatosi dal coma dopo aver bevuto l&#8217;Acqua della Vita, pretende dalla madre Jessica di poter vedere quel luogo interiore dove le Reverende Madri non possono accedere, e la cui visione è consentita solamente allo Kwisatz Haderach, quale è Paul. Dopo aver giocoforza &#8220;condotto&#8221; Paul in quel luogo, Jessica spaventata si ritira e le Reverende Madri (o meglio, la loro memoria presente in Jessica) che l&#8217;hanno preceduta, sconvolte, si chiedono: &#8220;<em>Che cosa è stato? Che cosa è accaduto?</em>&#8220;.</p>
<p>Questo passaggio mi è venuto in mente ieri, quando ho appreso che, a causa di un intervento maldestro di un sedicente tecnico, il quale, montando un server in un armadio rack ed un UPS, ha collegato l&#8217;UPS a valle di un altro UPS preesistente, che, sottoposto a carico troppo elevato, ha fatto il botto, per cui, tra le altre cose, si è spento un server VMWare ESXi con installate quattro macchine virtuali.</p>
<p>Al riavvio del server, si trattava di far partire le macchine virtuali, ed è stato lì che ho pensato che le quattro macchine virtuali, una volta avviate potessero dire: &#8220;<em>Che cosa è stato? Che cosa è accaduto?</em>&#8220;.</p>
<p>Ho bisogno di ferie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/06/17/similitudini-ardite/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ricerche IT secondo classificato a Miglior Blog Tecnico</title>
		<link>http://www.ricercheit.net/2009/06/16/314/</link>
		<comments>http://www.ricercheit.net/2009/06/16/314/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 21:19:23 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=314</guid>
		<description><![CDATA[Dopo lungo silenzio, dovuto a diversi impegni, ritorno a scrivere sul blog nel segno della più sfrenata autoreferenzialità, per segnalare che ieri sono stati proclamati i vincitori della competizione Miglior Blog Tecnico, ed ho appreso, con somma sorpresa, di essere arrivato secondo nella valutazione della giuria! Gli altri classificati sono Levysoft di Antonio Troise, che [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo lungo silenzio, dovuto a diversi impegni, ritorno a scrivere sul blog nel segno della più sfrenata autoreferenzialità, per segnalare che ieri sono stati proclamati i vincitori della competizione <a title="Miglior Blog Tecnico" href="http://www.migliorblogtecnico.net/" onclick="pageTracker._trackPageview('/outgoing/www.migliorblogtecnico.net/?referer=');">Miglior Blog Tecnico</a>, ed <a title="Proclamazione dei vincitori" href="http://www.migliorblogtecnico.net/2009/06/la-proclamazione-dei-vincitori-della-prima-edizione-di-miglior-blog-tecnico/" onclick="pageTracker._trackPageview('/outgoing/www.migliorblogtecnico.net/2009/06/la-proclamazione-dei-vincitori-della-prima-edizione-di-miglior-blog-tecnico/?referer=');">ho appreso</a>, con somma sorpresa, di essere arrivato secondo nella valutazione della giuria! Gli altri classificati sono <a title="Blog Levysoft di Antonio Troise" href="http://www.levysoft.it/" onclick="pageTracker._trackPageview('/outgoing/www.levysoft.it/?referer=');">Levysoft</a> di Antonio Troise, che ha vinto la competizione, e <a title="Google Analytics in 30 secondi" href="http://www.goanalytics.info/" onclick="pageTracker._trackPageview('/outgoing/www.goanalytics.info/?referer=');">Google Analytics in 30 secondi</a> di Marco Cilia, che si è classificato al terzo posto, a cui faccio i miei complimenti!</p>
<p>Per me è un risultato assolutamente inaspettato, che penso sia arrivato soprattutto per l&#8217;originalità dei contenuti che ho voluto proporre, come era indicato chiaramente nei criteri di valutazione della competizione, così come penso sia stato per gli altri blog primi classificati.</p>
<p>Devo anche dire che tempo fa, avevo dato un&#8217;occhiata ad alcuni blog che si erano iscritti alla competizione, e purtroppo alcuni di questi, secondo me molto validi, non hanno indicato i post in competizione, ed è un peccato perché penso avrebbero potuto insidiare le prime posizioni.</p>
<p>Un po&#8217; a me dispiace non avere qualche dettaglio in più sulle valutazioni espresse, soprattutto per capire, per ciò che mi riguarda, cosa è piaciuto di più e cosa meno dei post oggetto di valutazione, ma posso comprendere la scelta della giuria, che si troverebbe probabilmente a dover rispondere ad una marea di domande, e forse ad esporsi a qualche polemica, di cui immagino i giurati non sentano proprio il bisogno. <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Da quanto ho letto, sembra si terrà prossimamente un&#8217;altra edizione della competizione, che a me sembra molto utile per far emergere blog &#8220;piccoli&#8221; e meno piccoli che propongono contenuti molto interessanti anche se un po&#8217; di nicchia.</p>
<p>Alla prossima edizione!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/06/16/314/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gestire alias e domini virtuali con Postfix</title>
		<link>http://www.ricercheit.net/2009/01/25/gestire-alias-e-domini-virtuali-con-postfix/</link>
		<comments>http://www.ricercheit.net/2009/01/25/gestire-alias-e-domini-virtuali-con-postfix/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 14:16:58 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Debian / Ubuntu]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Mail Server]]></category>

		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=279</guid>
		<description><![CDATA[Panoramica
Nel precedente articolo riguardante la posta elettronica su Linux (le cui avvertenze valgono anche per il presente post), è stato creato un mail server in grado di gestire un unico dominio di posta. Accade però piuttosto spesso di dover gestire più domini di posta, per cui, o si installa un mail server per ogni dominio [...]]]></description>
			<content:encoded><![CDATA[<h3>Panoramica</h3>
<p>Nel <strong><a title="Articolo sul server mail Postfix e Dovecot" href="http://www.ricercheit.net/2009/01/01/server-di-posta-basilare-con-postfix-e-dovecot/">precedente articolo</a></strong> riguardante la posta elettronica su Linux (le cui avvertenze valgono anche per il presente post), è stato creato un mail server in grado di gestire un unico dominio di posta. Accade però piuttosto spesso di dover gestire più domini di posta, per cui, o si installa un mail server per ogni dominio (cosa che avrebbe un senso solo in caso di alto traffico), oppure, si fanno convivere sullo stesso server di posta più domini, che in caso di realtà medio-piccole è la soluzione ideale. Un&#8217;altra casistica non contemplata nel precedente articolo riguarda le liste di distribuzione, cioé la possibilità di avere un indirizzo di posta che recapiti il messaggio ricevuto su più caselle postali. Per questi test faremo riferimento all&#8217;<a title="Ambiente di test" href="http://www.ricercheit.net/2008/12/26/ambiente-di-test/"><strong>ambiente di test descritto in precedenza</strong></a>, dove verrà utilizzato il mail server di test Titano, il quale gestisce il dominio urano.mail; tenere presente che dobbiamo creare le zone DNS relative ai domini virtuali utilizzati nel server DNS Windows Server 2003 DCServer.</p>
<h3>Alias e domini virtuali</h3>
<p>Per poter gestire la posta di più domini, è necessario definire, oltre al già citato urano.mail (indicato nella direttiva mydestination del file di configurazione /etc/postfix/postfix.conf) che sarà il dominio locale, anche i cosidetti domini virtuali, che corrispondono ai domini che dovremo gestire. A questo punto, è utile distinguere i domini locali dai domini virtuali: nel nostro caso, abbiamo un dominio locale, urano.mail, in cui, ad ogni utente creato sul sistema, corrisponde una casella di posta elettronica; in questo contesto, l&#8217;utilizzo di un dominio virtuale, ci consente di definire degli indirizzi di posta con dominio diverso da quello locale, che vengono mappati su una casella di posta elettronica del dominio locale, e che vengono quindi definiti alias virtuali.</p>
<p>Supponiamo, ad esempio, che il nostro mail server debba gestire i domini virtuali miranda.mail, ariel.mail e umbriel.mail; per farlo, dovremo dire a Postfix che intendiamo agire da server SMTP anche per questi domini, come mostrato di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">virtual_alias_domains = miranda.mail ariel.mail umbriel.mail</pre></div></div>

<p>Ora, dobbiamo inserire nel file di configurazione di Postfix (main.cf) il percorso del file in cui è contenuta la mappa con gli alias virtuali, in cui, ad una casella di posta locale, corrispondono uno o più indirizzi appartenenti ai domini virtuali definiti poc&#8217;anzi:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">virtual_alias_maps = <span style="color: #7a0874; font-weight: bold;">hash</span>:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>virtual</pre></div></div>

<p>Definito il file della mappa degli alias virtuali, dobbiamo creare il file stesso ed editarlo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>virtual
<span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>virtual</pre></div></div>

<p>Il file va creato seguendo uno stile preciso, come mostrato di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">h.mallow<span style="color: #000000; font-weight: bold;">@</span>miranda.mail       hober.mallow<span style="color: #000000; font-weight: bold;">@</span>urano.mail
s.hardin<span style="color: #000000; font-weight: bold;">@</span>ariel.mail         salvor.hardin<span style="color: #000000; font-weight: bold;">@</span>urano.mail
p.palver<span style="color: #000000; font-weight: bold;">@</span>umbriel.mail       preem.palver<span style="color: #000000; font-weight: bold;">@</span>urano.mail
s.gendibal<span style="color: #000000; font-weight: bold;">@</span>umbriel.mail     stor.gendibal<span style="color: #000000; font-weight: bold;">@</span>urano.mail</pre></div></div>

<p>Come si può vedere, nella colonna sinistra del file mettiamo gli alias virtuali, mentre nella colonna di destra, indichiamo a quale utente di sistema va recapitata la posta indirizzata a quello specifico alias virtuale. Ora dobbiamo creare la mappa vera e propria, tramite la &#8220;compilazione&#8221; in formato binario del file /etc/postfix/virtual, con il comando postmap:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">postmap <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>virtual</pre></div></div>

<p>che creerà il file /etc/postfix/virtual.db che sarà quello effettivamente usato da Postfix per l&#8217;interrogazione degli alias virtuali.</p>
<p>Così facendo, se spediamo ad esempio una mail a s.hardin@ariel.mail, questa verrà depositata fisicamente nella casella di posta salvor.hardin@urano.mail; ciò in alcune situazioni può andare bene, ma in altre situazioni, questo stato di cose potrebbe non andarci a genio, come in quei casi in cui vogliamo che le caselle di posta dei domini virtuali siano trattate come mailbox a sé stanti, e non legate agli utenti di sistema. Postfix permette di gestire anche queste casistiche, tramite le mailbox virtuali, che verranno esaminate in un articolo successivo.</p>
<h3>Liste di distribuzione tramite alias virtuali</h3>
<p>Tramite gli alias virtuali è possibile creare anche liste di distribuzione, ovvero indirizzi di posta elettronica virtuali che servono per reindirizzare i messaggi ricevuti dall&#8217;alias virtuale stesso agli indirizzi di posta specificati come destinatari del messaggio.</p>
<p>Vediamo un esempio: aggiungiamo una riga al file /etc/postfix/virtual come mostrato di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">oratori<span style="color: #000000; font-weight: bold;">@</span>umbriel.mail        p.palver<span style="color: #000000; font-weight: bold;">@</span>umbriel.mail, s.gendibal<span style="color: #000000; font-weight: bold;">@</span>umbriel.mail</pre></div></div>

<p>Come già specificato, sulla sinistra compare l&#8217;alias virtuale, sulla destra compaiono gli indirizzi di posta a cui vogliamo reindirizzare i messaggi ricevuti sull&#8217;indirizzo oratori@umbriel.mail; da notare che i diversi indirizzi devono essere separati da una virgola, e che, in questo caso i membri della lista di distribuzione sono a loro volta alias virtuali, ma potrebbero essere tranquillamente utenti di sistema.</p>
<p>Salvato il file, dobbiamo ricompilare il file /etc/postfix/virtual in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">postmap <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>virtual</pre></div></div>

<p>Ora possiamo testare il corretto funzionamento della lista di distribuzione, e se tutto va bene, inviando un messaggio all&#8217;indirizzo oratori@umbriel.mail, il messaggio arriverà ai due indirizzi p.palver@umbriel.mail e s.gendibal@umbriel.mail, i quali, essendo alias, non hanno una propria casella di posta e quindi il messaggio finirà effettivamente nelle caselle di posta preem.palver@urano.mail e stor.gendibal@urano.mail.</p>
<h3>Conclusioni</h3>
<p>In questo articolo abbiamo apportato qualche miglioramento al nostro server di posta basilare, ora possiamo gestire più domini sulla stessa macchina e possiamo gestire liste di distribuzione all&#8217;interno della nostra organizzazione. I metodi utilizzati possono essere utilizzati in piccole realtà, ma per ambienti più complessi, è bene utilizzare altre metodiche per raggiungere gli stessi risultati, che verranno illustrate in altri articoli sull&#8217;argomento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/01/25/gestire-alias-e-domini-virtuali-con-postfix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Integrare bookmarks di Delicious in pagina Wordpress</title>
		<link>http://www.ricercheit.net/2009/01/06/integrare-bookmarks-di-delicious-in-pagina-wordpress/</link>
		<comments>http://www.ricercheit.net/2009/01/06/integrare-bookmarks-di-delicious-in-pagina-wordpress/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 17:12:08 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=292</guid>
		<description><![CDATA[Fino ad oggi, avevo sul blog una pagina in cui avevo raccolto alcuni collegamenti ipertestuali a pagine con documentazione varia relativa alle tematiche di questo spazio. Questi link li ho tenuti aggiornati per un po&#8217;, dopodiché ho mollato lì la cosa, anche perché nel frattempo mi sono arrangiato con Google Reader, impostando i tag e [...]]]></description>
			<content:encoded><![CDATA[<p>Fino ad oggi, avevo sul blog <a title="Link utili presi dal mio account di Delicious" href="http://www.ricercheit.net/link-utili/"><strong>una pagina</strong></a> in cui avevo raccolto alcuni collegamenti ipertestuali a pagine con documentazione varia relativa alle tematiche di questo spazio. Questi link li ho tenuti aggiornati per un po&#8217;, dopodiché ho mollato lì la cosa, anche perché nel frattempo mi sono arrangiato con <a href="http://reader.google.com/" onclick="pageTracker._trackPageview('/outgoing/reader.google.com/?referer=');"><strong>Google Reader</strong></a>, impostando i tag e le stelle agli articoli dei blog che seguo per poterli poi ritrovare in caso di bisogno. Ma i blog del feed reader non sono la mia unica fonte di conoscenza, alle volte, cercando cose che mi interessano, mi imbatto in articoli interessanti che non meritano l&#8217;oblio, quindi ho deciso di aprire un account su <a title="Delicious - Home page" href="http://delicious.com/" onclick="pageTracker._trackPageview('/outgoing/delicious.com/?referer=');"><strong>Delicious</strong></a>, dove, alla bisogna, inserisco i bookmarks che ritengo meritevoli.</p>
<p>Oggi ho pensato ad una cosa: perché non sostituire i link utili nella pagina del blog con la lista dei bookmarks su Delicious? Bene, mi sono messo quindi alla ricerca di un plugin per Wordpress che mi permettesse di inserire la lista dei miei bookmarks di Delicious, peccato che la ricerca non abbia fornito l&#8217;esito sperato, infatti ciò che ho trovato io (ma può essere che mi sia sfuggito qualcosa) non risponde alla mia semplice esigenza, poiché ho letto solamente di plugin che permettono di inserire un certo numero di bookmarks in un widget sulla sidebar, cosa che ho provato a fare ma che ho levato subito con un moto di ribrezzo, poiché i link di quel tipo nella sidebar mi paiono decisamente inutili.</p>
<p>Cerca che ti ricerca, ho pensato di andare direttamente alla base, cioé sul sito di Delicious, dove ho trovato una simpatica pagina coi <a title="Tools di Delicious" href="http://delicious.com/help/tools" onclick="pageTracker._trackPageview('/outgoing/delicious.com/help/tools?referer=');"><strong>tools relativi a Delicious</strong></a>, tra cui vi sono <a title="Tool Linkrolls di Delicious" href="http://delicious.com/help/linkrolls" onclick="pageTracker._trackPageview('/outgoing/delicious.com/help/linkrolls?referer=');"><strong>Linkrolls</strong></a> e <a title="Tool Tagrolls di Delicious" href="http://delicious.com/help/tagrolls" onclick="pageTracker._trackPageview('/outgoing/delicious.com/help/tagrolls?referer=');"><strong>Tagrolls</strong></a>. Linkrolls consiste in un semplice script JavaScript, personalizzabile in base a vari parametri, con cui elencare un numero a piacere di bookmarks relativi al proprio account. Ciò era proprio quel che mi serviva, quindi lo provo e vedo che funziona alla perfezione, ma mi rendo subito conto che questa pletora di collegamenti ipertestuali è decisamente dispersiva.</p>
<p>A questo punto, rivolgo la mia attenzione su Tagrolls, che elenca la lista (o la tag cloud) dei tag utilizzati per categorizzare i propri bookmarks. Anche in questo caso, si tratta di uno script JavaScript che possiede diversi parametri personalizzabili (come l&#8217;ordinamento e l&#8217;aspetto); lo provo, e verifico che pure questo tool funziona perfettamente, ottenendo il risultato voluto.</p>
<p>Tutto bene quindi? Non proprio, perché, trattandosi di uno script JavaScript, chi naviga tenendo disabilitato l&#8217;interprete JavaScript, non visualizza un bel niente. Per risolvere il problema, ho pensato di fornire un contenuto alternativo tramite il tag &lt;noscript&gt;, in cui includere il link alla mia pagina su Delicious, così da non escludere chi preferisce navigare con JavaScript disabilitato.</p>
<p>Comunque, se qualcuno dei lettori volesse segnalare un metodo alternativo per gestire i bookmarks di Delicious, o un metodo più elegante riguardante il contenuto alternativo allo script JavaScript, lo può come sempre segnalare nei commenti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/01/06/integrare-bookmarks-di-delicious-in-pagina-wordpress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Server di posta basilare con Postfix e Dovecot</title>
		<link>http://www.ricercheit.net/2009/01/01/server-di-posta-basilare-con-postfix-e-dovecot/</link>
		<comments>http://www.ricercheit.net/2009/01/01/server-di-posta-basilare-con-postfix-e-dovecot/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 21:11:56 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Debian / Ubuntu]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Mail Server]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=260</guid>
		<description><![CDATA[Avvertenza
Questo articolo è stato redatto a scopo didattico e di test, per cui, si sconsiglia fortemente di adottare questa configurazione in ambiente di produzione, poiché non fornisce i necessari requisiti di sicurezza, a causa del tipo di installazione trattata e NON dei prodotti utilizzati.
Panoramica
In questo articolo verrà trattata l&#8217;installazione basilare di un server di posta [...]]]></description>
			<content:encoded><![CDATA[<h3>Avvertenza</h3>
<p><em>Questo articolo è stato redatto a scopo didattico e di test, per cui, si sconsiglia fortemente di adottare questa configurazione in ambiente di produzione, poiché non fornisce i necessari requisiti di sicurezza, a causa del tipo di installazione trattata e NON dei prodotti utilizzati.</em></p>
<h3>Panoramica</h3>
<p>In questo articolo verrà trattata l&#8217;installazione basilare di un server di posta elettronica su un server Debian Etch. La configurazione proposta rispecchia quella trattata nell&#8217;<a title="Ambiente di test" href="http://www.ricercheit.net/2008/12/26/ambiente-di-test/"><strong>ambiente di test</strong></a> precedentemente descritto, dove verrà preso come server di posta il server Titano, il quale ha l&#8217;indirizzo IP 192.168.1.11 e su cui verrà configurato il dominio di posta urano.mail. I prodotti scelti per questa installazione di test sono Postfix, che funge da MTA ed espone il servizio SMTP, e Dovecot, che verrà utilizzato per esporre i servizi POP3 ed IMAP4, per far sì che gli utenti della rete possano consultare la propria posta elettronica. Lo scambio di e-mail avverrà con il server Exchange DCServer (dominio giove.mail) e con il server Linux Giapeto (dominio saturno.mail), il quale verrà configurato allo stesso modo del server Titano.</p>
<h3>Cenni teorici</h3>
<p>In questo articolo, verranno usati software che permettono la trasmissione e la ricezione di messaggi di posta elettronica. Per scambiare i messaggi tra i vari mail server, il protocollo usato sulla rete Internet è SMTP (Simple Mail Transfer Protocol), il quale, come dice il nome, è responsabile della trasmissione, e ricezione, dei messaggi di posta elettronica tra server di posta. Il server SMTP passa il messaggio ricevuto al Mail Delivery Agent (MDA), che spesso diventa un Local Delivery Agent (LDA), il quale si occupa di depositare il messaggio nella casella di posta elettronica dell&#8217;utente locale.</p>
<p>L&#8217;archiviazione del messaggio ricevuto, per quanto concerne il mondo Linux / Unix, può avvenire principalmente in due formati, mbox e maildir. Mbox ha la peculiarità di archiviare tutti i messaggi di posta elettronica in un unico file per ogni utente, mentre maildir crea un file per ogni messaggio ricevuto. Entrambi i sistemi presentano vantaggi e svantaggi in termini di flessibilità e prestazioni; a mio parere lo svantaggio principale di mbox è il fatto che, usando un unico file monolitico per ogni casella, in caso di problemi si rischia di perdere l&#8217;intero contenuto della casella stessa, cosa che diventa molto più difficile utilizzando maildir.</p>
<p>Un MTA ha il compito di movimentare i messaggi di posta, ma non è in grado di presentarli in una qualche forma all&#8217;utente finale. Per raggiungere lo scopo, bisogna installare un server POP3 e/o IMAP4, protocolli che permettono di poter presentare i messaggi di posta in un formato riconoscibile ad una applicazione client installata sull&#8217;host dell&#8217;utente finale, chiamata client di posta elettronica o Mail User Agent (MUA). POP3 è un protocollo piuttosto datato che consente appunto la lettura della posta elettronica tramite un Mail User Agent, il quale normalmente si connette al server POP3 e scarica i messaggi cancellandoli dal server; tale comportamento è d&#8217;ostacolo per quegli utenti che debbono consultare la posta da diverse posizioni, oppure per quegli utenti che condividono l&#8217;utilizzo di una mailbox. Per ovviare a questi problemi, esiste il protocollo IMAP4, che mantiene i messaggi di posta sul server, in modo tale da metterli a disposizione a prescindere dalla posizione dalla quale ci si connette; inoltre, mantiene una connessione permanente tra client e server, con i vantaggi del caso, rendendosi quindi il protocollo da scegliere per utilizzi professionali del servizio di posta elettronica.</p>
<p>Nel nostro caso, useremo Postfix come MTA, archiviando la posta nel formato maildir, quindi utilizzeremo Dovecot come server IMAP e POP3 e Outlook e Windows Mail come MUA.</p>
<h3>Installazione e configurazione di Postfix</h3>
<p>Per installare i software che ci servono, utilizzeremo i pacchetti .deb della distribuzione, in modo da mantenere un ambiente coerente, rinunciando però alle ultime versioni dei software (che è la filosofia di Debian, orientata alla stabilità ed alla sicurezza). Riguardo all&#8217;installazione di Postfix, basta un semplice:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> postfix</pre></div></div>

<p>che richiede di specificare che tipo d&#8217;installazione di Postfix effettuare, noi sceglieremo &#8220;Sito Internet&#8221;, senza specificare uno smart host, poiché, nell&#8217;ambiente di test, non è necessario spedire mail al &#8220;mondo reale&#8221;:</p>
<div id="attachment_263" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/12/sceltapostfix.png"><img class="size-medium wp-image-263" title="Scelta installazione Postfix" src="http://www.ricercheit.net/wp-content/uploads/2008/12/sceltapostfix-300x204.png" alt="Figura 1 - Scelta installazione Postfix" width="300" height="204" /></a><p class="wp-caption-text">Figura 1 - Scelta installazione Postfix</p></div>
<p>dopodiché, ci verrà richiesto il dominio da utilizzare per la posta elettronica, noi indicheremo il dominio urano.mail, come mostrato in figura 2:</p>
<div id="attachment_264" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/12/dominiopostfix.png"><img class="size-medium wp-image-264" title="Scelta dominio server di posta" src="http://www.ricercheit.net/wp-content/uploads/2008/12/dominiopostfix-300x99.png" alt="Figura 2 - Scelta del dominio" width="300" height="99" /></a><p class="wp-caption-text">Figura 2 - Scelta del dominio</p></div>
<p>Ora Postfix è installato, si tratta di fare qualche piccolo aggiustamento alla configurazione. Per prima cosa, abilitiamo la rete LAN del server Titano a mandare posta tramite il nostro MTA aggiornando il parametro mynetworks nel file di configurazione /etc/postfix/main.cf, che diventerà così:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">mynetworks = 127.0.0.1<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> 192.168.1.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span></pre></div></div>

<p>Quindi aggiungiamo due parametri, che indicano la directory di spooling delle mail e il formato di archiviazione dei messaggi delle mailbox, scegliendo Maildir, che creerà una directory Maildir per ogni home directory presente sul sistema:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">queue_directory = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>spool<span style="color: #000000; font-weight: bold;">/</span>postfix
home_mailbox = <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>Maildir<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>Fatto questo, chiudiamo e salviamo il file /etc/postfix/main.cf, quindi possiamo far ripartire Postfix tramite il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>postfix restart</pre></div></div>

<p>Ora, possiamo creare gli utenti di sistema, che fungeranno anche da mailbox per il server di posta. Gli utenti non hanno bisogno di un accesso shell, per cui verrà fornita loro la shell /bin/false, e faranno parte del gruppo mail:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">useradd <span style="color: #660033;">-m</span> <span style="color: #660033;">-g</span> mail <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span> salvor.hardin
useradd <span style="color: #660033;">-m</span> <span style="color: #660033;">-g</span> mail <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">false</span> hober.mallow</pre></div></div>

<p>Ora possiamo provare a mandare una mail da un client di posta già configurato nell&#8217;ambiente di test all&#8217;indirizzo salvor.hardin@urano.mail, se tutto va come deve andare, dando il seguente comando</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>salvor.hardin<span style="color: #000000; font-weight: bold;">/</span>Maildir<span style="color: #000000; font-weight: bold;">/</span>new</pre></div></div>

<p>dovremmo vedere un file, ed aprendolo con un editor di testo, è possibile leggere il contenuto che altri non è che il testo della mail precedentemente inviata, comprese le intestazioni. A questo punto possiamo considerare terminata la configurazione di Postfix.</p>
<h3>Installazione e configurazione di Dovecot</h3>
<p>Per verificare il corretto funzionamento di Postfix, abbiamo consultato il file system del server Titano, ma per un utente &#8220;normale&#8221;, la cosa è alquanto scomoda. Si impone quindi l&#8217;installazione di un server POP3 - IMAP che consenta ad un qualsiasi client con installato un MUA di consultare la posta elettronica. La nostra scelta ricade su Dovecot, il quale ha la simpatica caratteristica di cercare di rendere semplice la propria configurazione e di supportare entrambi i formati di archiviazione della posta più diffusi, mbox e maildir. Per installare Dovecot ricorriamo al solito apt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> dovecot-common dovecot-popd dovecot-imapd</pre></div></div>

<p>Fatto questo, come per Postfix, anche con Dovecot dovremo fare qualche piccola modifica al file di configurazione, il cui percorso è /etc/dovecot/dovecot.conf. Per prima cosa, andremo a specificare quali protocolli rendere disponibili con Dovecot, impostando in questo modo la direttiva protocols:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">protocols = imap imaps pop3 pop3s</pre></div></div>

<p>Scendendo poco più giù nel file di configurazione, configureremo Dovecot in modo tale che accetti le password inviate dal client come testo in chiaro (ciò non è molto sicuro ma ci aiuta a semplificarci la vita in questo ambiente di test), impostando questa direttiva:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">disable_plaintext_auth = no</pre></div></div>

<p>Ora dobbiamo impostare il percorso in cui si trovano le caselle di posta ed il formato in cui sono archiviati, nel nostro caso maildir:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">mail_location = maildir:~<span style="color: #000000; font-weight: bold;">/</span>Maildir</pre></div></div>

<p>Il resto del file può essere lasciato invariato, quindi salviamo il file e riavviamo il demone Dovecot, tramite il solito</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>dovecot restart</pre></div></div>

<p>dopodiché possiamo testare il nostro server IMAP configurando un qualsiasi MUA che supporti il protocollo IMAP; io ad esempio, per velocità, ho testato Windows Mail, il client di posta predefinito di Windows Vista, che funziona senza problemi con il server IMAP Dovecot senza bisogno di accorgimenti particolari, se si esclude il fatto che a prima vista sembra non comparire la cartella Posta in arrivo; in questo caso, basta sottoscrivere la cartella Posta in arrivo, la quale comparirà immediatamente rendendo possibile leggere i messaggi presenti nella casella di posta in oggetto.</p>
<h3>Considerazioni personali sui MUA per Windows</h3>
<p>Siccome, per i miei test, avevo a disposizione Windows Mail, ho utilizzato quello. Ho testato altri client di posta, cominciando da Microsoft Outlook (quello compreso nella suite Office, per intenderci), ed i risultati sono stati sconfortanti. Utilizzando Outlook 2003 per connettermi in IMAP sul server di posta, per prima cosa sul server vengono create solo le cartelle Posta in arrivo e Posta indesiderata, per cui, tra le altre cose, non viene creata la cartella Posta inviata; se anche creiamo la cartella Posta inviata a mano, con Outlook 2003 non c&#8217;è modo di archiviare la posta inviata nella cartella sul server.</p>
<p>Inizialmente, non usando praticamente mai IMAP, pensavo che fosse un mio problema, invece, surfando sul Web, ho potuto constatare che si tratta di una &#8220;caratteristica&#8221; di Outlook, che è aggirabile solamente creando una regola ad hoc. Per me tutto ciò è delirante. Si comporta leggermente meglio invece Outlook 2007, che ha gli stessi difetti di Outlook 2003, ma il cui comportamento relativamente alla posta inviata è modificabile in modo semplice agendo sulla configurazione dell&#8217;account di posta. In <strong><a href="http://www.ilcava.it/2008/12/18/outlook-2003-2007-imap-posta-inviata/" onclick="pageTracker._trackPageview('/outgoing/www.ilcava.it/2008/12/18/outlook-2003-2007-imap-posta-inviata/?referer=');">questo articolo</a></strong> del blog ilcava.it è descritto come procedere in questi casi. Da quanto ho potuto vedere io, anche con Outlook 2007 la cartella Posta inviata va creata a mano.</p>
<p>A questo punto ho voluto provare anche Thunderbird per Windows, che si comporta decisamente meglio, infatti, basta configurare normalmente un account di posta, che crea solamente le cartelle Posta in arrivo e Cestino, ma al primo invio di un messaggio, viene creata automaticamente sul server la cartella Posta inviata, così come viene creata una cartella Drafts se si salva un messaggio come bozza. Come già segnalato, Windows Mail si comporta piuttosto bene con IMAP.</p>
<p>Non ho provato alcun MUA per Linux, ma immagino che non diano particolari problemi.</p>
<p>Se qualcuno tra i lettori ha qualche suggerimento relativamente a quanto scritto con l&#8217;utilizzo di Outlook con IMAP, ed in particolare dell&#8217;interazione tra Outlook e Dovecot, i commenti sono a disposizione.</p>
<h3>Conclusioni</h3>
<p>Dopo aver testato con successo il corretto funzionamento di Postfix e Dovecot, possiamo ritenere conclusi, per il momento, i nostri test. Come scritto nell&#8217;avvertenza all&#8217;inizio dell&#8217;articolo, questa configurazione è adatta solamente a scopi (auto)didattici, poiché, configurando in questo modo un server di posta, non abbiamo nessuna protezione contro i virus, contro lo spam e contro il phishing (anche se, soprattutto nell&#8217;ultimo caso, la miglior protezione l&#8217;abbiamo sopra le spalle, basta usarla), inoltre, non utilizziamo quegli strumenti (come database relazionali o LDAP) per definire domini virtuali e caselle di posta. In poche parole, questa configurazione è decisamente migliorabile, e questi passi in avanti saranno oggetto dei prossimi articoli sull&#8217;argomento.</p>
<h3>Link di riferimento</h3>
<ul>
<li><a title="Sito ufficiale di Postfix" href="http://www.postfix.org/" onclick="pageTracker._trackPageview('/outgoing/www.postfix.org/?referer=');">Postfix</a> (home page)</li>
<li><a title="Sito ufficiale di Dovecot" href="http://www.dovecot.org/" onclick="pageTracker._trackPageview('/outgoing/www.dovecot.org/?referer=');">Dovecot</a> (home page)</li>
<li><a title="Pagina di Wikipedia sul protocollo SMTP" href="http://it.wikipedia.org/wiki/SMTP" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/SMTP?referer=');">Protocollo SMTP</a> (Wikipedia)</li>
<li><a title="Pagina di Wikipedia sul protocollo POP3" href="http://it.wikipedia.org/wiki/POP3" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/POP3?referer=');">Protocollo POP3</a> (Wikipedia)</li>
<li><a title="Pagina di Wikipedia sul protocollo IMAP" href="http://it.wikipedia.org/wiki/IMAP" onclick="pageTracker._trackPageview('/outgoing/it.wikipedia.org/wiki/IMAP?referer=');">Protocollo IMAP</a> (Wikipedia)</li>
<li><a title="Pagina della documentazione Red Hat su MTA, MDA e MUA" href="https://www.europe.redhat.com/documentation/rhl8.0/rhl-rg-it-8.0/s1-email-types.php3" onclick="pageTracker._trackPageview('/outgoing/www.europe.redhat.com/documentation/rhl8.0/rhl-rg-it-8.0/s1-email-types.php3?referer=');">MTA, MDA, MUA</a> (Documentazione Red Hat Linux)</li>
<li><a title="Configurazione di base di Postfix" href="http://marcobuttignon.wordpress.com/2007/11/02/postfix-su-debiane-la-posta-la-facciamo-noi/" onclick="pageTracker._trackPageview('/outgoing/marcobuttignon.wordpress.com/2007/11/02/postfix-su-debiane-la-posta-la-facciamo-noi/?referer=');">Configurazione di Postfix</a> (Blog di Marco Buttignon)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2009/01/01/server-di-posta-basilare-con-postfix-e-dovecot/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ambiente di test</title>
		<link>http://www.ricercheit.net/2008/12/26/ambiente-di-test/</link>
		<comments>http://www.ricercheit.net/2008/12/26/ambiente-di-test/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 10:54:37 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Server]]></category>

		<category><![CDATA[rete]]></category>

		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=254</guid>
		<description><![CDATA[In questo articolo viene descritto l&#8217;ambiente di test che ho utilizzato e che ho migliorato in questi giorni per poter fare alcuni studi sul funzionamento della posta elettronica su Linux e su Windows, relativamente anche a temi come lo spam ed i virus; lo pubblico qui poiché farò spesso riferimento a questo post nei prossimi [...]]]></description>
			<content:encoded><![CDATA[<p>In questo articolo viene descritto l&#8217;ambiente di test che ho utilizzato e che ho migliorato in questi giorni per poter fare alcuni studi sul funzionamento della posta elettronica su Linux e su Windows, relativamente anche a temi come lo spam ed i virus; lo pubblico qui poiché farò spesso riferimento a questo post nei prossimi articoli. L&#8217;ambiente è mostrato in figura 1:</p>
<div class="mceTemp">
<div id="attachment_256" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/12/retetest1.png"><img class="size-medium wp-image-256" title="Ambiente di test" src="http://www.ricercheit.net/wp-content/uploads/2008/12/retetest1-300x154.png" alt="Ambiente di test" width="300" height="154" /></a><p class="wp-caption-text">Figura 1 - Ambiente di test</p></div>
</div>
<p>Per prima cosa, tutti i computer mostrati nell&#8217;immagine sono macchine virtuali che funzionano su VMWare Server, per cui l&#8217;ambiente è totalmente virtualizzato. Si può vedere che esistono due reti, la rete A e la rete B, che hanno questo indirizzamento:</p>
<ul>
<li>Rete A: 172.16.1.0/24</li>
<li>Rete B: 192.168.1.0/24</li>
</ul>
<p>Le due reti sono state ottenute tramite la funzionalità di Virtual Networking di VMWare Server, perciò, in condizioni normali, le due reti sono separate; in questo caso però, ad unire le due reti, è il firewall Linux, il quale in realtà non fa altro che mettere in comunicazione le due reti tra di loro senza alcun blocco, ma che può essere configurato a piacere con iptables per eventuali regole di restrizione delle comunicazioni di rete. Il firewall Linux inoltre funge da default gateway per ogni host delle due reti, e comunica col mondo Internet tramite il router che si interfaccia con la connessione ADSL, in questo modo, tutti i nodi delle due reti possono accedere alla Rete.</p>
<p>Su entrambe le reti è presente un controller di dominio Windows Server 2003 R2. Entrambi i domain controller fanno parte di un unico dominio (terminus.lan), anche se sono su due reti differenti, inoltre i due server sono posti su due siti Active Directory diversi, questo è utile per i miei test su DFS, che prima o poi dovrei portare a termine. Il domain controller DCServer (Rete A), funge anche da server Exchange, ed inoltre, funge da server DNS per tutti gli host delle due reti, poichè su quel server DNS ho configurato le zone per tutti i domini di posta dell&#8217;ambiente di test, definiti sia sul server Exchange sia sui server Linux. Il domain controller Coriolis (Rete B), oltre alle normali funzioni, funge da server SQL Server 2005, che in prima istanza tornerà utile come appoggio per il greylisting sul server Exchange.</p>
<p>Per quanto concerne i due server Linux, in un primo momento verranno configurati come server di posta su due domini separati, mentre più avanti, una volta presa confidenza con la funzionalità di mail server su Linux, configurerò uno dei due server come mail server di &#8220;frontiera&#8221;, che prenderà in carico la posta, la ripulirà da spam e virus, e quindi la passerà in carico o al server Linux o al server Exchange.</p>
<p>Per la parte client, c&#8217;è poco da dire, nel senso che basterà mettere i client su una delle due reti, fare il join al dominio e configurare i client di posta per accedere al mail server del caso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/12/26/ambiente-di-test/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gestire la stampa con Terminal Services</title>
		<link>http://www.ricercheit.net/2008/11/01/gestire-la-stampa-con-terminal-services/</link>
		<comments>http://www.ricercheit.net/2008/11/01/gestire-la-stampa-con-terminal-services/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 17:04:03 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Printing]]></category>

		<category><![CDATA[Server]]></category>

		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=223</guid>
		<description><![CDATA[Si consideri una rete aziendale con sedi distaccate, dove per i più svariati motivi, alcune applicazioni vengono utilizzate via Terminal Services su un server Windows Server 2003, utilizzando client Windows XP Professional o Windows Vista Business; in questo caso, è evidente che, quando si ha bisogno di stampare un qualsiasi documento, non è pratico mandare [...]]]></description>
			<content:encoded><![CDATA[<p>Si consideri una rete aziendale con sedi distaccate, dove per i più svariati motivi, alcune applicazioni vengono utilizzate via Terminal Services su un server Windows Server 2003, utilizzando client Windows XP Professional o Windows Vista Business; in questo caso, è evidente che, quando si ha bisogno di stampare un qualsiasi documento, non è pratico mandare la stampa su una stampante presente nella sede principale, dovranno essere utilizzate le stampanti presenti nella sede distaccata.</p>
<p>Gestire le stampanti con Windows Server 2003 con abilitati i Terminal Services può essere una cosa piuttosto antipatica; perché le cose funzionino bene, è necessario che sul server sia installato il driver della stampante installato sul client, in più, per essere certi di non avere problemi, se possibile, sarebbe ancor meglio utilizzare per le stampanti i driver Microsoft, e non i driver dei vari produttori delle stampanti.</p>
<p>Microsoft ha migliorato le cose con Windows Server 2008, dove, se ho capito bene il tutto, abilitando i Terminal Services, il server invia la coda di stampa al client sotto forma di file XPS, che quindi viene stampato dal client utilizzando lo spooler ed il driver del client, eliminando il problema; non sono sicuro che le cose funzionino proprio così, ma non dovrei essermi allontanato troppo dal vero. Questo meccanismo prende il nome di Easy Print.</p>
<p>Tornando a Windows Server 2003, se per l&#8217;accesso ai servizi Terminal si utilizza un client Windows XP, è bene aggiornare il <a title="Link al download di client servizi Terminal 6" href="http://www.microsoft.com/downloads/details.aspx?displaylang=it&amp;FamilyID=26f11f0c-0d18-4306-abcf-d4f18c8f5df9" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/downloads/details.aspx?displaylang=it_amp_FamilyID=26f11f0c-0d18-4306-abcf-d4f18c8f5df9&amp;referer=');"><strong>client RDP alla versione 6</strong></a>, quindi, bisogna fare i conti con le stampanti che si posseggono. Prendiamo ad esempio uno scenario in cui mi sono trovato ad operare: server Windows 2003 con abilitati i servizi Terminal, a cui accedono alcuni client con Windows XP (con client di servizi Terminal versione 6) tramite un collegamento geografico; questi client utilizzano una stampante HP LaserJet 2420 dn, cioè una stampante con un print server ed una unità fronte-retro.</p>
<p>In una situazione simile, è una scelta obbligata quella di permettere la stampa da applicazioni distribuite tramite Terminal Services sulle stampanti locali dei client, per cui, bisogna fare in modo che il server Terminal riconosca le stampanti locali dei client. Nel caso in oggetto, bisogna quindi, all&#8217;atto della connessione, assicurarsi che le risorse locali (in questo caso le stampanti) vengano mappate sul server, tramite un&#8217;impostazione raggiungibile dal client RDP cliccando su Opzioni, tab Risorse locali, dove è possibile scegliere quali risorse locali &#8220;traslare&#8221; sul server, come mostrato in Figura 1:</p>
<div id="attachment_235" class="wp-caption alignnone" style="width: 275px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/11/risorselocali.png"><img class="size-medium wp-image-235" title="Mappatura risorse locali su server" src="http://www.ricercheit.net/wp-content/uploads/2008/11/risorselocali-265x300.png" alt="Fig. 1 - mappatura risorse locali su server" width="265" height="300" /></a><p class="wp-caption-text">Fig. 1 - mappatura risorse locali su server</p></div>
<p>Nell&#8217;immagine si può notare l&#8217;impostazione di mappatura delle stampanti, abilitata cliccando sulla casella relativa; a questo punto, è possibile connettersi per verificare se la stampante verrà installata anche sul server.</p>
<p>Una volta effettuata la connessione, se andiamo nella cartella stampanti, possiamo notare che la stampante HP LaserJet 2420 non è stata installata; nel event viewer (e più precisamente nel log System), abbiamo un evento con id 1111 ed origine TermServDevices che ci segnala l&#8217;impossibilità di installare il driver della stampante poiché sconosciuto, come mostrato in figura 2.</p>
<div id="attachment_237" class="wp-caption alignnone" style="width: 280px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/11/evento1111.png"><img class="size-medium wp-image-237" title="Evento 1111 - TermServDevices" src="http://www.ricercheit.net/wp-content/uploads/2008/11/evento1111-270x300.png" alt="" width="270" height="300" /></a><p class="wp-caption-text">Fig. 2 - evento 1111 TermServDevices</p></div>
<p>Ciò è normale, e dipende dal fatto che il driver della stampante non è un driver Microsoft ma HP, che quindi Windows Server 2003 non ha e non può installare.</p>
<p>Una prima soluzione a questo problema, può essere quella di installare sui client una stampante HP LaserJet che stampi con protocollo PCL e che possieda la possibilità di installare un&#8217;unità fronte-retro, come ad esempio la HP LaserJet 4100, utilizzando il driver Microsoft configurato con un&#8217;unità duplex per il fronte-retro. Così facendo, la stampante viene correttamente installata, come mostrato in figura 3</p>
<div id="attachment_238" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/11/stampante4100.png"><img class="size-medium wp-image-238" title="Stampante HP 4100 installata" src="http://www.ricercheit.net/wp-content/uploads/2008/11/stampante4100-300x169.png" alt="Fig. 3 - stampante HP 4100 installata" width="300" height="169" /></a><p class="wp-caption-text">Fig. 3 - stampante HP 4100 installata</p></div>
<p>ed anche nel log degli eventi compaiono diversi eventi (con id 20, 15, 9 e 2) ed origine Print che indicano i vari passaggi di installazione della stampante. Provando a stampare su quella stampante, le stampe arrivano alla stampante HP 2420 perfettamente, peccato però che non funzioni il fronte-retro, che andrebbe impostato sulla stampante ad ogni sessione Terminal, poiché, per un motivo che non conosco, ad ogni sessione questa impostazione viene perduta; una scomodità inaccettabile. Un&#8217;altra soluzione potrebbe consistere nell&#8217;installazione del driver HP della stampante LaserJet 2420, ma anche in questo caso non funziona il fronte-retro, che è disponibile ma dà problemi in fase di stampa; perchè questo avvenga, non l&#8217;ho proprio capito, probabilmente un&#8217;incompatibilità del driver in ambiente Terminal Services.</p>
<p>A questo punto, la prima soluzione al problema consiste nell&#8217;accontentarsi del mancato funzionamento del fronte-retro, mentre la soluzione n. 2 è un attimino più professionale, e prevede l&#8217;installazione di un driver HP chiamato <a title="Link a HP Universal Print Driver" href="http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=it&amp;cc=it&amp;prodTypeId=18972&amp;prodSeriesId=416419&amp;prodNameId=412132&amp;swEnvOID=228&amp;swLang=24&amp;mode=2&amp;taskId=135&amp;swItem=ja-45284-8" onclick="pageTracker._trackPageview('/outgoing/h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=it_amp_cc=it_amp_prodTypeId=18972_amp_prodSeriesId=416419_amp_prodNameId=412132_amp_swEnvOID=228_amp_swLang=24_amp_mode=2_amp_taskId=135_amp_swItem=ja-45284-8&amp;referer=');"><strong>Universal Print Driver</strong></a>, un driver appunto &#8220;universale&#8221;, rilasciato da HP che permette di installare un unico driver compatibile con tutte le stampanti di rete HP LaserJet e con gran parte delle stampanti inkjet HP, e che prevede la possibilità di abilitare diverse funzioni tra le quali il fronte-retro.</p>
<p>Scaricato questo driver, il primo passo consiste nell&#8217;installazione di una stampante HP Universal Printing sui client. Se nella rete sono presenti più stampanti HP, conviene installare il driver della stampante in modalità dinamica, in modo tale da poter scegliere di volta in volta su quale stampante mandare le code di stampa, altrimenti è possibile installare il driver in modalità tradizionale, in cui verrà richiesta la porta di stampa e le altre solite informazioni. Tenere presente che in modalità dinamica, verranno ricercate esclusivamente stampanti in rete (o almeno, io non ho visto nessuna voce di menu in cui poter scegliere di installare una stampante attaccata direttamente al PC), ed inoltre, se nella rete abbiamo stampanti con un print server JetDirect, è possibile lanciare una rilevazione che troverà automaticamente queste stampanti. Scelta una modalità di installazione, ed installata la stampante, verrà creata nella cartella stampanti un oggetto chiamato &#8220;HP Universal Printing PCL 6&#8243; sui client; nel caso in esame, la cosa migliore secondo me è installare la stampante in modalità dinamica, poiché la HP LaserJet 2420 possiede un print server JetDirect, ed è quindi ricercabile tramite il comodo tool in fase di installazione.</p>
<p>Ora bisogna installare il driver sul server, utilizzando una modalità diversa da quella usata sui client, poiché sul server non abbiamo bisogno di installare una stampante, è sufficiente installare il driver; per far questo, andare nella cartella stampanti, quindi cliccare sul menu File -&gt; Server properties, quindi cliccare sulla scheda Drivers, cliccare poi sul pulsante Add, partirà il classico wizard di installazione del driver della stampante tramite il quale va installato il driver HP Universal Printing, in tal modo il driver è presente ma sul server non viene creata la stampante.</p>
<p>Compiuti questi passaggi, se effettuiamo la connessione al server Terminal, possiamo notare in figura 4 che è stata creata sul server la stampante HP Universal Printing PCL 6</p>
<div id="attachment_241" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/11/stampanteup.png"><img class="size-medium wp-image-241" title="Stampante HP Universal Print" src="http://www.ricercheit.net/wp-content/uploads/2008/11/stampanteup-300x169.png" alt="Fig. 4 - stampante HP Universal Print" width="300" height="169" /></a><p class="wp-caption-text">Fig. 4 - stampante HP Universal Print</p></div>
<p>Tramite questa stampante, abbiamo la possibilità di stampare sulla stampante locale anche in fronte-retro, semplificando la gestione di altre eventuali stampanti HP e risparmiando quindi tempo e rotture di scatole. Bisogna dire però che questa modalità funziona solo con stampanti HP, e nemmeno con tutte, infatti ho avuto problemi con una multifunzione inkjet, che sarebbero oggetti anche utili in determinati contesti, ma che dal punto di vista dei driver rappresentano il Male. <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Non ho ancora avuto esperienze con stampanti non HP su server Terminal, però mi sento di consigliare in casi simili, quando possibile, di utilizzare sempre driver Microsoft per evitare problemi.</p>
<h3>Link e approfondimenti</h3>
<p><a title="Problematiche connesse alla migrazione di un Server Terminal" href="http://technet.microsoft.com/it-it/library/cc645564.aspx" onclick="pageTracker._trackPageview('/outgoing/technet.microsoft.com/it-it/library/cc645564.aspx?referer=');">Problematiche connesse alla migrazione di un Server Terminal</a></p>
<p><a title="Stampanti supportate con Universal Print Driver in ambiente Citrix" href="http://h71028.www7.hp.com/ERC/downloads/4AA0-8465ENW.pdf" onclick="pageTracker._trackPageview('/outgoing/h71028.www7.hp.com/ERC/downloads/4AA0-8465ENW.pdf?referer=');">Stampanti supportate con Universal Print Driver in ambiente Citrix</a> (documento PDF)</p>
<p><a title="Easy Print su Windows Server 2008" href="http://technet.microsoft.com/it-it/library/cc772270.aspx" onclick="pageTracker._trackPageview('/outgoing/technet.microsoft.com/it-it/library/cc772270.aspx?referer=');">Easy Print con Terminal Services su Windows Server 2008</a> (aggiornamento del 21 dicembre 2008)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/11/01/gestire-la-stampa-con-terminal-services/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Problema di connessione ad un server Terminal</title>
		<link>http://www.ricercheit.net/2008/10/25/problema-di-connessione-ad-un-server-terminal/</link>
		<comments>http://www.ricercheit.net/2008/10/25/problema-di-connessione-ad-un-server-terminal/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 15:54:57 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Server]]></category>

		<category><![CDATA[Windows]]></category>

		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=220</guid>
		<description><![CDATA[Si prenda in considerazione uno scenario in cui si ha un server Windows Server 2003 con i Terminal Services installati ed un client Windows, diciamo Windows 2000 Professional o Windows XP Professional; in uno scenario del genere, per un motivo che ancora non ho capito, per il semplice motivo che mi rifiuto di capire la [...]]]></description>
			<content:encoded><![CDATA[<p>Si prenda in considerazione uno scenario in cui si ha un server Windows Server 2003 con i Terminal Services installati ed un client Windows, diciamo Windows 2000 Professional o Windows XP Professional; in uno scenario del genere, per un motivo che ancora non ho capito, per il semplice motivo che mi rifiuto di capire la perversa politica di licensing di Microsoft, può capitare saltuariamente che uno di questi client, all&#8217;atto della connessione al server Terminal, dia questo errore:</p>
<p>The remote session was disconnected because there are no Terminal Server client access licenses available for this computer</p>
<p>La soluzione a questo problema che ho trovato non è certamente elegante, ma funziona, e consiste nel cancellare la chiave del registro di configurazione</p>
<p>HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing</p>
<p>In questo &#8220;posto&#8221; vengono archiviate le informazioni relative alla licenza client per la connessione ad un server con i Terminal Services abilitati. Cancellando questa chiave, si cancella quindi la licenza client, per cui, ritentando la connessione, viene installata nuovamente la licenza client e si riuscirà ad accedere nuovamente al server via RDP.</p>
<h3>Sito di riferimento</h3>
<p><a href="http://www.chicagotech.net/netforums/viewtopic.php?p=936" onclick="pageTracker._trackPageview('/outgoing/www.chicagotech.net/netforums/viewtopic.php?p=936&amp;referer=');">http://www.chicagotech.net/netforums/viewtopic.php?p=936</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/10/25/problema-di-connessione-ad-un-server-terminal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cisco PIX 506e non fa il boot</title>
		<link>http://www.ricercheit.net/2008/10/17/cisco-pix-506e-non-fa-il-boot/</link>
		<comments>http://www.ricercheit.net/2008/10/17/cisco-pix-506e-non-fa-il-boot/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 19:55:53 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Cisco]]></category>

		<category><![CDATA[Firewall]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=116</guid>
		<description><![CDATA[Tempo fa mi è capitato di avere per le mani un firewall Cisco PIX 506e che non completava la fase di boot, praticamente, collegandosi in console al dispositivo, arrivava a mostrare quella che chiama la &#8220;PCI Device Table&#8221;, che dovrebbe essere l&#8217;elenco di alcuni componenti del firewall (tra cui le interfacce di rete) e si [...]]]></description>
			<content:encoded><![CDATA[<p>Tempo fa mi è capitato di avere per le mani un firewall Cisco PIX 506e che non completava la fase di boot, praticamente, collegandosi in console al dispositivo, arrivava a mostrare quella che chiama la &#8220;PCI Device Table&#8221;, che dovrebbe essere l&#8217;elenco di alcuni componenti del firewall (tra cui le interfacce di rete) e si piantava in quel punto, senza che fosse possibile andare oltre.</p>
<p>Per fortuna, cercando sul Web, ho trovato una soluzione piuttosto semplice anche se &#8220;curiosa&#8221;, che consiste nello spegnere l&#8217;aggeggio (il Pix), aprirlo, e trovare un jumper presente nel bel mezzo della scheda madre; tale jumper fa da ponticello su due piedini, lasciandone un terzo libero, consentendo quindi di posizionare il jumper su due diverse posizioni, per cui, seguendo il consiglio trovato sul Web, ho spostato il jumper nell&#8217;unica altra posizione possibile, ho chiuso il firewall, quindi ho avviato il dispositivo, ottenendo il risultato sperato, cioé il corretto funzionamento della macchina.</p>
<h3>Link di riferimento</h3>
<p><a href="http://www.velocityreviews.com/forums/t56103-cisco-pix-506e-wont-boot.html" onclick="pageTracker._trackPageview('/outgoing/www.velocityreviews.com/forums/t56103-cisco-pix-506e-wont-boot.html?referer=');">http://www.velocityreviews.com/forums/t56103-cisco-pix-506e-wont-boot.html</a><br />
<a href="http://www.experts-exchange.com/Security/Software_Firewalls/Enterprise_Firewalls/Cisco_PIX_Firewall/Q_23316894.html" onclick="pageTracker._trackPageview('/outgoing/www.experts-exchange.com/Security/Software_Firewalls/Enterprise_Firewalls/Cisco_PIX_Firewall/Q_23316894.html?referer=');">http://www.experts-exchange.com/Security/Software_Firewalls/Enterprise_Firewalls/Cisco_PIX_Firewall/Q_23316894.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/10/17/cisco-pix-506e-non-fa-il-boot/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ssh, scp e sftp su Windows</title>
		<link>http://www.ricercheit.net/2008/10/16/ssh-scp-e-sftp-su-windows/</link>
		<comments>http://www.ricercheit.net/2008/10/16/ssh-scp-e-sftp-su-windows/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 21:08:36 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Server]]></category>

		<category><![CDATA[Windows]]></category>

		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=198</guid>
		<description><![CDATA[Su un server Linux, uno strumento indispensabile per l&#8217;amministrazione del server stesso è il server SSH, come OpenSSH, tramite il quale possiamo avere un accesso sicuro alla shell del sistema operativo, per poter amministratore comodamente il nostro server Linux.
In ambiente Windows, un accesso SSH non è una cosa indispensabile, risulta più utile avere un accesso [...]]]></description>
			<content:encoded><![CDATA[<p>Su un server Linux, uno strumento indispensabile per l&#8217;amministrazione del server stesso è il server SSH, come OpenSSH, tramite il quale possiamo avere un accesso sicuro alla shell del sistema operativo, per poter amministratore comodamente il nostro server Linux.</p>
<p>In ambiente Windows, un accesso SSH non è una cosa indispensabile, risulta più utile avere un accesso via Remote Desktop per amministrare il server, allo stesso tempo però, può comunque avere un senso l&#8217;accesso SSH su server Windows, un po&#8217; per determinate operazioni da svolgere via riga di comando, un po&#8217; per poter scaricare o caricare file da o sul server attraverso SCP e SFTP, che possono diventare comodi soprattutto se ci connettiamo al server in remoto, via VPN, oppure se dobbiamo amministrare o trasferire dati da una macchina Linux ad una macchina Windows, in questo modo non saremo costretti ad utilizzare X oppure ad installare Samba per il trasferimento dati da/verso Windows.</p>
<p>Per quanto concerne il software che funge da server SSH, ne esistono diversi, e direi che più o meno tutti sono un&#8217;implementazione di SSH in ambiente emulato Cygwin; io ne ho provati due, <a href="http://www.freesshd.com/index.php" onclick="pageTracker._trackPageview('/outgoing/www.freesshd.com/index.php?referer=');"><strong>Freesshd</strong></a> e <strong><a href="http://www.itefix.no/i2/node/27" onclick="pageTracker._trackPageview('/outgoing/www.itefix.no/i2/node/27?referer=');">CopSSH</a></strong>, che rispondono a due esigenze diverse, in particolare, Freesshd fornisce l&#8217;ambiente di shell di Windows, mentre CopSSH fornisce un sottoinsieme dei comandi presenti nella shell Bash di Linux.</p>
<p>Personalmente, tra un&#8217;implementazione completa della shell di Windows come quella di Freesshd (che appunto richiama direttamente l&#8217;interprete dei comandi di Windows, cmd.exe) ed una che (secondo le mie prove, che ammetto non essere state esaustive) risulta, all&#8217;atto pratico, avere una parte dei comandi Bash ed una parte dei comandi di Windows, come accade con CopSSH, preferisco Freesshd; tanto per fare un esempio, con Freesshd riesco a vedere i processi in esecuzione con il comando tasklist, cosa che non riesco a fare con Copssh.</p>
<p>Per poter utilizzare un server SSH su Windows, l&#8217;utente col quale faccio il logon al server deve obbligatoriamente consentire l&#8217;accesso interattivo al server, se così non è, va modificata l&#8217;opportuna policy (si tratta di policies diverse a seconda se il server è controller di dominio oppure no) sul server Windows, e questo può comportare qualche problema di sicurezza in più, cosa che secondo me rappresenta il vero svantaggio dell&#8217;avere attivo un server SSH su Windows. Entrambi i software hanno una procedura che permette di specificare quali utenti definiti sul server Windows possono accedere via SSH al server stesso, va da sé che, se vogliamo amministrare decentemente il server Windows, dovremo accedere allo stesso con un&#8217;utenza amministrativa, se invece necessitiamo del solo SFTP, è sufficiente abilitare l&#8217;utente all&#8217;accesso, dopodiché saranno le autorizzazioni impostate sulle cartelle del server Windows a stabilire le possibili azioni dell&#8217;utente.</p>
<p>Tornando a FreeSSHD, l&#8217;installazione del prodotto è decisamente banale, basta cliccare sempre su Avanti (Next); durante l&#8217;installazione verrà creato il servizio FreeSSHDService, in modo che il &#8220;demone&#8221; sia sempre attivo, quindi dovremo accedere alla configurazione del programma, cliccando col tasto destro sull&#8217;icona del programma posta nella systray e, scegliendo la voce Settings dal menu contestuale, è possibile gestire il server SSH, e soprattutto, è possibile abilitare o disabilitare l&#8217;accesso SSH agli utenti di Windows tramite la scheda Users, come mostrato in figura 1:</p>
<div id="attachment_211" class="wp-caption alignleft" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/10/usersfreesshd.png"><img class="size-medium wp-image-211" title="Scheda Users Freesshd" src="http://www.ricercheit.net/wp-content/uploads/2008/10/usersfreesshd-300x251.png" alt="Figura 1 - Scheda Users di FreeSSHD" width="300" height="251" /></a><p class="wp-caption-text">Figura 1 - Scheda Users di FreeSSHD</p></div>
<p>A questo punto, è sufficiente utilizzare un client SSH come Putty in ambiente Windows, o utilizzando il comando ssh in ambiente Linux/Unix, e collegandosi al server (finora ho provato solamente con nome utente e password, senza utilizzare certificati) si può testare il corretto accesso al server Windows.</p>
<p>Purtroppo, per un motivo che non sono ancora riuscito a capire, al primo tentativo viene restituito l&#8217;errore &#8220;Incoming packet was garbled on decryption&#8221; con Putty oppure l&#8217;errore &#8220;Bad packet length&#8221; su Linux, seguito da un numero; la cosa strana è che tentando una seconda volta, senza cambiare nulla, la connessione avviene senza nessun problema, se qualcuno sa o ha idea da cosa possa dipendere, farebbe cosa molto gradita scrivendolo nei commenti. <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Una volta verificato il corretto accesso al server Windows, è possibile configurare anche SFTP, andando a specificare nella configurazione di FreeSSHD qual è la directory root SFTP del server Windows tramite la scheda SFTP, come mostrato in figura 2:</p>
<div id="attachment_213" class="wp-caption alignleft" style="width: 310px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/10/sftpfreesshd.png"><img class="size-medium wp-image-213" title="Scheda SFTP di FreeSSHD" src="http://www.ricercheit.net/wp-content/uploads/2008/10/sftpfreesshd-300x283.png" alt="Figura 2 - Scheda SFTP di FreeSSHD" width="300" height="283" /></a><p class="wp-caption-text">Figura 2 - Scheda SFTP di FreeSSHD</p></div>
<p>Ora non ci resta che testare il corretto funzionamento di una connessione SFTP; per Windows, si possono utilizzare due programmi, WinSCP (che a dispetto del nome consente anche la connessione SFTP) e FileZilla, il quale, oltre alle normali connessioni FTP, permette di stabilire connessioni SFTP basandosi sull&#8217;onnipresente Putty.</p>
<p>Questa configurazione, secondo le prove che ho potuto fare, funziona abbastanza bene, con alcuni difetti: per prima cosa, ho letto sul Web che FreeSSHD peccherebbe un po&#8217; in stabilità, finora io non ho avuto problemi, ma non ne ho fatto un uso intensivo; secondariamente, per quanto riguarda SFTP, l&#8217;unica configurazione possibile riguarda la root directory accessibile dagli utenti, impedendo agli stessi di poter accedere alle cartelle di livello superiore, e ciò è positivo dal punto di vista della sicurezza, poiché in questo modo si possono abilitare diversi utenti che comunque non hanno la possibilità di gironzolare per il disco, però, allo stesso tempo, questa impostazione riguarda TUTTI gli utenti, per cui anche gli utenti con privilegi amministrativi, utilizzando SFTP, non possono operare ad un livello superiore rispetto alla home directory, anche se, in realtà, utilizzando Linux, è possibile superare questa limitazione utilizzando scp, per poterlo fare però bisogna conoscere il percorso esatto del file da prelevare; altra limitazione, la shell fornita per default da FreeSSHD è quella di Windows, per cui WinSCP non funziona in modalità SCP, funziona però perfettamente in modalità SFTP.</p>
<p>In conclusione, installare un server SSH su Windows, è utile, secondo me, solo in determinate occasioni, soprattutto se da client Linux dobbiamo accedere o condividere file con un server Windows, oppure può risultare utile su connessioni remote particolarmente lente, altrimenti, secondo me è più utile utilizzare Remote Desktop, utilizzabile anche da Linux tramite il pacchetto rdesktop.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/10/16/ssh-scp-e-sftp-su-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Configurare MySQL per fargli accettare connessioni remote</title>
		<link>http://www.ricercheit.net/2008/10/15/configurare-mysql-per-fargli-accettare-connessioni-remote/</link>
		<comments>http://www.ricercheit.net/2008/10/15/configurare-mysql-per-fargli-accettare-connessioni-remote/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 09:50:41 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[Debian / Ubuntu]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=203</guid>
		<description><![CDATA[La versione pacchettizzata di MySQL Server 5 per Linux Debian Etch 4.0 ha una caratteristica, non accetta connessioni sulla porta 3306 (la porta a cui risponde MySQL) se non da localhost, cioè sé stesso. Questo può essere un problema se vogliamo o dobbiamo tenere due macchine separate per un&#8217;applicazione (o sito) ed il relativo database.
La [...]]]></description>
			<content:encoded><![CDATA[<p>La versione pacchettizzata di MySQL Server 5 per Linux Debian Etch 4.0 ha una caratteristica, non accetta connessioni sulla porta 3306 (la porta a cui risponde MySQL) se non da localhost, cioè sé stesso. Questo può essere un problema se vogliamo o dobbiamo tenere due macchine separate per un&#8217;applicazione (o sito) ed il relativo database.</p>
<p>La soluzione al problema è molto semplice, si tratta di commentare la seguente voce</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">bind-address = 127.0.0.1</pre></div></div>

<p>presente nel file di configurazione di MySQL, /etc/mysql/my.cnf, dopodiché, dobbiamo abilitare uno o più utenti per poter connettersi in remoto su un particolare database utilizzando l&#8217;istruzione SQL GRANT:</p>

<div class="wp_syntax"><div class="code"><pre class="sql sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> privileges <span style="color: #993333; font-weight: bold;">ON</span> testDB<span style="color: #66cc66;">.*</span> <span style="color: #993333; font-weight: bold;">TO</span> <span style="color: #ff0000;">'testUSR'</span>@<span style="color: #ff0000;">'192.168.0.3'</span> <span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">'testPWD'</span></pre></div></div>

<p>così facendo, si abilita l&#8217;utente testUSR a connettersi al database testDB dall&#8217;host 192.168.0.3. A questo punto, è sufficiente far ripartire il demone di MySQL per abilitare la modifica effettuata al file my.cnf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>mysql restart</pre></div></div>

<p>e questo è tutto. <img src='http://www.ricercheit.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/10/15/configurare-mysql-per-fargli-accettare-connessioni-remote/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recuperare elementi cancellati in Exchange Server 2003</title>
		<link>http://www.ricercheit.net/2008/08/29/recuperare-elementi-cancellati-in-exchange-server-2003/</link>
		<comments>http://www.ricercheit.net/2008/08/29/recuperare-elementi-cancellati-in-exchange-server-2003/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 16:48:02 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Exchange]]></category>

		<category><![CDATA[Mail Server]]></category>

		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=182</guid>
		<description><![CDATA[Una delle situazioni più antipatiche che un amministratore di un server di posta deve affrontare, è la richiesta da parte di qualche utente (che, sapendo di romperti le scatole, ed essendo in difficoltà, farà la richiesta nel modo più suadente possibile) di recuperare un messaggio/elemento (o più messaggi/elementi) cancellato per sbaglio. In genere la cosa [...]]]></description>
			<content:encoded><![CDATA[<p>Una delle situazioni più antipatiche che un amministratore di un server di posta deve affrontare, è la richiesta da parte di qualche utente (che, sapendo di romperti le scatole, ed essendo in difficoltà, farà la richiesta nel modo più suadente possibile) di recuperare un messaggio/elemento (o più messaggi/elementi) cancellato per sbaglio. In genere la cosa è piuttosto antipatica, soprattutto se si tratta di andare a ripristinare dei messaggi dai nastri di backup.</p>
<p>Nel caso di Exchange, un ripristino da backup è un&#8217;operazione piuttosto delicata, poiché, se non si segue una strategia intelligente, il ripristino è un vero delirio; ad esempio, se si fa solamente il backup dello store, tramite ntbackup, bisogna ripristinare lo store, montarlo a parte e poi estrarre ciò che serve, questo almeno in linea teorica, io per fortuna non ho mai dovuto compiere quest&#8217;operazione, che secondo me equivale ad un impeto masochistico degno del miglior Tafazzi.</p>
<p>Rimanendo nell&#8217;ambito del backup, una strategia un minimo più intelligente può essere quella di utilizzare uno strumento come Exmerge (descritto, anche se non in modo completo, in <a title="Articolo su questo blog inerente Exmerge" href="http://www.ricercheit.net/2008/03/24/utilizzo-di-exmerge/"><strong>quest&#8217;articolo</strong></a>), oppure un software di backup che consenta di effettuare il salvataggio delle singole cassette postali.</p>
<p>In ogni caso il ripristino di un backup è sempre una grossa rottura, ma, nel caso di Exchange, esistono strumenti per poter ripristinare gli elementi cancellati, a patto che questi non siano stati cancellati da più di una settimana (Exchange conserva gli elementi cancellati per una settimana come impostazione predefinita).</p>
<p>Nel caso siano stati cancellati alcuni messaggi o altri tipi di elementi dalla propria cassetta postale (per cancellati si intende che i messaggi sono stati rimossi anche dalla posta eliminata), è possibile utilizzare una funzione di Outlook, che consiste nell&#8217;entrare nella cartella Posta eliminata, quindi andare sul menu Strumenti -&gt; Recupera posta eliminata, dove è possibile recuperare i messaggi cancellati da non più di una settimana, come mostrato nella figura seguente:</p>
<div id="attachment_187" class="wp-caption alignnone" style="width: 510px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/08/recuperape.png"><img class="size-full wp-image-187" title="Recupera Posta Eliminata" src="http://www.ricercheit.net/wp-content/uploads/2008/08/recuperape.png" alt="Figura 1 - recupera posta eliminata" width="500" height="229" /></a><p class="wp-caption-text">Figura 1 - recupera posta eliminata</p></div>
<p>Da questa finestra è possibile decidere se ripristinare l&#8217;elemento in Posta eliminata oppure se rimuoverlo definitivamente.</p>
<p>Diverso il caso se si cancella per errore uno o più elementi da una cartella pubblica, poiché, in questo caso, gli elementi cancellati non finiscono nella cartella Posta eliminata, ma semplicemente svaniscono. In realtà, è possibile ripristinare gli elementi eliminati dalle cartelle pubbliche utilizzando il tool <strong><a title="Link alla pagina di download di PFDAVAdmin" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=635BE792-D8AD-49E3-ADA4-E2422C0AB424&amp;amp;amp;displaylang=en&amp;displaylang=en" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/downloads/details.aspx?FamilyID=635BE792-D8AD-49E3-ADA4-E2422C0AB424_amp_amp_amp_displaylang=en_amp_displaylang=en&amp;referer=');">PFDAVAdmin</a></strong> rilasciato da Microsoft, il cui utilizzo principale consiste nella gestione centralizzata delle autorizzazioni sulle cartelle pubbliche, ma che può essere utilizzato ottimamente per ripristinare elementi rimossi incautamente da una cartella pubblica. Una volta scompattato PFDAVAdmin, lanciare l&#8217;eseguibile dal server Exchange utilizzando l&#8217;account Administrator, quindi cliccare sul menu File -&gt; Connect ed impostare il valore del server Exchange e del Global Catalog dell&#8217;organizzazione, lasciando selezionata l&#8217;opzione Public Folders, come illustrato in figura 2:</p>
<div id="attachment_190" class="wp-caption alignnone" style="width: 385px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/08/pfdavadmin11.png"><img class="size-full wp-image-190" title="Finestra di connessione di PFDAVAdmin" src="http://www.ricercheit.net/wp-content/uploads/2008/08/pfdavadmin11.png" alt="Figura 2 - finestra di connessione di PFDAVAdmin" width="375" height="344" /></a><p class="wp-caption-text">Figura 2 - finestra di connessione di PFDAVAdmin</p></div>
<p>Effettuata la connessione, espandere l&#8217;albero a sinistra e andare a selezionare la cartella pubblica da cui vogliamo recuperare l&#8217;elemento cancellato, quindi, selezionare la scheda Items e l&#8217;opzione in basso Deleted contents, quindi selezionare l&#8217;elemento/gli elementi da recuperare, cliccare col tasto destro e selezionare la voce Recover items, come evidenziato in figura 3:</p>
<div id="attachment_191" class="wp-caption alignnone" style="width: 491px"><a href="http://www.ricercheit.net/wp-content/uploads/2008/08/pfdavadmin2.png"><img class="size-full wp-image-191" title="Finestra di recupero elementi di PFDAVAdmin" src="http://www.ricercheit.net/wp-content/uploads/2008/08/pfdavadmin2.png" alt="Figura 3 - finestra di recupero elementi di PFDAVAdmin" width="481" height="365" /></a><p class="wp-caption-text">Figura 3 - finestra di recupero elementi di PFDAVAdmin</p></div>
<p>Una volta cliccato su Recover Items, cliccare Ok sulla finestra di notifica dell&#8217;avvenuto ripristino, dopodiché verificare che l&#8217;elemento sia stato effettivamente ripristinato, cosa che in genere avviene.</p>
<p>La cosa bella di questo tool, è che le stesse operazioni è possibile compierle anche sulle cassette postali dell&#8217;intera organizzazione, a patto di avere le autorizzazioni del caso sulle mailbox dei singoli utenti; per poter gestire le cassette di posta, nella finestra di connessione mostrata in Figura 2 bisogna indicare l&#8217;opzione All mailboxes in luogo dell&#8217;opzione Public Folders.</p>
<h3>Link di riferimento</h3>
<p><a title="Pagina Knowledge Base Microsoft di descrizione dell'utilizzo di PFDAVAdmin" href="http://support.microsoft.com/?scid=kb%3Ben-us%3B924044&amp;x=4&amp;y=9" onclick="pageTracker._trackPageview('/outgoing/support.microsoft.com/?scid=kb_3Ben-us_3B924044_amp_x=4_amp_y=9&amp;referer=');">http://support.microsoft.com/?scid=kb%3Ben-us%3B924044&amp;x=4&amp;y=9</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/08/29/recuperare-elementi-cancellati-in-exchange-server-2003/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Logging di iptables su file con syslog-ng</title>
		<link>http://www.ricercheit.net/2008/08/15/logging-di-iptables-su-file-con-syslog-ng/</link>
		<comments>http://www.ricercheit.net/2008/08/15/logging-di-iptables-su-file-con-syslog-ng/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 15:53:50 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Debian / Ubuntu]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Sicurezza]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=127</guid>
		<description><![CDATA[Se si deve gestire un firewall Linux con iptables, in determinate situazioni può riverlarsi indispensabile poterne gestire il logging nel modo più lineare possibile; il passo più logico per raggiungere questo scopo è quello di effettuare un logging su file delle attività di iptables che si intende monitorare. Si tenga presente che questi passaggi sono [...]]]></description>
			<content:encoded><![CDATA[<p>Se si deve gestire un firewall Linux con iptables, in determinate situazioni può riverlarsi indispensabile poterne gestire il logging nel modo più lineare possibile; il passo più logico per raggiungere questo scopo è quello di effettuare un logging su file delle attività di iptables che si intende monitorare. Si tenga presente che questi passaggi sono stati effettuati su Debian Etch.</p>
<p>L&#8217;operazione consta di più passaggi:</p>
<ol>
<li>configurazione di iptables per fare in modo che venga fatto il logging di determinati tipi di traffico su file;</li>
<li>installazione e configurazione di syslog-ng, che consentirà di specificare uno specifico file su cui redirigere il logging di iptables;</li>
<li>configurazione di logrotate per poter ruotare i file di log di iptables.</li>
</ol>
<h3>Configurazione di iptables</h3>
<p>Per prima cosa, dobbiamo decidere quale tipo di traffico vogliamo monitorare, in questo caso, scegliamo di monitorare il traffico icmp verso l&#8217;ipotetica interfaccia esterna del nostro firewall. Se si prende come riferimento <a href="http://www.ricercheit.net/2007/04/25/creare-un-firewall-basilare-con-iptables/"><strong>l&#8217;articolo precedente riguardante iptables</strong></a>, bisogna aggiornare lo script di iptables, caricando per prima cosa il modulo ipt_LOG tramite la direttiva:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">modprobe ipt_LOG</pre></div></div>

<p>Ora è possibile specificare un&#8217;istruzione per il logging del traffico ICMP sull&#8217;interfaccia esterna, assumendo che questa prenda il nome eth1:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-i</span> eth1 <span style="color: #660033;">-p</span> icmp <span style="color: #660033;">-j</span> LOG <span style="color: #660033;">--log-level</span> <span style="color: #000000;">4</span> --log-<span style="color: #007800;">prefix</span>=<span style="color: #ff0000;">'LOG_ICMP '</span></pre></div></div>

<p>quest&#8217;istruzione è da inserire prima dell&#8217;eventuale direttiva che consente o nega il traffico ICMP verso l&#8217;interfaccia eth1. Da notare la direttiva log-prefix, che farà precedere le stringhe di logging da ciò che abbiamo specificato tra apici (nel nostro caso LOG_ICMP ). Con questo comando termina la configurazione di iptables.</p>
<h3>Installazione e configurazione di syslog-ng</h3>
<p>In questo secondo passaggio andremo a sostituire il server syslog classico con syslog-ng, un server syslog più evoluto che permette una gestione più raffinata dei messaggi di log provenienti da kernel e demoni. Prima di configurare syslog-ng, dobbiamo però fare in modo che i log di iptables non compaiano in console (che in pratica si traduce nella comparsa dei vari log sul monitor del PC), cosa decisamente fastidiosa: ciò è possibile editando il file /etc/sysctl.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysctl.conf</pre></div></div>

<p>quindi, dobbiamo decommentare la riga 1 del seguente listato sostituendola con la riga 3:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#kernel.printk = 7 4 1 7</span>
&nbsp;
kernel.printk = <span style="color: #000000;">4</span> <span style="color: #000000;">4</span> <span style="color: #000000;">1</span> <span style="color: #000000;">7</span></pre></td></tr></table></div>

<p>in tal modo, indicando il valore 4 in vece del valore 7, si indica che il logging a console viene abilitato solo per il logging di livello inferiore a 4, avendo indicato noi nello script di iptables che il nostro logging è di valore 4, la console rimarrà immacolata.</p>
<p><b>AGGIORNAMENTO</b><br />
Un metodo alternativo per raggiungere lo stesso scopo è quello di editare il file /etc/default/syslog-ng decommentando l&#8217;ultima riga, che diventerà:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #007800;">CONSOLE_LOG_LEVEL</span>=<span style="color: #000000;">4</span></pre></div></div>

<p>al posto di 4, potremo mettere, nel caso, anche un numero inferiore fino ad arrivare a 1. Una volta riavviato il demone di syslog-ng, verrà modificato come visto in precedenza il file kernel.printk per prevenire la visualizzazione sulla console dei log di iptables.<br />
<b>FINE AGGIORNAMENTO</b></p>
<p>Ora, installiamo syslog-ng con il classico apt:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> syslog-ng</pre></div></div>

<p>che non si limita ad installare syslog-ng ma disinstalla anche il classico syslog, di cui va a prendere il posto. A questo punto va configurato syslog-ng per far sì che i log non vadano a finire nei file /var/log/messages, /var/log/kern.log e /var/log/syslog, editando il file /etc/syslog-ng/syslog-ng.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>syslog-ng<span style="color: #000000; font-weight: bold;">/</span>syslog-ng.conf</pre></div></div>

<p>dove bisogna aggiungere in fondo al file le seguenti righe:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># configurazione logging di iptables</span>
&nbsp;
destination df_firewall <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #c20cb9; font-weight: bold;">file</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;/var/log/iptables.log&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;
&nbsp;
filter f_firewall <span style="color: #7a0874; font-weight: bold;">&#123;</span>
match<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;LOG_ICMP &quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;
&nbsp;
log <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #7a0874; font-weight: bold;">source</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>s_all<span style="color: #7a0874; font-weight: bold;">&#41;</span>;
        filter<span style="color: #7a0874; font-weight: bold;">&#40;</span>f_firewall<span style="color: #7a0874; font-weight: bold;">&#41;</span>;
        destination<span style="color: #7a0874; font-weight: bold;">&#40;</span>df_firewall<span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></td></tr></table></div>

<p>Le righe da 3 a 5 servono per parametrizzare il file dei log di iptables, le righe da 7 a 9 rappresentano il criterio con cui viene deciso, da parte di syslog-ng, quando redirigere le stringhe di logging verso il file specificato in precedenza attraverso la condizione</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">match<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;LOG_ICMP &quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>mentre le righe da 11 a 15 rappresentano la direttiva vera e propria verso syslog-ng per loggare tutto ciò che proviene da iptables contenente la stringa &#8220;LOG_ICMP &#8220;.</p>
<p>Lasciando le cose in questo modo, il logging verso il file /var/log/iptables.log funziona perfettamente, però i log vengono inviati anche verso i file &#8220;canonici&#8221; di log del kernel. Per ovviare al problema, bisogna modificare il file /etc/syslog-ng/syslog-ng.conf in modo che syslog-ng non scriva i messaggi provenienti da iptables nei file indicati in precedenza; primo passo, la modifica del filtro f_kern:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">filter f_kern <span style="color: #7a0874; font-weight: bold;">&#123;</span> facility<span style="color: #7a0874; font-weight: bold;">&#40;</span>kern<span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span>;
&nbsp;
filter f_kern <span style="color: #7a0874; font-weight: bold;">&#123;</span> facility<span style="color: #7a0874; font-weight: bold;">&#40;</span>kern<span style="color: #7a0874; font-weight: bold;">&#41;</span> and not match<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;LOG_ICMP &quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></td></tr></table></div>

<p>dove la riga numero 1 viene sostituita dalla riga numero 3, così da evitare che le voci di log vadano a finire nel file /var/log/kern.log; il passo successivo riguarda la modifica della voce relativa al filtro f_syslog:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;">filter f_syslog <span style="color: #7a0874; font-weight: bold;">&#123;</span> not facility<span style="color: #7a0874; font-weight: bold;">&#40;</span>auth, authpriv<span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span>;
&nbsp;
filter f_syslog <span style="color: #7a0874; font-weight: bold;">&#123;</span> not facility<span style="color: #7a0874; font-weight: bold;">&#40;</span>auth, authpriv<span style="color: #7a0874; font-weight: bold;">&#41;</span> and not match <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;LOG_ICMP &quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></td></tr></table></div>

<p>dove andremo a sostituire la riga numero 1 con la riga numero 3, per impedire che il logging di iptables vada a popolare il file /var/log/syslog. Ora rimane da modificare il filtro f_messages, che da così</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">filter f_messages <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        level<span style="color: #7a0874; font-weight: bold;">&#40;</span>info,notice,warn<span style="color: #7a0874; font-weight: bold;">&#41;</span>
            and not facility<span style="color: #7a0874; font-weight: bold;">&#40;</span>auth,authpriv,cron,daemon,mail,news<span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></div></div>

<p>diventa così</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">filter f_messages <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        level<span style="color: #7a0874; font-weight: bold;">&#40;</span>info,notice,warn<span style="color: #7a0874; font-weight: bold;">&#41;</span>
            and not facility<span style="color: #7a0874; font-weight: bold;">&#40;</span>auth,authpriv,cron,daemon,mail,news<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                and not match <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;LOG_ICMP &quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>;</pre></div></div>

<p>modifica che inibisce il logging di iptables nel file /var/log/messages. In tutte e tre le situazioni, abbiamo aggiunto la condizione</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">and not match <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">&quot;LOG_ICMP &quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>condizione che istruisce syslog-ng ad ignorare, per quel determinato filtro, tutti i log che contengono la stringa &#8220;LOG_ICMP &#8220;, per cui, se si modifica la configurazione di iptables utilizzando, per il logging, un prefisso diverso da quello indicato (tramite la direttiva log-prefix di iptables), tutte le segnalazioni finiranno nei file &#8220;normali&#8221; e non nel file /var/log/iptables.log che abbiamo creato.</p>
<h3>Configurazione di logrotate</h3>
<p>Tenendo le cose così come sono, con l&#8217;andare del tempo il file /var/log/iptables.log assumerà dimensioni sempre più grandi, rendendo quindi i log di difficile lettura. La soluzione al problema sta nell&#8217;istruire logrotate (che dovrebbe essere già presente in Debian Etch) per routare il nostro file di log personalizzato secondo i criteri che preferiamo. Prima di configurare logrotate, vediamo brevemente come funziona.</p>
<p>Logrotate ha un file di configurazione, /etc/logrotate.conf, in cui sono indicate le opzioni generali di configurazione, ed ha una directory, /etc/logrotate.d, in cui vi sono i file di configurazione riguardanti il logging delle singole applicazioni; questi file di configurazione vengono richiamati dalla direttiva presente nel file /etc/logrotate.conf</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># packages drop log rotation information into this directory</span>
include <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>logrotate.d</pre></div></div>

<p>Nel nostro caso, dovremo creare un file chiamato iptables nella directory /etc/logrotate.d, quindi editarlo per indicare a logrotate come routare il nostro file:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>logrotate.d<span style="color: #000000; font-weight: bold;">/</span>iptables
<span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>logrotate.d<span style="color: #000000; font-weight: bold;">/</span>iptables</pre></div></div>

<p>Nel file /etc/logrotate.d/iptables andremo ad inserire questo contenuto:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>iptables.log <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        weekly
        rotate <span style="color: #000000;">4</span>
        compress
        notifempty
        missingok
        endscript
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>Vediamo di esaminare nel dettaglio le varie istruzioni del file: weekly indica che il file di log viene routato con cadenza settimanale, rotate 4 significa che vengono conservati 4 log già routati, compress specifica che i file di log routati vengono compressi, notifempty sta ad indicare a logrotate di non routare il file di log se questo è vuoto, missingok permette a logrotate di non segnalare errori se per qualche motivo il file di log non esiste, endscript indica semplicemente il termine delle istruzioni di configurazione per il file corrente. Per ulteriori informazioni sulle opzioni di logrotate è possibile consultare le pagine man di logrotate oppure gli ultimi due collegamenti nella sezione Link di riferimento di quest&#8217;articolo.</p>
<p>Ora non rimane che verificare nel tempo il corretto funzionamento di logrotate.</p>
<h3>Link di riferimento</h3>
<p><a title="Utilizzo di syslog-ng e iptables" href="http://tuttodebian.blogspot.com/2008/05/iptables-and-syslog-how-to-log-in.html" onclick="pageTracker._trackPageview('/outgoing/tuttodebian.blogspot.com/2008/05/iptables-and-syslog-how-to-log-in.html?referer=');">http://tuttodebian.blogspot.com/2008/05/iptables-and-syslog-how-to-log-in.html</a><br />
<a title="Approfondimento su sysctl" href="http://www.linux.it/~rubini/docs/printk/printk.html" onclick="pageTracker._trackPageview('/outgoing/www.linux.it/_rubini/docs/printk/printk.html?referer=');">http://www.linux.it/~rubini/docs/printk/printk.html</a><br />
<a title="Approfondimento su logrotate" href="http://openskill.info/infobox.php?ID=779" onclick="pageTracker._trackPageview('/outgoing/openskill.info/infobox.php?ID=779&amp;referer=');">http://openskill.info/infobox.php?ID=779</a><br />
<a title="Approfondimento su logrotate" href="http://www.uielinux.org/blog/14-usare-linux/87-ubuntu-professionale-usiamo-il-logrotate.html" onclick="pageTracker._trackPageview('/outgoing/www.uielinux.org/blog/14-usare-linux/87-ubuntu-professionale-usiamo-il-logrotate.html?referer=');">http://www.uielinux.org/blog/14-usare-linux/87-ubuntu-professionale-usiamo-il-logrotate.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/08/15/logging-di-iptables-su-file-con-syslog-ng/feed/</wfw:commentRss>
		</item>
		<item>
		<title>File Excel non si apre facendo doppio click</title>
		<link>http://www.ricercheit.net/2008/08/13/file-excel-non-si-apre-facendo-doppio-click/</link>
		<comments>http://www.ricercheit.net/2008/08/13/file-excel-non-si-apre-facendo-doppio-click/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 07:40:40 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Office Automation]]></category>

		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=154</guid>
		<description><![CDATA[Recentemente mi &#232; accaduta una cosa curiosa, su un PC di un utente, facendo doppio click su un file Excel con estensione .xls, si apre normalmente Excel ma non viene aperto il file, senza nessuna notifica o messaggio d&#8217;errore da parte del programma. Provando a cliccare col tasto destro sul file, selezionando la voce &#34;Apri [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente mi &egrave; accaduta una cosa curiosa, su un PC di un utente, facendo doppio click su un file Excel con estensione .xls, si apre normalmente Excel ma non viene aperto il file, senza nessuna notifica o messaggio d&#8217;errore da parte del programma. Provando a cliccare col tasto destro sul file, selezionando la voce &quot;Apri con&#8230;&quot; e scegliendo Microsoft Excel dall&#8217;elenco, viene visualizzato un messaggio d&#8217;errore che indica l&#8217;impossibilit&agrave; di trovare il percorso del file. Se invece si apre Excel, e si va su File -&gt; Apri selezionando dalla finestra di dialogo il file da aprire, la cartella di lavoro si apre normalmente.</p>
<p>Per ritornare ad una situazione decente, &egrave; sufficiente andare nelle opzioni di Excel (menu Strumenti -&gt; Opzioni), andare sulla scheda Generale e deselezionare la casella &quot;Ignora altre applicazioni&quot;. Se invece si possiede una copia di Excel 2007, bisogna cliccare sul pulsante di Office (cio&eacute; la riedizione del pulsante Start di Windows in salsa Office), quindi andare su Opzioni, Avanzate e l&igrave;, nell&#8217;area Generale, deselezionare la casella &quot;Ignora altre applicazioni&quot;.</p>
<p>Cos&igrave; facendo, la cartella di lavoro si aprir&agrave; normalmente con un semplice doppio click sul file Excel.</p>
<p>Link di riferimento<br />
<a href="http://support.microsoft.com/kb/211494" onclick="pageTracker._trackPageview('/outgoing/support.microsoft.com/kb/211494?referer=');"><strong>http://support.microsoft.com/kb/211494</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/08/13/file-excel-non-si-apre-facendo-doppio-click/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aggiornata la versione di Wordpress</title>
		<link>http://www.ricercheit.net/2008/07/27/aggiornata-la-versione-di-wordpress/</link>
		<comments>http://www.ricercheit.net/2008/07/27/aggiornata-la-versione-di-wordpress/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 19:54:02 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/?p=129</guid>
		<description><![CDATA[Normalmente non scrivo post del genere, ma stavolta lo faccio per descrivere l&#8217;esperienza quasi mistica dell&#8217;aggiornamento della versione di Wordpress di questo blog dalla 2.2.2 all&#8217;ultima versione disponibile. Una robusta dose di pigrizia, un&#8217;altra dose consistente di imprudenza, mitigata dalla consapevolezza della scarsa importanza per le sorti del genere umano di questo blog, hanno causato [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente non scrivo post del genere, ma stavolta lo faccio per descrivere l&#8217;esperienza quasi mistica dell&#8217;aggiornamento della versione di Wordpress di questo blog dalla 2.2.2 all&#8217;ultima versione disponibile. Una robusta dose di pigrizia, un&#8217;altra dose consistente di imprudenza, mitigata dalla consapevolezza della scarsa importanza per le sorti del genere umano di questo blog, hanno causato un ritardo mostruoso nell&#8217;aggiornamento della piattaforma. Queste cose si pagano.</p>
<p>Infatti, dopo aver eseguito il backup di tutta la baracca (backup che si &egrave; rivelato poi provvidenziale), aver disattivato i plugin ed aver impostato il tema predefinito, ho aggiornato il tutto: &egrave; con notevole sgomento che mi sono accorto che tutte le categorie si erano volatilizzate, o meglio, esistevano i record delle categorie ma aveva perso tutte le denominazioni. A questo punto, dopo tentativi piuttosto stupidi e soprattutto inutili, ho notato che nella tabella wp_terms esistevano appunto i record, ma che il campo name era impostato a null per tutti i record, non solo, i valori del campo term_id corrispondevano perfettamente ai valori del campo cat_ID della vecchia tabella wp_categories; non rimaneva altro che impostare uno scriptino SQL che popolasse per ogni record il campo name e slug (che corrisponde al campo category_nicename della vecchia tabella wp_categories, campo fondamentale poich&eacute; rappresenta la parte finale dell&#8217;URL della pagina della singola categoria) in corrispondenza del valore adeguato di term_id. Lanciata la query, sono ricomparse le categorie nel giusto ordine, dopodich&eacute; ho potuto procedere nell&#8217;aggiornare ed attivare i vari plugin (per fortuna ne uso pochi), utilizzare un nuovo plugin per le statistiche, ovvero <a href="http://www.irisco.it/?page_id=28" onclick="pageTracker._trackPageview('/outgoing/www.irisco.it/?page_id=28&amp;referer=');"><strong>StatPress</strong></a>, che ha sostituito il valido, ma purtroppo non pi&ugrave; aggiornato, <a href="http://dev.duechiacchiere.it/viewtopic.php?f=3&amp;t=7" onclick="pageTracker._trackPageview('/outgoing/dev.duechiacchiere.it/viewtopic.php?f=3_amp_t=7&amp;referer=');"><strong>WP-SlimStat</strong></a>, ma soprattutto, ho constatato con un bel sospirone di sollievo che il vecchio tema funziona ancora con le poche modifiche che ho apportato.</p>
<p>Dopo questa piccola avventura, direi che il blog funziona come prima, nel caso capitasse a qualcuno di rilevare malfunzionamenti, non esiti a lasciare un commento, grazie!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/07/27/aggiornata-la-versione-di-wordpress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hosting virtuale con Debian: server FTP ProFTPD</title>
		<link>http://www.ricercheit.net/2008/06/24/hosting-virtuale-con-debian-server-ftp-proftpd/</link>
		<comments>http://www.ricercheit.net/2008/06/24/hosting-virtuale-con-debian-server-ftp-proftpd/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 19:30:00 +0000</pubDate>
		<dc:creator>Lorenzo</dc:creator>
		
		<category><![CDATA[Debian / Ubuntu]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Server]]></category>

		<category><![CDATA[Server FTP]]></category>

		<guid isPermaLink="false">http://www.ricercheit.net/2008/06/24/hosting-virtuale-con-debian-server-ftp-proftpd/</guid>
		<description><![CDATA[Facendo riferimento al precedente articolo, che trattava la configurazione degli host virtuali in Apache su un sistema Debian, proseguiamo sulla stessa falsariga e vediamo come configurare in modo opportuno un server FTP che consenta una gestione separata dei diversi siti, impedendo nello stesso tempo agli utenti di girare per il file system e quindi di [...]]]></description>
			<content:encoded><![CDATA[<p>Facendo riferimento al <a href="http://www.ricercheit.net/2008/06/02/hosting-virtuale-con-debian-server-web-apache/"><strong>precedente articolo</strong></a>, che trattava la configurazione degli host virtuali in Apache su un sistema Debian, proseguiamo sulla stessa falsariga e vediamo come configurare in modo opportuno un server FTP che consenta una gestione separata dei diversi siti, impedendo nello stesso tempo agli utenti di girare per il file system e quindi di accedere ad aree della macchina che non competono loro; in questo articolo parler&ograve; di <a href="http://www.proftpd.org/" onclick="pageTracker._trackPageview('/outgoing/www.proftpd.org/?referer=');"><strong>ProFTPD</strong></a>, anche se nell&#8217;articolo precedente avevo citato vsftpd, purtroppo, nell&#8217;installazione in cui ho in funzione vsftpd, ho avuto alcuni problemi di cui non sono riuscito a capire l&#8217;origine, problemi che mi hanno costretto ad utilizzare un altro server FTP, ProFTPD appunto.</p>
<p>Ora dobbiamo configurare in modo opportuno ProFTPD in modo da avere due utenti distinti che gestiscano i due siti creati come descritto nell&#8217;<strong><a href="http://www.ricercheit.net/2008/06/02/hosting-virtuale-con-debian-server-web-apache/">articolo precedente</a></strong>, creando due siti FTP virtuali, con l&#8217;ausilio di un database dedicato su MySQL; installiamo quindi ProFTPD con il supporto per MySQL:</p>
<p><font face="Courier New"># apt-get install proftpd proftpd-mysql<br />
</font></p>
<p>Ora dovremo creare il database per ProFTPD, entrando in MySQL col comando:</p>
<p><font face="Courier New">$ mysql -u root -p</font></p>
<p>quindi, dopo aver inserito la password, creiamo il database proftpd col comando:</p>
<p><font face="Courier New">&gt; </font><font face="Courier New">CREATE DATABASE proftpd;</font></p>
<p>ed ora, creiamo l&#8217;utente MySQL proftpd, al quale diamo le autorizzazioni del caso al database proftpd:</p>
<p><font face="Courier New">&gt; GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO &#8216;proftpd&#8217;@'localhost&#8217; IDENTIFIED BY &#8216;pwdProFTPD&#8217;;<br />
&gt; FLUSH PRIVILEGES;</font></p>
<p>dove, al posto di pwdProFTPD metteremo la password che pi&ugrave; ci aggrada.</p>
<p>A questo punto, seguiamo le istruzioni contenute nel <a href="http://www.howtoforge.com/proftpd_mysql_virtual_hosting_debian_etch" onclick="pageTracker._trackPageview('/outgoing/www.howtoforge.com/proftpd_mysql_virtual_hosting_debian_etch?referer=');"><strong>preziosissimo tutorial di Howtoforge</strong></a>, che spiega passo passo come realizzare un server FTP che permetta di definire dei virtual host, a cominciare dalle indicazioni su come creare un utente ed un gruppo di sistema per ProFTPD, per poi passare alle istruzioni su come creare le tabelle nel database MySQL riguardanti gli utenti e le ftpquotas (le quote di spazio riservato su disco per ogni utente), dopodich&eacute;, a pagina 2 della guida, viene spiegato quali righe aggiungere al file di configurazione /etc/proftpd/proftpd.conf per consentire a ProFTPD di utilizzare un database MySQL come supporto. In particolare, vediamo la riga SQLConnectInfo (in cui vanno inseriti i parametri di connessione al database), la quale, se utilizziamo un database MySQL configurato come descritto in precedenza, va scritta cos&igrave;:</p>
<p><font face="Courier New">SQLConnectInfo proftpd@localhost proftpd pwdproftpd</font></p>
<p>Giunti qui, dobbiamo inserire gli utenti nel database MySQL, in particolare nella tabella ftpuser (ho tralasciato volutamente la parte riguardante le quote disco); la guida presente su Howtoforge &egrave; fatta molto bene, ma ha il difetto di inserire le password degli utenti in chiaro nella tabella del database, cosa che comporta problemi di sicurezza, per cui, dovremo per prima cosa cambiare una direttiva nel file di configurazione di ProFTPD, per poi utilizzare un&#8217;istruzione SQL INSERT diversa da quella riportata su Howtoforge. Il primo passaggio, come detto, consiste nel modificare la direttiva SQLAuthTypes, impostandola in questo modo:</p>
<p><font face="Courier New">SQLAuthTypes Crypt Plaintext</font></p>
<p>che significa che le password degli utenti definiti nel database MySQL devono essere criptate, altrimenti l&#8217;utente non riuscir&agrave; ad autenticarsi su ProFTPD. Ora , dopo aver fatto ripartire il demone proftpd, passiamo all&#8217;inserimento vero e proprio degli utenti nel database proftpd in MySQL, in cui dobbiamo prestare attenzione ad indicare la home directory su cui verr&agrave; rimbalzato l&#8217;utente che si autentica su ProFTPD; in particolare, facendo riferimento all&#8217;articolo riguardante <strong><a href="http://www.ricercheit.net/2008/06/02/hosting-virtuale-con-debian-server-web-apache/">l&#8217;hosting virtuale con Apache</a></strong>, creeremo un utente chiamato u_webtest con password p_webtest (password insicura, utilizzata per comodit&agrave;) e home directory /var/www/webtest, quindi creeremo un altro utente chiamato u_webprova con password p_webprova e home directory /var/www/webprova:</p>
<p><font face="Courier New">&gt; INSERT INTO ftpuser (userid, passwd, uid, gid, homedir, shell, count, accessed, modified) VALUES <br />
&gt; (&#8217;u_webtest&#8217;, ENCRYPT(&#8217;p_webtest&#8217;), 2002, 2002, &#8216;/var/www/webtest&#8217;, &#8216;/sbin/nologin&#8217;, 0, &#8221;, &#8221;);</font></p>
<p><font face="Courier New">&gt; INSERT INTO ftpuser (userid, passwd, uid, gid, homedir, shell, count, accessed, modified) VALUES <br />
&gt; (&#8217;u_webprova&#8217;, ENCRYPT(&#8217;p_webprova&#8217;), 2003, 2003, &#8216;/var/www/webprova&#8217;, &#8216;/sbin/nologin&#8217;, 0, &#8221;, &#8221;);</font></p>
<p>Da notare che per inserire la password &egrave; stata usata la funzione di MySQL &#8216;ENCRYPT&#8217;, la quale utilizza la chiamata di sistema crypt() presente sul sistema operativo, quindi di fatto utilizza lo stesso metodo di cifratura utilizzato da Linux per cifrare le password degli utenti di sistema. Ora, rimangono da impostare i permessi sulle directory dei due siti web, per far s&igrave; che gli utenti FTP possano scrivere al loro interno, dando l&#8217;autorizzazione in scrittura all&#8217;utente ftpuser creato in precedenza:</p>
<p><font face="Courier New"># chown -R ftpuser:www-data /var/www/webtest<br />
# chown -R ftpuser:www-data /var/www/webprova<br />
# chmod -R 775 /var/www/webtest<br />
# chmod -R 775 /var/www/webprova</font></p>
<p>Arrivati fin qui, dobbiamo solamente utilizzare un client FTP per testare la funzionalit&agrave; del nostro server FTP, e, se tutto &egrave; andato bene, dovremmo essere pronti per utilizzare il nostro ProFTPD.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ricercheit.net/2008/06/24/hosting-virtuale-con-debian-server-ftp-proftpd/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
