Combattere lo SPAM con exim

Affrontare lo SPAM è una guerra continua, con regole e situazioni che cambiano di frequente. Riporto qui di seguito alcune considerazioni legate alla configurazione di exim4, in particolare su Debian.

Non elencherò qui le soluzioni più diffuse, come utilizzare spamassassin per la verifica della posta in ingresso, oppure utilizzare le varie blacklist per negare l’accesso a server poco accreditati. Invece, scriverò solo metodi aggiuntivi, per rafforzare ulteriormente il server.

Nome account diverso dal nome della casella di posta elettronica

Molto spesso, chi raccoglie indirizzi di posta elettronica tramite ricerceh su web o tramite la lettura delle rubriche private, tenta poi l’accesso al server di posta utilizzando come nome utente l’indirizzo di posta, con o senza il dominio.

Per esempio, se sulla macchina «macchina.tld» esiste un utente Francesco Rossi con una utenza «francesco», molto probabilmente esistena la casella di posta «francesco@macchina.tld». Se si fa un server di posta, dedicato alla parte SMTP e/o IMAP, vanno definite le utenze e le caselle di posta. Il suggerimento è di usare utenze diverse dalle caselle di posta. Ad esempio, si può dare a Francesco l’utenza «kl2482gg@macchina.tld» che corrisponda alla casella di posta «francesco@macchina.tld».

In questo modo, chi conoscerà la casella di posta «francesco@macchina.tld» tenterà di accedere usando l’utenza «francesco» oppure «francesco@macchina.tld», che non esistono.

Geolocalizzazione

Altra cosa importante è che le credenziali vengono comunque rubate, in un modo o nell’altro, magari tramite virus. Una volta che queste sono in mano agli spammer, verranno effettuate migliaia di connessioni correttamente autenticate verso il server SMTP, che accetterà i messaggi SPAM e cercherà di inviarli.

Una via per limitare questo attacco, è quella di bloccare email inviate da IP stranieri. Per farlo conviene mettere un log per tracciare le nazioni dalle quali si riceve la posta autenticata e capire quali siano le nazioni valide. Su Debian c’è un pacchetto chiamato «geoip-database» che contiene l’elenco degli IP con l’indicazione della nazione di appartenenza. Per exim esiste una libreria dinamica (disponibile qui) che permette di interrogare quel database. Una volta compilata e installata seguendo le istruzioni sul sito della libreria, si devono aggiungere alcuni file di configurazione a exim. Il primo crea una variabile con la nazione dell’IP, chiamiamolo «/etc/exim4/conf.d/acl/exim4-config_check_geoip_parte1»:

#imposta la variabile acl_c_geoip_country_code
warn set acl_c_geoip_country_code = \
${dlfunc{/usr/local/lib/exim4/exim-geoipv6-dlfunc.so}\
{geoip_country_code}{$sender_host_address}}

Il secondo usa la variabile per bloccare l’accesso, chiamiamolo «/etc/exim4/conf.d/acl/exim4-config_check_geoip_parte2»:

#
# Controllo dell'IP origine della connessione.
# Utilizza una libreria e il database degli IP
# la libreria è https://github.com/snabb/exim-geoipv6-dlfunc
# il database e' nel pacchetto geoip-database
#

# nella fase di test, aggiungo una intestazione per controllare la
# variabile
#warn
# condition = ${if def:acl_c_geoip_country_code}
# authenticated = *
# log_message = Accesso autenticato dalla nazione $acl_c_geoip_country_code

# nella fase di test, aggiungo una intestazione per controllare
# l'indirizzo se non è nel database
warn
!condition = ${if def:acl_c_geoip_country_code}
authenticated = *
!hosts = 10.0.0.0/24
log_message = Accesso autenticato da un IP sconosciuto e non della LAN

# accetta email che arrivano da IP della LAN a condizione che
# sia stata fatta l'autenticazione
accept
authenticated = *
hosts = 10.0.0.0/24
log_message = Accesso autenticato da computer in LAN

# accetta email che arrivano da IP di nazioni conosciute, ma mancanti dal database,
# a condizione che sia stata fatta l'autenticazione
accept
authenticated = *
# 88.209.103.0 - 88.209.103.255, Monaco-Telecom, MC
hosts = 88.209.103.0/24
log_message = Accesso autenticato da computer in LAN
# accetta email che arrivano da IP in Francia e Monaco a condizione
# che sia stata fatta l'autenticazione
accept
authenticated = *
condition = ${if def:acl_c_geoip_country_code}
condition = ${if inlist{$acl_c_geoip_country_code}{FR:IT:MC}}
log_message = Accesso autenticato da IP della nazione $acl_c_geoip_country_code

