Installazione e configurazione di Berkeley sendmail
su piattaforma Unix

Luca dell'Agnello
luca.dellagnello@cnaf.infn.it

V 1.3
18 Novembre 1999




Fra gli MTA (Mail Transport Agent) di pubblico dominio il Berkeley sendmail è quello più completo, più aderente agli standard (RFC821, 822, .....) ed affidabile.

Recentemente è stata rilasciata la versione 8.9.3, la cui installazione è fortemente consigliata per eliminare la possibilità che la propria macchina venga illecitamente usato per fare mail spamming. In questa versione sono anche risolti altri problemi di sicurezza (cioè bug del codice) presenti nelle versioni precedenti.

La principale differenza delle versioni 8.9.x rispetto alle versioni 8.8.x è una maggiore facilità di configurazione per la protezione dal mail spam, accompagnata anche da una maggiore "granularità" nel controllo stesso.
 

Compilazione del codice

Copiare sul proprio nodo il codice (sendmail.8.9.3) e spacchettarlo.

Con sendmail vengono distribuiti alcuni applicativi collaterali:

La compilazione di sendmail e dei vari applicativi non richiede nessuna particolare procedura: è sufficiente eseguire lo script Build dalla directory opportuna.

Analogamente l'installazione avviene dando il comando: sh Build install.
Avvertenze:
  • La gestione delle mailbox da parte di mail.local non è compatibile, su alcuni Sistemi Operativi (Solaris, HP-UX), con quella dei MUA (Mail User Agent) e dei server POP e IMAP.

  • Per tale motivo l'installazione di mail.local non è automatica: è possibile tuttavia forzarla con il comando: sh Build force-install
  • Nel caso in cui mail.local non venga utlizzato, togliere dal file di configurazione il riferimento.
    In tal caso verificare inoltre che il path del mailer locale proprietario sia correttamente definito in sendmail.cf
  • Gli applicativi mail.local e smrsh vengono solitamente installati in /usr/libexec

  • Se questa directory non esistesse, deve essere creata manualmente prima dell'installazione!
  • Su AIX mail.local viene installato in  /usr/lib : in tal caso correggere di conseguenza la  definizione relativa nel file 

  • di configurazione di sendmail (vedi dopo LOCAL_MAILER_PATH).
  • smrsh non permette l'invocazione di eseguibili da parte di sendmail (ad es. majordomo) se non autorizzati esplicitamente tramite la creazione di un link simbolico all'eseguibile stesso, da porsi in /usr/adm/sm.bin.
  • Su alcune piattaforme  (es. Digital Unix)  groff non è presente, causando quindi un messaggio di errore.

  • Data la sua non necessarietà, ignorare l'errore e proseguire la compilazione dalla subdirectory obj.xyz.n.n.n.

 

Configurazione di sendmail

La configurazione di sendmail consiste principalmente nella creazione del file sendmail.cf tramite l'utility m4.

La configurazione è leggermente diversa a seconda si tratti di un mail server (che quindi deve permettere il relaying agli altri host del dominio) o di una normale workstation utente.

Avvertenze
  • Viene spesso segnalato (dipende dalla versione di m4)  un errore alla linea 60 circa del file sendmail.cf, apparentemente in corrispondenza di una linea vuota. Per eliminare l'errore, cancellare la linea in questione.
  • Se, su AIX,  è stato installato mail.local controllare che nel file sendmail .cf siano passate le opzioni giuste. Cercare la linee: 
    • Mlocal,         P=/usr/libexec/mail.local, ......etc..
                           T=DNS/RFC822/X-Unix,
                           A=mail -F $g $u
    e sostituire il flag "-F" con "-f". 
       

 
 

File degli alias e database utenti

Il file degli alias deve contenere alcuni alias "obbligatori":
MAILER-DAEMON:  postmaster usato da sendmail per il delivery notification
postmaster:  root richiesto da RFC 822
abuse: root per eventuali reclami
root:  root, sysadm  chi riceve la posta di root

Nota Nell'esempio copia dei mail inviati a root viene inoltrata anche alla lista sysadm: in generale devono essere indirizzati allo user che si occupa attivamente del sistema di posta elettronica e/o della sicurezza dei sistemi.

In questo file andranno anche eventuali alias per mailing list.

Per rendere attivi i cambiamenti eseguire il comando: newaliases.

Il database degli utenti (necessario solo sui mail server) definisce l'abbinamento fra username ed indirizzi e-mail. Tramite la keyword maildrop è possibile effettuare il mapping, in maniera suriettiva, alias --> username mentre con la keyword mailname viene effettuato il mapping iniettivo username --> cname che permette di presentare l'indirizzo mittente degli utenti locali in forma canonica.

