Reti/ Sendmail, il postino che viene da lontano

Facciamo la conoscenza di uno dei server di posta più utilizzato su Internet, Sendmail, e scopriamo come configurarne i servizi di base, con un occhio anche alla sicurezza


La posta elettronica è senza dubbio il vantaggio primario offerto della grande rete: questo servizio è molto importante sia per l’utente casalingo che per le aziende. Non è mio compito analizzare la funzione sociale ed economica dei messaggi di posta elettronica, ma credo sia interessante tentare di spiegare il funzionamento di un server ed in particolare di uno dei server più conosciuti su Internet: Sendmail.

Il programma che si occupa di inoltrare i messaggi e-mail nella rete è un agente di trasporto, il termine tecnico utilizzato è MTA, ovvero Mail Transport Agent. I sistemi MTA sono dei server di posta elettronica che utilizzano il protocollo SMTP (Simple Mail Transport Protocol) per trasferire i messaggi di posta da una sottorete Internet ad un’altra.

Sendmail da decenni è il server di posta maggiormente utilizzato, le sue fortune e la sua storia passano inevitabilmente per i problemi che lo hanno afflitto negli anni passati relativi alla sicurezza dei sistemi informatici nei quali veniva utilizzato. In questo ultimo anno nel mondo dei sistemisti UNIX vanno affermandosi anche nuovi prodotti studiati allo scopo, ma Sendmail comunque accompagna la grande maggioranza delle distribuzioni UNIX/Linux.

Con un po ‘ di pazienza, è possibile configurare il programma come efficiente ed affidabile agente di trasporto per la posta elettronica. Per la stesura di questo modesto manuale operativo ho utilizzato un sistema Linux Red Hat 6.2 ed ho utilizzato una configurazione minima per garantire l’immediata operatività del servizio.

Configurazione e file utilizzati da Sendmail

Per utilizzare Sendmail come server centrale per la posta elettronica (Central Mail HUB server) è necessario disporre dei seguenti file:

/etc/sendmail.cw
/etc/mail/access
/etc/aliases
/etc/mail/virtusertable
/etc/mail/domaintable
/etc/mail/mailertable
/etc/mail/virtusertable.db
/etc/mail/domaintable.db
/etc/mail/mailertable.db
/etc/sendmail.mc
/etc/sysconfig/sendmail
/etc/rc.d/init.d/sendmail (script)

Per utilizzare Sendmail come client di rete e come server locale è necessario disporre anche dei seguenti file:

/etc/null.mc
/etc/sysconfig/sendmail
/etc/rc.d/init.d/sendmail

Fra i file più importanti per la configurazione ed il funzionamento di Sendmail vi sono /etc/mail/access e /etc/mail/access.db.
Il database “access” viene creato per accettare o rigettare l’invio di posta dai domini selezionati: ad esempio è possibile rifiutare tutta la posta inviata dagli spammers conosciuti. Il database “access” è necessario solo se si vuole utilizzare Sendmail come server principale per la posta elettronica: questo è il file che viene utilizzato contro le consegne non autorizzate. Supponiamo di dover gestire una intranet di un’azienda abbastanza grande, con diverse reti, e si voglia controllare la posta da un singolo server: per fare questo è necessario configurare la consegna utilizzando le direttive contenute nel file /etc/mail/access come segue.

Esempio di file /etc/mail/access:

