<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TommyBlue.it &#187; reverse DNS</title>
	<atom:link href="http://www.tommyblue.it/tag/reverse-dns/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tommyblue.it</link>
	<description>Bombardare per la pace è un po' come trombare per la verginità...</description>
	<lastBuildDate>Tue, 24 Jan 2012 09:34:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>DNS e Postfix: come non generare &#8220;spam&#8221;</title>
		<link>http://www.tommyblue.it/2010/01/18/dns-e-postfix-come-non-generare-spam/</link>
		<comments>http://www.tommyblue.it/2010/01/18/dns-e-postfix-come-non-generare-spam/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 01:02:50 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[DomainKeys]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[reverse DNS]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=768</guid>
		<description><![CDATA[Edit (29/01/2010): Aggiunte una correzione per far funzionare la firma DKIM su server di relay Ho recentemente configurato alcuni server per l&#8217;invio di email. Parte del lavoro ha riguardato la corretta configurazione di Postfix e del server DNS per evitare che le email inviate venissero rilevate come spam. In una diversa guida spiegherò come ottimizzare [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Edit (29/01/2010): Aggiunte una correzione per far funzionare la firma DKIM su server di relay</strong></p>
<p>Ho recentemente configurato alcuni server per l&#8217;invio di email. Parte del lavoro ha riguardato la corretta configurazione di Postfix e del server DNS per evitare che le email inviate venissero rilevate come spam.<br />
<em>In una diversa guida spiegherò come ottimizzare la configurazione di Postfix per grandi quantità di email (≥1.000.000/mese). Dato che già in molti me lo hanno chiesto: no, non si tratta di server per l&#8217;invio di spam, ma server per il <a href="http://en.wikipedia.org/wiki/E-mail_marketing" target="_blank">mail marketing</a> (quando il servizio sarà pubblico potrò tranquillamente rivelarne il nome).<br />
</em></p>
<p>La configurazione ha riguardato <strong>tre punti principali</strong>:</p>
<ul>
<li>Impostazione del record A e del reverse address</li>
<li>Impostazione di SPF</li>
<li>Configurazione di DKIM e DomainKeys</li>
</ul>
<p><span id="more-768"></span></p>
<h3>Record A e Reverse Address</h3>
<p>Per iniziare, il server SMTP deve avere un <strong>record DNS di tipo A</strong> associato. Quindi, ad esempio:</p>
<pre>mailer1.mydomain.com IN A 12.34.56.78</pre>
<p>Tale impostazione è a carico del proprietario del dominio <em>mydomain.com</em> (ovvero: voi).<br />
Allo stesso tempo bisogna impostare il <strong>DNS inverso</strong> per una corretta risoluzione: infatti il server che riceverà una mail dall&#8217;ip <em>12.34.56.78,</em> che dice di essere <em>mailer1.mydomain.com</em>, vorrà avere riscontro di tale associazione <strong>IP&lt;=&gt;Dominio</strong>. Effettuerà quindi una risoluzione DNS inversa che, nel caso in esempio, dovrà restituire <em>mailer1.mydomain.com</em>. Questa configurazione è a carico del fornitore della connettività e dell&#8217;ip, generalmente coloro che vi forniscono l&#8217;hosting.</p>
<p>Per verificare la corretta configurazione basta usare <strong>dig</strong>:</p>
<pre>~$ dig +short mailer1.mydomain.com
12.34.56.78 

~$ dig +short -x 12.34.56.78
mailer1.mydomain.com.</pre>
<h3>Sender Policy Framework</h3>
<address><strong>Sender Policy Framework</strong> abbreviato in <strong>SPF</strong> è un metodo per limitare gli abusi del nome del mittente nei messaggi di posta elettronica. Si tratta di un protocollo tramite il quale è possibile definire <em>da dove</em> viene spedita la posta elettronica per una certa classe di mittenti. (WikiPedia)</address>
<p>Sebbene non nuovissimo, SPF è largamente utilizzato e una sua corretta configurazione permette già una certa sicurezza nel fatto che le mail inviate non vengano riconosciute come spam. Si tratta semplicemente di impostare un record DNS di tipo TXT indicante quali server sono autorizzati ad inviare email per tale dominio.</p>
<p>Le configurazioni possibili sono molte (potete consultarle nell&#8217;<a href="http://tools.ietf.org/html/rfc4408" target="_blank">RFC 4404</a>), nel nostro caso il record potrebbe essere:</p>
<pre>v=spf1 mx ip4:12.34.56.78 ~all</pre>
<p>Oltre alla versione (<strong>v=spf1</strong>), indica che gli host con associato un record MX per il dominio, oltre al server con ip <em>12.34.56.78</em>, possono inviare email. Inoltre indica, con <strong>~all</strong>, che tale configurazione comprende tutti i possibili host che inviano email per il dominio.</p>
<p>Potete utilizzare <a href="http://old.openspf.org/wizard.html" target="_blank">questo tool</a> per creare i vostri record SPF.</p>
<h3>DKIM e DomainKeys</h3>
<p>DomainKeys e DKIM sono due sistemi per la verifica del mittente nel dominio e l&#8217;integrità del messaggio. Entrambi utilizzano il sistema a chiave pubblica/privata: la chiave pubblica è distribuita in un record DNS e la chiave privata viene utilizzata dal server SMTP per firmare l&#8217;email prima del suo invio. <strong>DomainKeys</strong> è nata in casa <strong>Yahoo</strong> (che, tra i grandi ISP, è l&#8217;unica che lo utilizza, a quanto ne so), <strong>DKIM</strong> (<strong><a href="http://en.wikipedia.org/wiki/DomainKeys_Identified_Mail" target="_blank">DomainKeys Identified Mail</a></strong>) è la sua evoluzione.</p>
<p>Nel mio caso uno tra i requisiti del server è quello di permettere la personalizzazione dei campi <em>From</em> e <em>Reply-To</em> mentre il collegamento col server di invio è rappresentato dal campo <em>Return-Path</em> valorizzato con il dominio del server. Data la difficoltà nell&#8217;impostare DomainKeys con tale configurazione e data la sua scarsa diffusione, mi sono intanto limitato alla configurazione di DKIM per la quale ho seguito <a href="https://help.ubuntu.com/community/Postfix/DKIM" target="_blank">questa guida</a> con alcune modifiche.</p>
<p>Si inizia installando <strong>dkim-filter</strong>:</p>
<pre>~$ sudo apt-get install dkim-filter</pre>
<p>e generando le chiavi per il server con l&#8217;apposito tool</p>
<pre>~$ dkim-genkey -s mailer1 -d mydomain.com -t</pre>
<p>Dopo questo comando nel file <strong>mailer1.private</strong> vi sarà la chiave privata mentre nel file <strong>mailer1.txt</strong> una possibile configurazione per il record DNS:</p>
<pre>mailer1._domainkey IN TXT "v=DKIM1; g=*; k=rsa; t=y; p=MIGfMA0GC[...cut...]8FsXOPbuUQIDAQAB" ; ----- DKIM mailer1 for mydomain.com</pre>
<p>Sebbene questo record sia corretto, le opzioni sono molte e consiglio un&#8217;attenta lettura degli RFC (linkati sulla <a href="http://en.wikipedia.org/wiki/DomainKeys_Identified_Mail" target="_blank">pagina dedicata di WikiPedia</a>), in particolare potreste essere interessati a modificare &#8220;<strong>t=y;</strong>&#8221; in &#8220;<strong>t=;</strong>&#8221; dichiarando che il servizio di firma non è in fase di test. A tale record consiglio di aggiungerne un secondo, più generale:</p>
<pre>_domainkey.mydomain.com. IN TXT "o=~"</pre>
<p>che indica che non tutte le email generate dal dominio vengono firmate (l&#8217;alternativa è &#8220;<strong>o=-</strong>&#8220;).</p>
<p>A questo punto si prosegue con la configurazione del file <strong>/etc/default/dkim-filter</strong>. Basta decommentare una delle righe che specificano un socket. Io ho scelto di utilizzare:</p>
<pre>SOCKET="inet:20209@localhost"</pre>
<p>Proseguiamo quindi con <strong>/etc/dkim-filter.conf.</strong> Riporto tutte le configurazioni fatte, ricordandovi che tale configurazione è studiata per permettere la personalizzazione dei campi From e Reply-To (e quindi una sorta di configurazione multidominio):</p>
<pre>Syslog                  yes
SyslogSuccess           yes
UMask                   022
UserID                  dkim-filter:dkim-filter
Socket                  inet:20209@localhost
Domain                  *
Selector                mailer1
AutoRestart             yes
Background              yes
Canonicalization        simple
DNSTimeout              5
Mode                    sv
SignatureAlgorithm      rsa-sha1
SubDomains              no
X-Header                yes
Statistics              /var/log/dkim-filter/dkim-stats
AllowSHA1Only           no
AlwaysAddARHeader       no
AutoRestartRate         10/1h
Canonicalization        simple/simple
KeyList                 /etc/mail/dkim/keylist
MTA                     MSA
On-Default              reject
On-BadSignature         reject
On-DNSError             tempfail
On-InternalError        accept
On-NoSignature          accept
On-Security             discard
PidFile                 /var/run/dkim-milter/dkim-milter.pid
RemoveOldSignatures     yes</pre>
<p>Il file <strong>/etc/mail/dkim/keylist</strong> contiene:</p>
<pre>*:mydomain.com:/etc/mail/dkim/keys/mydomain.com/mailer1</pre>
<p>mentre il file <strong>/etc/mail/dkim/keys/mydomain.com/mailer1</strong> contiene la chiave privata, ovvero il file <strong>mailer1.private</strong> precedentemente creato, spostato in una cartella adatta e con i giusti permessi:</p>
<pre>~$ mv mailer1.private /etc/mail/dkim/keys/mydomain.com/mailer1
~$ chmod 600 /etc/mail/dkim/keys/mydomain.com/mailer1
~$ chown dkim-filter:dkim-filter /etc/mail/dkim/keys/mydomain.com/mailer1</pre>
<p>Se il server di invio email riceverà email da altri server (di cui è quindi un <em>relayhost</em>) sarà necessario specificare quali sono i server &#8220;fidati&#8221;. Quindi nel file <strong>/etc/dkim-filter.conf</strong> bisogna aggiungere:</p>
<pre>InternalHosts           /etc/mail/dkim/trusted-hosts</pre>
<p>e bisogna creare il file /<strong>etc/mail/dkim/trusted-hosts</strong> contenente (uno per linea) gli indirizzi ip dei server (attenzione che contenga anche l&#8217;indirizzo ip di localhost, <em>127.0.0.1</em>).</p>
<p>Per concludere è necessario configurare Postfix per firmare le email, aggiungendo nel file <strong>/etc/postfix/main.cf</strong>:</p>
<pre>smtpd_milters = inet:localhost:20209
non_smtpd_milters = inet:localhost:20209
milter_protocol = 2
milter_default_action = accept</pre>
<p>Adesso basta far partire i due demoni e si può provare ad inviare una email:</p>
<pre>~$ sudo /etc/init.d/dkim-filter start
~$ sudo /etc/init.d/postfix start
~$ echo "Questa email è una prova" | mail -a "From: qualcosa@miodominio.it" -a "Reply-To: dilloame@dominio.it" -s "Email di test" recipient@dominioricevente.it -- -f mailer1@mydomain.com</pre>
<p>In <strong>/var/log/mail.log</strong> potete verificare l&#8217;avvenuta firma:</p>
<pre>Jan 18 00:26:35 mailer1 dkim-filter[21178]: XXXXXXXXXX "DKIM-Signature" header added</pre>
<p>Se inviate la mail a un dominio <em>yahoo.com</em> o <em>gmail.com</em> potete verificare subito se la firma ha avuto successo. Ad esempio ecco l&#8217;header di una mail ricevuta da Yahoo:</p>
<pre>Authentication-Results: mta1169.mail.mud.yahoo.com  from=miodominio.it; domainkeys=neutral (no sig); from=mydomain.com; dkim=pass (ok)</pre>
<p>Questa prima guida è conclusa. Spero di riuscire a trovare a breve una soluzione per la configurazione di DomainKeys in modo da poter integrare questo articolo</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2010/01/18/dns-e-postfix-come-non-generare-spam/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