Se ad esempio Mario Rossi ha un account mrossi sull' host  gandalf.cnaf.infn.it ed ha come indirizzo canonico di posta elettronica mario.rossi@cnaf.infn.it, nel database utenti ci sarà:

     mario.rossi:maildrop   mrossi@gandalf.cnaf.infn.it
     mrossi:maildrop        mrossi@gandalf.cnaf.infn.it
     mrossi:mailname        mario.rossi

Per rendere attivi i cambiamenti eseguire il comando: makemap btree /path/to/userdb.db< /path/to/userdb.txt

In alternativa, è possibile effettuare il mapping tramite le virtualusertable e le genericusertable che offrono la possibilità ulteriore di gestire gli alias di più domini dalla stessa macchina (per maggiori dettagli: "Virtual hosting with sendmail").
 

Protezione file e directory

A partire da sendmail 8.9.x sono stati attivati controlli più stretti sulla modalità di accesso in scrittura ai file di alias ed alla directory di spool. Ciò può comportare su alcuni sistemi operativi (es. Digital Unix 4.0x) la segnalazione di un errore in tal senso.
In generale sendmail richiede che file e directory non siano scrivibili dal "gruppo".
Ad es. l'area di spool (su molti sistemi: /var/spool/mqueue) deve essere protetta, a partire dalla radice (/var), con modalità 755.
È comunque possibile disabilitare tale controllo (per maggiori dettagli: "Sendmail FAQ Q3.32").

Un'ultima notazione: su alcuni sistemi operativi l'eseguibile sendmail viene installato con le protezioni non corrette: la modalità corretta è 3711.
 

Misure anti-spam

Questo paragrafo è rivolto specificatamente ai gestori dei mail server (per una descrizione completa dei comandi disponibili nella versione 8.9.x di sendmail per proteggersi dal mail spam, vedere "Anti-Spam Configuration Control").

La configurazione vista precedentemente impedisce ad utenti non autorizzati l'uso del mail server come mail relaying; in particolare vengono rifiutati tutti i mail da domini inesistenti e tutti quelli non originati localmente che non siano diretti localmente. Gli host generici invece, configurati secondo le specifiche precedenti, possono solo spedire mail (tramite il mail server) originati sull'host stesso e ricevere quelli a loro diretti.
Avvertenze
  • Il MUA di un portatile per potere spedire posta deve avere come SMTP server il mailer locale della LAN sulla quale si trova;
  • I mailer rifiutano di inoltrare mail di host che non sono registrati nel DNS, anche se locali.

Purtroppo non sempre è possibile configurare tutti gli host di una LAN: in questi casi è conveniente applicare dei filtri selettivi direttamente sui router di accesso alla LAN stessa.

Nel seguente esempio (per router Cisco) supponiamo che il mail server "fidato" sulla LAN sia l'host 140.105.2.8, che le reti sulla LAN siano 140.104.2.0 e 140.104.3.0 e che l'interfaccia del router di accesso verso l'esterno sia serial 0.

     interface serial 0
     ......

     ip access-group 102 in
     .......
     access-list 102 permit tcp any host 140.105.2.8
     access-list 102 deny tcp any 140.105.2.0 0.0.0.255 eq smtp
     access-list 102 deny tcp any 140.105.3.0 0.0.0.255 eq smtp
     access-list 102 permit ip any any

Attenzione: sui router Cisco le Access List vengono lette sequenzialmente e quindi viene applicata la prima condizione verificata vera.

Applicata la access list, l'unico punto di accesso, per i mail, alla LAN è il mail server già protetto in configurazione.

Per compatibilità, per permettere agli utenti di ricevere posta anche con l'indirizzo utente@FQDN (es.: mrossi@gandalf.cnaf.infn.it) è possibile redirigere da DNS, tramite il record MX, la posta di un host filtrato, verso il mail server.
Dal mail server e` possibile redistribuirlo "staticamente" (senza consultare cioe` il DNS!) verso l'host finale, inserendo nel database degli utenti una dichiarazione del tipo:

     mrossi:maildrop mario@[131.154.3.24]


Il server cosi` configurato non è però  protetto dallo spamming detto del "doppio non delivery" dove un mail con mittente falsificato, ma esistente (quello della vittima), viene inviato ad utente inesistente di un altro dominio. sendmail, correttamente, rispedisce il mail al mittente (falsificato!) notificando l'errore.
Questa forma di spam non è molto efficente, ma può essere fastidiosa. Purtroppo non c'è una procedura automatica per eliminare il problema: il gestore deve, di volta in volta, inserire i mittenti indesiderati nel database access per filtrarli. Nel database è possibile effettuare il filtraggio a livello di dominio, di rete e di utente. Le keyword accettate sono:
OK accetta le mail incondizionatamente
RELAY accetta di fare da mail relay
REJECT rifiuta il mail
DISCARD rifiuta il mail  "silenziosamente"
550 "testo libero"  rifiuta il mail con un messaggio di errore personalizzato