# il formato del file viene descritto di seguito
# la tabella di seguito utilizza indirizzi di posta elettronica,
# nomi di dominio ed indirizzi IP
#
# spammer@aol.com REJECT
# cyberspammer.com REJECT
# 192.168.212 REJECT
#
# con queste istruzioni vengono rifiutate tutte le e-mail
# provenienti dall’utente spammer@aol.com, tutte le e-mail
# provenienti dal dominio cyberspammer.com e tutte le e-mail
# provenienti da qualsiasi host facente capo
# alla rete 192.168.212.*
#
# i valori che identificano le funzionalità del server sono
#
# OK Accetta la posta anche se il nome del dominio
# non è risolvibile
# RELAY Accetta posta indirizzata dal dominio indicato o permette
# al dominio/network di utilizzare sendmail come server SMTP
# per il RELAY dei messaggi, e’ implicito l’OK per ulteriori
# controlli
# REJECT rigetta al mittente con un messaggio generico
# DISCARD scarica completamente il messaggio utilizzando
# “$#discard mailer”. Questa opzione funziona solo per gli
# indirizzi di spedizione in sostanza non accetta posta dal
# mittente e non invia nessun messaggio di mancata consegna
# al mittente
#
cyberspammer.com 550 non autorizzato a ricezione
ok.cyberspammer.com OK
sendmail.org OK
128.32 RELAY
#
#
#
#
#
# il server accetta posta dal computer ok.cyberspammer.com ma
# rigetta la posta da qualsiasi altro host facente capo al
# dominio cyberspammer.com, inoltre il server accetta posta
# inviata dal dominio sendmail.org ed autorizza all’invio dei
# messaggi “relay” la rete 128.32.*.*
#
# e’ possibile utilizzare il database per bloccare l’indirizzo
# dell’utente basando dunque il controllo sullo “username” che
# e’ a capo dell’indirizzo completo di e-mail
#
nome.utente@ 550 non accettiamo messaggi di posta
#
# e’ necessario includere il simbolo “@” dopo il nome dell’utente
# per significare al database il tipo di controllo sulla porzione
# nome utente dell’indirizzo di posta elettronica
#
# ecco la configurazione di base del file /etc/mail/access
#
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
# fine file

Esempio di file /etc/mail/access.db

Ricordiamo che il file /etc/mail/access è un database, dopo aver generato il file di testo sopracitato è necessario utilizzare l’utility “makemap” per generare la mappa del database, per creare il “access database map” dovrà essere utilizzato il comando seguente:

[root@merlino /root]# makemap hash /etc/mail/access.db < /etc/mail/access

oppure

[root@merlino /root]# cd /etc/mail
[root@merlino /root]# make

Ora andiamo a parlare dei due file /etc/aliases e /etc/aliases.db per gli alias di e-mail.
L’aliasing è il processo di conversione di un nome utente del sistema locale in un altro: esso funziona solo per gli utenti del sistema locale. E’ uso convertire un nome generico (root) in uno username reale o convertire un nome in una lista di molti nomi. Sendmail controlla se il nome dell’utente è stato inserito nel database /etc/aliases.db e si regola di conseguenza.

Esempio di file /etc/aliases

#
# @(#) aliases 8.2
# aliases del sistema di base
MAILER-DAEMON: postmaster
postmaster: root
#
# redirezione per gli account generici
bin: root
daemon: root
nobody: root
#
# utente che legge i messaggi di posta di root
root: admin
#
# redirezione verso più utenti (lista)
mlist: paolo,alex,luca,fede
#

Il file /etc/aliases.db è invece la mappa del database di alias (access database map) generata tramite l’utility “makemap”:

[root@merlino /root]# makemap hash /etc/aliases.db < /etc/aliases

Questa operazione andrà ripetuta ogni qual volta si aggiunge un alias nel file /etc/aliases.

Il file /etc/sendmail.cw viene letto da Sendmail per ottenere nomi alternativi per l’host locale, nel nostro caso per il sever centrale di gestione della posta elettronica. Si dichiara dunque una lista di nomi di host nella nostra rete che sono previsti per l’host locale che devono essere presenti anche nel campo MX del servizio di risoluzione dei nomi di dominio (DNS). Il file /etc/sendmail.cw è richiesto solo per il server che riceve i messaggi di posta elettronica. Ecco di seguito un esempio del file /ect/sendmail.cw

# sendmail.cw – include anche gli alias per l’host locale
localhost
dominolocale.net
nomehost.dominiolocale.net
smtp.dominiolocale.net
#