# blocca i messaggi per i quali è stata fatta l'autenticazione SMTP,
# cioè si conosce la password, ma vengono da una naziona conosciuta
# e straniera
# nota: in alcuni casi, acl_c_geoip_country_code non viene inizializzata
# perché l'IP non è nel database. In quel caso, non si entra in questa
# regola
deny
authenticated = *
condition = ${if def:acl_c_geoip_country_code}
!condition = ${if inlist{$acl_c_geoip_country_code}{FR:IT:MC}}
message = Authenticated access from foreign country denied.
log_message = Accesso autenticato da nazione non autorizzata. Rifiutato.

Infine, per fare usare questi due file ad exim, è necessario modificare il file con le opzioni locali, come ad esempio, «/etc/exim4/conf.d/main/000_local_options» aggiungendovi quest righe:

# controllo accessi tramite verifica geografica
CHECK_RCPT_LOCAL_ACL_FILE = /etc/exim4/conf.d/acl/exim4-config_check_geoip_parte1
CHECK_DATA_LOCAL_ACL_FILE = /etc/exim4/conf.d/acl/exim4-config_check_geoip_parte2

Con la geolocalizzazione si bloccano le richieste dall’estero, ma questo potrebbe essere un problema se uno si spostasse all’estero, magari in vacanza. Va quindi usata con attenzione.

Una seconda possibilità, più onerosa dal punto di vista computazionale, è quella di fare il controllo antispam, con spamassassin o altro, anche ai messaggi che arrivano da connessioni autenticate.

L’incontro del partito dei pirati dopo le europee del 2019

Sono venuto a sapere da un amico che i candidati del partito dei pirati che si è presentato alle elenzioni di fine maggio 2019, si sarebbero incontrati a Torino per fare il punto della situazione. Ho deciso di andarli a sentire.

L’incontro si è tenuto il 9 giugno 2019 presso il polo culturale lombroso16, in una delle sale attrezzate per le riunioni. A gestire tutto l’incontro è stato Emmanuale Somma, che mi è parsa la persona con più esperienza politica, peraltro maturata con i Radicali. Sono intervenuti alcuni pirati di persona (Alessandro Ciofini, Marco Ciurcina, Flavio del Soldato, Maria Chiara Pievatolo, Michele Pinassi, Rosaria Talarico, Felice Zingarelli, Monica Amici, Stefania Calcagno) e altri in diretta video (Cristina Diana Bargu, Luigi Gubello, Sara Bonanno). Non c’erano quindi tutti i candidati, ma sicuramente una bella rappresentanza. In sala c’era poca gente, forse tra 20 e 30 persone compresi i candidati.

Queste persone hanno deciso di contribuire al partito dei pirati senza avere grandi esperienze e sapendo per certo che non sarebbero state elette anche a causa della soglia del 4%; ma sono consapevoli di essere riusciti a trasmettere alcuni messaggi importanti. Li hanno trasmessi perché sono riusciti a raggranellare 60809 voti. I messaggi presenti nel programma erano vari, ma dall’incontro ho capito che quelli più importanti per la componente italiana dei pirati sono stati: la riservatezza (alias «privacy»), la diffusione della conoscenza e la disabilità. Devo dire che, anche se messi in quest’ordine, quello che è stato descritto con maggiore ardore dai canditati è il terzo punto, quello sulla disabilità, segue il secondo e infine il primo.

Sul secondo punto, Pievatolo (qui il suo blog minimacademica) ha detto cose interessanti a proposito della possibilità di distribuire i documenti prodotti dagli studi parzialmente o totalmente finanziati con fondi pubblici: a un anno dalla pubblicazione avvenuta su qualche rivista di settore, l’articolo prodotto può essere divulgato dagli autori senza essere bloccati dalla rivista che ne detiene i diritti. Pare che questa pratica sia già stata presa in considerazione dai legislatori di alcune nazioni, mentre manca una legge europea.

Un punto interessante sul quale più d’uno s’è soffermato è la modalità di comunicazione interna. Pare che ci sia stata una «chat» sulla quale alcune persone abbiano avuto dei comportamenti inadeguati. Non so cosa sia successo, ma Rosaria Talarico (qui il suo sito web) è andata contro corrente e ha detto che il problema non è stata la «chat» che intrinsecamente non era lo strumento ideale, bensì le persone. La frase può stupire o meno, ma io sono d’accordo solo per metà: a mio parere gli strumenti come le «chat» scatenano le persone perché non sono abbastanza espressive e lasciano spazio a franintendimenti. Per usarle ci vuole del grano salis che purtroppo è a disposizione di pochissimi.

