Category Archives: Linux & Software

RDNS, SPF, Dkim/Domainkeys – Come non andare in blacklist

mailboxConfigurare un mail server ottimizzato da un punto di vista sistemistico può non essere sufficiente per evitare dei blocchi antispam di terze parti. Ecco qualche tips per evitare di entrare in blacklist .

Avendo avuto a che fare con un server di posta con IP in blacklist su vari network antispam, mi sono deciso a scrivere una piccola guida per evitare problemi di recapito su alcuni dei provider di posta più famosi: Yahoo, Gmail e Hotmail. Spero che possano tornarvi utili.

Strumenti

Gli strumenti da utilizzare sono molteplici, alcuni poco digeribili. Vediamoli un po’ in dettaglio.

  • RDNS:
    è l’acronimo di Remote DNS, ed in parole povere sarebbe il record PTR dell’indirizzo IP del vostro mail server. I record PTR sono risoluzioni inverse del vostro nome a dominio. Un esempio può chiarirvi le idee:
    Il mio dominio ha IP 173.236.69.81
    <div id="_mcePaste">luca@monitor:~$ host lucarossi.info</div>
    <div id="_mcePaste">lucarossi.info          A       173.236.69.81</div>
    Il mio IP dovrà quindi risolvere lucarossi.info
    <div id="_mcePaste">luca@monitor:~$ host 173.236.69.81</div>
    <div id="_mcePaste">Name: lucarossi.info</div>
    <div id="_mcePaste">Address: 173.236.69.81</div>
    Se questo record è sbagliato, i vostri messaggi potrebbero essere direttamente scartati o marcati come junk mails.
    Normalmente, se avete server in affitto o VPS,  dovrete chiedere al vostro provider un cambio di record PTR, anche se normalmente gran parte dei ISP hanno la possibilità di farlo direttamente dal loro pannello di configurazione.
  • SPF e SenderID:
    sono degli strumenti antispam che, grazie a dei record DNS appositamente creati, riescono a definire il luogo dal quale è stata spedita una specifica e-mail. Utilizzando i record DNS infatti, SPF riesce ad indicare quali indirizzi IP possono essere usati dal mittente per spedire un’e-mail. Attualmente quasi tutti i grandi provider di posta implementano SPF nei loro server, e la pubblicazione dei record è altamente consigliata.  Le differenze tra SenderID e SPF sono poche, anche se non stiamo parlando del medesimo protocollo.  SenderID è un protocollo di Microsoft che deriva da SPF (è infatti utilizzato dai server hotmail).  Secondo quanto rilasciato da Microsoft, SPF implementerebbe anche le specifiche SenderID. È quindi consigliabile utilizzare il framework SPF invece che SenderID.
  • Dkim e DomainKeys:
    sono due sistemi utilizzati per la verifica del mittente, del dominio e dell’integrità del messaggio. Entrambi utilizzano una crittografia asimmetrica (cioè basata su chiave pubblica e chiave privata). La chiave pubblica viene fornita trame un record DNS e la chiave privata dal server SMTP che firmerà l’email in uscita.  Domainkeys è una tecnologia creata da Yahoo, ed al momento non viene più supportato. DKIM è lo strumento utilizzato attualmente. Due progetti attualmente attivi che implementano DKIM sono: Dkim-milter e OpenDkim. Entrambi funzionano bene e non ho trovato nessuna particolare differenza (solo per quanto riguarda le licenze).

Se Hotmail/MSN ci blocca

Può Capitare che le email che inviamo a destinatari Hotmail, Live o Msn ci blocchino o ci mettano in posta indesiderata. Nel primo caso, nel messaggio di errore 550 del server SMTP troverete un codice errore di Microsoft, controllate cosa c’è che non va in questa pagina.

Se hotmail si ostina a non voler recapitare la vostra posta, dovrete – dopo esservi assicurati che la votra configurazione sia corretta – compilare la pagina della richiesta di sblocco. Io sono stato rimosso dalla loro blacklist dopo circa 24 ore.

Utilizzare strumenti web

Lo strumento più comodo per verificare il corretto funzionamento dei vostri record, è controllare direttamente il sorgente delle email che inviate. Io normalmente uso Gmail. Invio a me stesso una mail di test a Gmail e controllo gli headers. Un esempiodi di header (a mio avviso) corretto è:

Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates xxx.xxx.xxx.xxx as permitted sender) [email protected]; dkim=pass [email protected]

Un altro strumento utile è MxToolbox, si usa per controllare se siete finiti in qualche blacklist.

AGI – Asterisk Gateway Interface