Le ultime versioni
di sendmail includono alcune opzioni che consentono di evitare lo " Spamming ",
ovvero l’invio di messaggi a scopo pubblicitario da utenti non autorizzati. E’
possibile evitare che l’MTA non venga utilizzato da utenti non autorizzati. Per
fare questo è necessario modificare il file sendmail.cf

Disabilitare EXPN
e VRFY

Due comandi SMTP
che lasciano passare informazioni sono EXPN (expand, espandi) e VRFY (verify,
verifica), chi attacca usa questi comandi per identificare utenti validi ed
espandere liste di distribuzione, disabilitare queste due opzioni è una cosa
saggia, vediamo con un accesso telnet, per esempio, l’espansione di una
simplelist con la rilevazione di alcuni destinatari che possono essere bersagli
per l’attacco.

? #

[root@merlino
/root]# telnet localhost 25


Trying
127.0.0.1….


Connected
to localhost


Escape
character is ‘^]’.


220
nomehost.dominiolocale.net ESMTP Sendmail 8.9.3/8.9.3


Sun,
11 Jul 1999 19:35:31


-0400

EXPN

501
Argument required


EXPN
samplelist


250
<utente1@nomehost.dominiolocale.net>


250
<utente2@nomehost.dominiolocale.net>


250
<utente3@nomehost.dominiolocale.net>


quit

221
nomehost.dominiolocale.net closing connection


#

editare il file ( mc
-e /etc/sendmail.cf
) e cambiare le linee:

#privacy
flag


O
PrivacyOptions=authwarnings


in

O
PrivacyOptions=authwarnings, noexpn,novrfy

Questa modifica
non consente agli spammers di utilizzare i comandi "EXPN" e "VRFY"

Indicare il paese
di provenienza e la provincia nel banner di presentazione del servizio

Quando Sendmail
accetta un messaggio SMTP invia un messaggio di ringraziamento all’altro host,
questo messaggio identifica l’host locale ed è il primo messaggio che
visualizza quando è attivo [ready]

editare il file ( mc
-e /etc/sendmail.cf
) e cambiare le linee:

O
SmtpGreetingMessage=$jSendmail$v/$z;$b


in

O
SmtpGreetingMessage=$jSendmail$v/$z;$b NO UCE C=xx L=xx

In effetti questa
modifica non comporta nessun effetto visibile, ma viene raccomandata nei gruppi
di discussione USENET come precauzione legale. Viene modificato il messaggio con
il quale Sendmail visualizza le connessioni ricevute. E’ possibile sostituire
"xx" nell’istruzione " C=xx
L=xx
" con l’indicativo della nazione e della provincia
nella quale è ubicato il server.

E’ possibile utilizzare " C=IT L=RM "
per indicare il paese Italia e la provincia di Roma.

In genere,
qualsiasi utente può esaminare la coda dei messaggi di mail utilizzando il
comando "mailq". Per identificare chi deve esaminare la coda dei
messaggi, è necessario specificare l’opzione "restrictmailq" nel file
/etc/sendmail.cf. Con questa opzione, sendmail autorizza solo alcuni utenti di
un gruppo proprietario a cosultare la directory di coda dei messaggi in una
apposita directory "queue" totalmente protetta con il "mode
0700".

Editare il file ( mc
-e /etc/sendmail.cf
) e cambiare le linee:

O
PrivacyOptions=authwarnings,noexpn,novrfy


in

O
PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq

è ora necessario
modificare il "mode" per la directory queue per proteggerla da accessi
indesiderati

[root@merlino /root]#chmood
0700 /var/spool/mqueue

E’ anche possibile
configurare Sendmail tramite LinuxConf, questo software è stato realizzato per
configurare molti servizi di un server Linux e generalmente viene fornito con la
Red Hat.


Stefano
Tagliaferri

La tua email sarà utilizzata per comunicarti se qualcuno risponde al tuo commento e non sarà pubblicato. Dichiari di avere preso visione e di accettare quanto previsto dalla informativa privacy

Chiudi i commenti