In ogni caso, adesso che le elezioni sono passate e che nessuno è stato eletto, c’è da decidere cosa fare. I pirati hanno raccolto 60809 voti e alcune centinaia di richieste di iscrizione. Adesso dovranno farle fruttare, ma in questo incontro non è stato detto granché a proposito. Difatti alcuni si sono espressi a favore di continuare una campagna anche su elezioni diverse dalle europee (politiche e amministrative nazionali, regionali, comunali), altri hanno detto che il loro deve restare un partito di scopo. Da quello che ho capito, tutto verrà stabilito anche dopo aver sentito chi si sta iscrivendo ora, ma ci vorrà del tempo poiché il procedimento per l’iscrizione dura alcuni mesi.

Buona fortuna ai pirati e al loro deux ex machina italiano, Emmanuele.

Lettera aperta alla sindaca Appendino

Cara sindaca,
le scrivo per descriverle una situazione che, almeno in parte, le sarà nota, ma con alcuni spunti che, mi auguro, siano utili.

Sono un suo concittadino da quasi due decenni; non conosco granché la Torino del vecchio millennio, quindi limiterò le mie digressioni a questo.
Le scrivo principalmente perché Torino è ormai una città invivibile, e non mi riferisco solo alle problematiche legate all’amministrazione a volte sfuggente, al tempo impiegato negli spostamenti o alla qualità e quantità di negozi o parchi; mi riferisco in maniera molto più concreta all’aria che respiriamo, all’aria che ci sta uccidendo tutti un po’ alla volta.

La mia giornata comincia con il non poter aprire la finestra di casa al mattino perché abito ad un quarto piano su una via abbastanza trafficata di Torino sud. Già da prima delle 7:30 del mattino, l’aria che si respira a balcone, è carica di smog. Quando scendo di casa per portare i bimbi alla vicina scuola, ad appena 300 metri, mi chiedo immancabilmente come mai siamo arrivati a questa situazione. Una situazione che non è solo fastidiosa, ma proprio dannosa: i miei figli, giusto per fare un esempio, sono ormai entrambi soggetti a forti allergie, quel tipo di malattie che prendono l’abbrivio a febbraio e marzo, raggiungono l’apice in primavera e scemano solo ad ottobre. C’è da chiedersi come sia possibile manifestare allergie alle graminacee (giusto per fare un esempio) se nell’aria c’è solo smog. Eppure la scienza ha spiegato che questo clima favorisce lo sviluppo di allergie respiratorie di questo tipo.

Dopo aver portato i bimbi a scuola, vado a lavoro. Visto che non ci si può lamentare e basta, ma si deve contribuire a migliorare (o a non peggiorare) la situazione, vado spesso in bici e lascio l’auto sotto casa. Faccio meno di 5 chilometri attraversando Torino sud da est a ovest. Ci sono vari percorsi ciclabili, come via Onorato Vigliani, corso Settembrini e corso Tazzoli. In alcuni casi la pista ciclabile è, diciamolo, piuttosto farlocca, come quella ricavata sui marciapiedi di via Vigliani o di corso Orbassano (dietro la FIAT), oppure è così da rattoppare che non ci si può neppure avvicinare, come quella sul lato sud di corso Settembrini, oppure va percorsa piegando la testa in giù per non battere la testa sui rami degli alberi, come su corso Tazzoli, o addirittura è stata rimossa per permettere alle auto di parcheggiare comodamente in divieto sul marciapiede, come su una parte del lato nord di corso Settembrini. Ma una cosa accomuna tutti questi percorsi ciclabili: l’aria irrespirabile.
Da qualche tempo vedo ciclisti che usano la mascherina, quella seria, che dicono filtri anche le PM10. A dire il vero ce ne sono anche con la mascherina degli imbianchini, che è un evidente palliativo. Ma mi domando: ci si può ridurre ad andare in giro in bici con la maschera? Siamo veramente arrivati a questo punto? Possibile che non ci sia altra soluzione?

La soluzione ovviamente ci sarà, o magari già c’è, ma di certo qui non è applicata. Ed è chiaro che il problema è complesso e la soluzione deve essere articolata e coinvolgere molte parti, ma è altrettanto chiaro che lei ha ricevuto il mandato dai suoi cittadini per risolvere questo problema, non solo questo, ma anche questo.
In questi anni ho visto nascere la metropolitana, ho visto incrementare l’utilizzo degli autobus a metano e, più di recente, elettrici, ho visto aumentare la diffusione del teleriscaldamento, ho visto nascere servizi di bici e auto in condivisione, queste ultime anche elettriche. Ho visto anche altre azioni volte a mitigare il problema dell’inquinamento. Ho visto anche azioni puramente di facciata, come le domeniche ecologiche o la sezione di vigili in bicicletta.

Ma tutto quello che ho visto (e certamente anche altro di cui non sono al corrente) non ha sortito l’effetto cui puntava. Non so se sia vero, ma si dice che ogni anno a gennaio o febbraio, si raggiunga il tetto consentito di sforamenti della soglia di PM10; si dice che le colonnine per i rilevamenti siano messe in posizioni tali da rilevare meno inquinamento; si dice che le soglie di tolleranza vengano alzate periodicamente. Non so se siano tutte falsità, ma se mi devo fidare del mio naso, al di là di quale scala venga usata per misurare la qualità dell’aria, la situazione è pessima.