asterisk logo TM
Asterisk prevede un’interfaccia di scripting standard, che programmi esterni possono utilizzare per controllare il Dialplan di Asterisk: l’Asterisk Gateway Interface (AGI).

Oggi mi sono sono dovuto cimentare con Asterisk 1.6 e la chiamata a script esterni che ne controllano il dialplan: L’interfaccia AGI.

Normalmente gli script AGI sono utilizzati per sviluppare ambienti di logiche avanzate, interazioni con database relazionali (PostgreSQL o MySQL per esempio) o accessi a risorse esterne.

Come funzionano gli script AGI?

Gli script AGI comunicano con Asterisk tramite canali di comunicazioni standard, ovvero lo STDIN (standard input), lo STDOUT (standard output) e lo STDERR (standard error).

Più in particolare:

  • Lo script AGI leggerà dallo STDIN per avere informazioni da Asterisk
  • Lo script AGI scriverà dati nello STDOUT per inviare informazioni ad Asterisk
  • Lo script AGI scriverà dati nello STDERR per inviare informazioni di debug alla console di Asterisk (Asterisk -r)

Le comunicazione tra AGI e Asterisk

La comunicazione tra AGI e Asterisk avviene seguendo dei pattern predefiniti. Quando uno script AGI viene chiamato, Asterisk invia una serie di variabili con i rispettivi valori. Eccone un esempio:

agi_request: test.py
agi_channel: Zap/1-1
agi_language: en
agi_callerid:
agi_context: default
agi_extension: 123
agi_priority: 2

Dopo aver inviato queste informazioni, Asterisk invia una linea bianca. Questo è il segnale che Asterisk ha inviato tutte le variabili, e che il controllo del dialplan viene affidato allo script AGI.

A questo punto, lo script AGI invia dei comandi al dialplan Asterisk tramite lo STDOUT. Dopodiché, Asterisk invia una risposta che lo script AGI dovrebbe leggere. Queste azioni possono essere ripetute durante tutta la durata dello script.

Come si chiama uno script AGI dal dialplan?
Un esempio di come di può chiamare lo script AGI è questo:

exten =&gt; 123,1,Answer()
exten =&gt; 123,2,AGI(agi-test.agi)

Tutti gli script AGI normalmente risiedono in /var/lib/asterisk/agi-bin (in Debian li troviamo in /usr/lib/asterisk/agi-bin mi sembra, ma non ne sono sicuro)

AGI(), EAGI(), DeadAGI(), and FastAGI()

Oltre ad AGI, ci sono altre tipologie di interfacce che possono essere utilizzate da Asterisk. Ecco alcune caratteristiche:

  • EAGI o enhanced AGI: è un’applicazione che funziona come AGI, ma da la possiblità allo script di leggere lo stream audio in arrivo dal file-descriptor numero 3.
  • DeadAGI: funziona esattamente come AGI, ma su canali morti (per esempio dopo un hangup). Questo significa che AGI non funziona su canali morti.
  • FastAGI: è un’applicazione che permette la chiamata a script AGI su server remoti.

Alcuni riferimenti

Ecco qui alcuni link a librerie e risorse interessanti e utili:

Librerie

  • Asterisk-perl: librerie Perl per lo sviluppo di script AGI in Perl.
  • PHP-AGI: librerie PHP per lo sviluppo di script AGI in PHP.
  • Pyst: librerie Python per lo sviluppo di script AGI in Python

Servers FastAGI (che ho provato)

  • AGIspeedy: Server AGI in Perl. Funziona molto bene, anche se l’implementazione degli script non è proprio user-friendly
  • FastAGI.php: Non sono riuscito a farlo andare con Asterisk 1.6. È scritto un po’ coi piedi..

Gli altri non li ho provati.

Fonti

Nagios, il mio servizio di monitoraggio

Chi mi conosce, lavora con me o ha dei servizi sopra i miei server sa che ho a disposizione un servizio di monitoraggio basato su Nagios.

Il server che ospita il servizio è il mio monitor.lucarossi.info, dove, oltre a Nagios, ci giro Asterisk e poche altre cose (sopratutto di testing).

Al momento controlla un buon numero di server e non mi ha mai dato problemi né di carico, ne di hang, nonostante il tutto giri su VPS. Ne sono contento.

Di solito non faccio pagare questo tipo di servizi – a meno che non abbiate bisogno anche di assistenza tecnica – e li offro sopratutto a colleghi che hanno bisogno di qualcosa di veloce per la serie “una mano lava l’altra”

Vi invito comunque a visitare l’apposita pagina del mio Nagios e a contattarmi se siete interessati!