Lei adesso copre questo incarico da quasi tre anni. È arrivata lì e ha certamente trovato un’eredità non facile da gestire, tra l’altro con tutti i vincoli di quello che un sindaco può e non può fare, ma non è riuscita a risolvere questo problema. Adesso è troppo tardi per concordare piani a lungo termine: non avrebbe senso dire — faccio due esempi a caso — che la nuova metropolitana verrà costruita in fretta e raggiungerà Piossasco in 15 anni togliendo dalla strada una grossa parte del traffico su gomma che attanaglia corso Orbassano; non avrebbe senso dire che nel giro di 5 anni il parco autobus cittadino sarà completamente convertito all’elettrico. Quello che serve è un’azione immediata e drastica che permetta ai suoi cittadini di uscire di casa e dimenticarsi che un tempo doveva dotarsi di maschere per andare in giro nel traffico.
E se la soluzione è lavare le strade con il detersivo ogni notte, allora da domani notte si deve cominciare; e se la soluzione richiede la concertazione con tutti i sindaci della città metropolitana, allora domani si preoccupi di convocare tutti attorno ad un tavolo per trovare subito una soluzione; e se la soluzione è impossibile da realizzare senza un accordo a livello regionale o nazionale, faccia tutto che quello può perché questo si realizzi al più presto.

E se non sa quale sia la soluzione, allora trovi i cervelloni in grado di trovarla.

La lascio con un ricordo: qualche mese fa vidi un documentario su Barack Obama, nel quale lui diceva qualcosa del tipo: «ogni volta che i problemi da affrontare sono di facile soluzione, questi non arrivano neppure al mio tavolo. Il mio compito è gestire i problemi complessi.»
Lei è «solo» la sindaca di Torino, non deve preoccuparsi dei problemi degli stati uniti d’America, ma facendo le dovute proporzioni, anche lei deve preoccuparsi dei problemi grossi, come quelli che determineranno se i suoi cittadini, tra vent’anni, saranno tutti ricoverati in qualche reparto di pneumologia.

Aggiungere un timeout ad un servizio di systemd

Systemd pare forse troppo veloce ad avviare i server su cui lavoro, dei DELL PowerEdge T110-II con dischi SATA in mirror.
Me ne sono accorto perché, all’avvio del server, il database postgresql non veniva avviato ed il relativo servizio di systemd era in stato «failed». Nei log di postgresql non c’erano errori, ma il database era spento.
Avviare postgresql via systemd da linea di comando ha sempre funzionato correttamente, ma ovviamente questo avviene solo dopo aver avviato il sistema, quando la macchina è meno carica. Difatti all’avvio, systemd fa partire in parallelo tutti i servizi che non hanno dipendenze tra loro. Tutti questi, partendo, leggono dal disco, il file system risponde quindi più lentamente del normale, e postgresql va in timeout.

Continua a leggere

Lago Maggiore International Trail 2018

Il 6 maggio ho corso la 50km del lago maggiore international trail. Si preanunciava una gara molto difficile a causa del cancelli orari piuttosto ristretti, e difatti all’ultimo cancello sono arrivato un po’ in ritardo e sono quindi stato escluso dalla graduatoria. C’è da dire che su 272 partiti, ne sono arrivati in tempo solo 195, mentre gli altri 77 hanno visto il loro pettorale ritirato. Io ho impiegato mezz’ora in più del tempo massimo, e ho distrutto le scarpe…

La corsa è comunque stata molto bella: le parti in quota sono veramente bellissime, ma durante la salita dopo il trentesimo chilometro, quella che porta al secondo cancello, me la sono vista proprio brutta, per la stanchezza e per il percorso per me devastante.

La giornata era prevista con cielo coperto, ma invece c’è stato sempre un gran bel sole, a volta fin troppo forte. Dopo l’arrivo è invece scoppiato un termporale micidiale, con grandinate impietose che hanno lasciato il ghiaccio sul terreno per tutta la notte. Siamo stati fortunati che il temporale è arrivato tardi.

L’organizzazione non è stata il massimo: a parte i tempi stretti ai cancelli, non è stata mantenuta aperta la cucina per fare mangiare che arriva parecchio dopo il termine ultimo. Immaginate uno che ha corso 12 ore, arriva allo scoppio del temporale, e gli dicono che la cucina ha pure chiuso. Altra macchina dell’organizzazione: i pettorali di chi arrivava tardi ai cancelli sono stati trattenuti, ma si tratta di un souvenir che agli atleti piace tenere, e a mio parere andavano annullati, ma non trattenuti. Non si priva del pettorale uno che ha dato il meglio di sè.