Red Hat Linux include due MTA, Sendmail e Postfix. Il primo é configurato come il default di MTA, anche se é facile cambiare il default su Postfix.
![]() | Suggerimento |
|---|---|
Per informazioni su come impostare Postfix invece di Sendmail per l'MTA predefinito, consultate il capitolo relativo alla configurazione dell'MTA (Mail Transport Agent ) nella Red Hat Linux Customization Guide. |
Red Hat Linux include anche un MTA per scopi speciali chiamato Fetchmail, il quale viene usato per consegnare email da un MTA remoto ad un MTA locale.
Questa sezione parla in dettaglio di Sendmail e Fetchmail.
Lo scopo di Sendmail, come gli altri MTA, é di trasferire in sicurezza le email tra gli host, generalmente usando il protocollo SMTP. Tuttavia, Sendmail é altamente configurabile, permettendo il controllo su quasi tutti gli aspetti di come viene gestita la email, incluso il protocollo usato. Molti amministratori di sistema scelgono di usare Sendmail come il loro MTA a causa della sua potenza e scalabilitá.
Conoscere Sendmail e i suoi possibili usi diventa molto importante per gli utenti. Al giorno d'oggi, per via della preponderanza di applicazioni monolitiche che svolgono compiti molteplici, l'utente potrebbe erroneamente pensare a Sendmail come l'unica applicazione necessaria per un server mail all'interno della propria organizzazione. Tecnicamente, ciò corrisponde a verità, poiché Sendmail indirizza la posta verso le directory dei diversi utenti e accetta nuovi messaggi mediante la linea di comando. La maggior parte degli utenti richiede, tuttavia, qualcosa di più che la semplice consegna della posta. Vuole interagire con il servizio di posta elettronica usando un MUA che utilizza POP o IMAP per scaricare i messaggi sul computer locale o preferire un interfaccia Web per accedere alla propria mailbox. Queste applicazioni aggiuntive funzionano insieme a Sendmail e SMTP, ma il loro scopo è differente e possono operare separatamente le une dalle altre.
Questa sezione non prevede l'approfondimento di Sendmail, di come potrebbe o dovrebbe essere configurato. Vi sono centinaia di opzioni e regole differenti e interi volumi che illustrano le potenzialità di Sendmail e le soluzioni ai problemi. Consultare la Sezione 11.6 per un elenco delle risorse di Sendmail.
È comunque importante capire quali file vengono installati per default con con Sendmail sul vostro sistema, come effettuare modifiche di base alla sua configurazione o come bloccare la posta indesiderata (spam) e ampliare Sendmail mediante il protocollo Lightweight Directory Access Protocol (LDAP).
L'eseguibile Sendmail é /usr/sbin/sendmail.
Il lungo e dettagliato file di configurazione di Sendmail é /etc/mail/sendmail.cf. Evitate di modificare direttamente il file sendmail.cf. Invece, per apportare delle modifiche a Sendmail è preferibile modificare il file /etc/mail/sendmail.mc, eseguire un backup del file originale /etc/mail/sendmail.cf, e usare il macro processore m4 per creare un nuovo /etc/sendmail.cf. Ulteriori informazioni sulla configurazione di Sendmail sono disponibili in la Sezione 11.3.1.3.
Diversi file di configurazione di Sendmail sono installati in /etc/mail,
access — Specifica quali sistemi possono utilizzare Sendmail per la posta in uscita.
domaintable — Consente di fornire la mappatura del nome di dominio.
local-host-names — Il punto in cui si indicano tutti gli alias per gli host.
mailertable — specifica le istruzioni per superare il routing per particolari domini.
virtusertable — Consente di eseguire una forma di aliasing specifica per dominio e quindi posizionare domini virtuali multipli su un computer.
Diversi file di configurazione in /etc/mail, fra cui access, domaintable, mailertable e virtusertable, devono archiviare le informazioni nei file del database prima che Sendmail possa adottare qualsiasi modifica della configurazione. Per includere tali modifiche nei file del database, è necessario eseguire il comando:
makemap hash /etc/mail/<name> < /etc/mail/<name> |
Dove <name> viene sostituito con il nome del file di configurazione da convertire.
Se, per esempio, volete indirizzare tutte le e-mail a un account example.com perché siano consegnate a <bob@other-example.com>, sarà necessario aggiungere una riga simile a quella riportata di seguito al file virtusertable:
@example.com bob@other-example.com |
Per finalizzare il cambiamento, il file virtusertable.db deve essere aggiornato usando il seguente comando come root:
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable |
In questo modo creerete un nuovo virtusertable.db contenente la nuova configurazione.
Quando modificate il file di configurazione di Sendmail, è meglio creare un file /etc/mail/sendmail.cf completamente nuovo, piuttosto che modificarne uno già esistente.
![]() | Attenzione |
|---|---|
Prima di effettuare modifiche al file sendmail.cf, è consigliabile fare un backup della versione predefinita. |
Per aggiungere la funzionalità Sendmail desiderata, modificate il file /etc/mail/sendmail.mc. Fatto ciò, utilizzate il macro processore m4 per generare un nuovo file sendmail.cf, eseguendo il comando m4/etc/mail/sendmail.mc > /etc/mail/sendmail.cf. Dopo la creazione di un nuovo /etc/mail/sendmail.cf, riavviate Sendmail affinché le modifiche siano effettive. Il modo più semplice è digitare il comando /sbin/service sendmail restart come root.
Per default, il macro processore m4 viene installato con Sendmail ed è incluso nel pacchetto m4.
![]() | Importante | |
|---|---|---|
La versione di default di sendmail.cf non consente a sendmail di accettare connessioni di rete da host diversi dal computer locale. Se desiderate configurare sendmail come server per altri client, dovete modificare /etc/mail/sendmail.mc e impostare DAEMON_OPTIONS in modo che stia in ascolto sui dispositivi di rete oppure commentate l'intera opzione. Successivamente, ricreate /etc/mail/sendmail.cf eseguendo:
|
Questa configurazione dovrebbe funzionare per la maggior parte dei siti SMTP, ma non risulterà valida per i siti UUCP (UNIX to UNIX Copy). Dovrete, dunque, creare un nuovo sendmail.cf se dovete utilizzare trasferimenti di posta con UUCP.
Si consiglia di consultare il file /usr/share/sendmail-cf/README prima di modificare i file contenuti nelle sottodirectory di /usr/share/sendmail-cf, poiché possono influire sulle future configurazioni dei file /etc/mail/sendmail.cf.
Una configurazione comune di Sendmail, vede un singolo computer comportarsi da mail gateway per tutti i computer della rete. Per esempio, una società potrebbe chiamare mail.bigcorp.com il computer che si occupa della gestione della posta elettronica e dell'assegnazione di un indirizzo del mittente coerente per tutta la posta in uscita.
In questa situazione il server di sendmail deve mascherare il nome del computer sulla rete dell'azienda per fare in modo l'indirizzo sia user@bigcorp.com invece di user@devel.bigcorp.com.
Per effettuare questa operazione, aggiungete le righe riportate di seguito al file /etc/mail/sendmail.mc.
FEATURE(always_add_domain)dnl FEATURE(`masquerade_entire_domain') FEATURE(`masquerade_envelope') FEATURE(`allmasquerade') MASQUERADE_AS(`bigcorp.com.') MASQUERADE_DOMAIN(`bigcorp.com.') MASQUERADE_AS(bigcorp.com) |
Dopo avere generato un nuovo file sendmail.cf mediante m4, la configurazione consentirà a tutta la posta della rete di essere visualizzata come se fosse inviata da bigcorp.com.
Email spam puó essere definito come una email non necessaria e non voluta dall'utente che non ha mai richiesto una comunicazione. Esso rappresenta il modo errato di utilizzare le comunicazioni standard di Internet.
Sendmail facilita il blocco delle nuove tecniche spamming usate per inviare la posta indesiderata. É capace di bloccare, per default, molti metodi spamming.
Per esempio, l'inoltro dei messaggi SMTP, definito anche SMTP relaying, è stato disabilitato di default a partire dalla versione 8.9 di Sendmail. Prima di ciò, Sendmail istruiva il mail host (x.org) ad accettare i messaggi provenienti da una parte (y.com) e a inviarli a un'altra parte (z.net). Oggi, invece, è necessario specificare a Sendmail di permettere a un dominio di rilevare la posta attraverso il vostro dominio. È sufficiente modificare il file /etc/mail/relay-domains e riavviare Sendmail. Sendmail.
Accade spesso, tuttavia, che i vostri utenti siano bombardati da spam provenienti da altri server su Internet, che sfuggono al vostro controllo. In questi casi, utilizzate le caratteristiche di controllo agli accessi di Sendmail disponibili mediante il file /etc/mail/access. Il seguente esempio mostra come puó essere usato questo file sia per bloccare e sia di permettere specificamente l'accesso al server Sendmail:
badspammer.com ERROR:550 "Go away and do not spam us anymore" tux.badspammer.com OK 10.0 RELAY |
Questo esempio mostra che qualsiasi e-mail inviata da badspammer.com sarà bloccata con un codice d'errore 550 conforme alla specifica RFC-821 e rimandata allo spammer, a eccezione della posta inviata dal sottodominio tux.badspammer.com, la quale verrebbe accettata. L'ultima riga indica che qualsiasi e-mail inviata dalla rete 10.0.*.* può essere rilevata dal mail server.
Perché /etc/mail/access.db é un database, usare makemap per attivare qualsiasi cambiamento. Fate questo usando il seguente comando come un utente root:
makemap hash /etc/mail/access < /etc/mail/access |
È facilmente intuibile che quest'esempio si limita alla superficie delle potenzialità di Sendmail in termini di consenso o blocco dell'accesso. Consultate il file /usr/share/doc/sendmail/README.cf per informazioni dettagliate e alcuni esempi.
Dato che Sendmail chiama il Procmail MDA quando consegna la posta, é anche possibile usare un programma di filtro spam, come ad esempio SpamAssassin per identificare ed effettuare un file spam per gli utenti. Consultare la Sezione 11.4.2.6 per maggiori informazioni sull'uso di SpamAssassin.
Il protocollo Lightweight Directory Access Protocol (LDAP) fornisce un metodo veloce e potente per trovare informazioni su un utente specifico proveniente da un gruppo più ampio. È possibile, per esempio, utilizzare un server LDAP per cercare un indirizzo e-mail specifico in una directory comune aziendale partendo dal cognome dell'utente. In questo tipo d'implementazione il protocollo LDAP, ampiamente separato da Sendmail, archivia le informazioni gerarchiche sull'utente mentre Sendmail riceve solo il risultato delle query LDAP in messaggi e-mail pre-indirizzati.
Sendmail supporta un'integrazione maggiore con LDAP, in cui utilizza il protocollo per sostituire file mantenuti separatamente, fra cui aliases e virtusertables, su mail server differenti che funzionano insieme per supportare un impresa che opera a livello medio-grande. In breve, il protocollo LDAP può essere utilizzato per analizzare il livello di routing della posta di Sendmail e i file di configurazione separati in un potente cluster LDAP, potenziato da differenti applicazioni.
La versione attuale di Sendmail include il supporto per LDAP. Per ampliare il server Sendmail usando LDAP, procurarsi prima un server LDAP, come OpenLDAP, funzionante e correttamente configurato. Modificate quindi /etc/mail/sendmail.mc per includere:
LDAPROUTE_DOMAIN('yourdomain.com')dnl
FEATURE('ldap_routing')dnl |
![]() | Nota Bene |
|---|---|
La presente è solo una configurazione elementare di Sendmail con LDAP. La vostra configurazione sarà sicuramente differente, poiché dipenderà dal tipo d'implementazione del protocollo LDAP, soprattutto se desiderate configurare diversi computer Sendmail per un server LDAP comune. Consultate /usr/share/doc/sendmail/README.cf per istruzioni dettagliate riguardo alla configurazione di routing LDAP ed esempi. |
Successivamente, ricreate il file /etc/mail/sendmail.cf eseguendo il comando m4 e riavviando Sendmail. Per informazioni, consultate la Sezione 11.3.1.3.
Per ulteriori informazioni sul protocollo LDAP, consultate il Capitolo 13.
Fetchmail é un MTA che riprende le email da server remoti e le consegna all'MTA locale. Molti utenti apprezzano la capacità di separare il processo di download dei messaggi sul server remoto da quello di lettura e organizzazione dei messaggi in un MUA. Ideato specificatamente per gli utenti dial-up, Fetchmail è in grado di connettersi e scaricare velocemente tutti i messaggi e-mail nel file spool di posta, utilizzando un numero indefinito di protocolli, inclusi POP3 e IMAP. Questo programma, può anche inoltrare i vostri messaggi a un server SMTP, qualora fosse necessario.
Fetchmail viene configurato per ogni utente, attraverso l'uso di un file .fetchmailrc nella home directory dell'utente.
Le preferenze contenute nel file .fetchmailrc consentono a Fetchmail di controllare la posta su un server remoto e di rinviarla nel tentativo di consegnarla alla porta 25 sul computer locale, utilizzando l'MTA locale per posizionare le e-mail nel corretto file spool utente. Se Procmail è disponibile, può essere usato per filtrare i messaggi e archiviarli in una mailbox affinché siano letti da un MUA.
È possibile passare tutte le opzioni sulla linea di comando necessaria a controllare la posta su un server remoto durante l'esecuzione di Fetchmail, tuttavia si consiglia di semplificare l'operazione usando il file .fetchmailrc. Tutte le preferenze di configurazione vengono inserite nel file .fetchmailrc, che è comunque possibile escludere quando Fetchmail è in esecuzione, specificando l'opzione sulla riga di comando.
Il file .fetchmailrc si divide in tre tipi particolari di opzioni di configurazione:
opzioni globali — fornisce a Fetchmail le istruzioni che controllano l'esecuzione del programma o le impostazioni per le connessioni di controllo dei messaggi.
server options — Specifica le informazioni necessarie per il polling del server, fra cui il nome host o le preferenze che potreste voler applicare con un server mail specifico, per esempio la porta da controllare oppure i secondi d'attesa prima del time out. Queste opzioni riguardano ogni opzione utente utilizzata con quel server.
opzioni utente — contiene informazioni, quali id utente e password, necessarie per l'autenticazione e il controllo della posta mediante un server mail particolare.
Le opzioni globali sono in cima al file .fetchmailrc, seguite da una o più opzioni server, ciascuna delle quali designa un server di posta differente che sarà controllato da Fetchmail. Le opzioni utente sono successive alle opzioni server e servono per gli account utente che si desidera controllare su un server di posta. Come le opzioni server, quelle multiple utente possono essere specifiche per un server particolare, e si usano, per esempio, per controllare account e-mail multipli sullo stesso server.
Le opzioni server nel file .fetchmailrc sono attivate da una speciale opzione verbale, poll oppure skip, che precede ogni informazione del server. L'azione di poll dice a Fetchmail di usare quest'opzione server quando è in esecuzione, in pratica si tratta del controllo della posta che utilizza le varie opzioni utente. Dopo un'azione di skip, invece, le opzioni server non sono verificate, a meno che non si specifichi il nome host del server quando si avvia Fetchmail. L'opzione skip consente di impostare configurazioni prova in .fetchmailrc e controlla il server solo se specificatamente indicato, senza interferire sulle configurazioni correnti.
Un file di esempio .fetchmailrc appare così:
set postmaster "user1"
set bouncemail
poll pop.domain.com proto pop3
user 'user1' there with password 'secret' is user1 here
poll mail.domain2.com
user 'user5' there with password 'secret2' is user1 here
user 'user7' there with password 'secret3' is user1 here |
In questo esempio le impostazioni globali sono impostate in modo tale che l'utente riceva la posta come ultima risorsa (opzione postmaster) e tutti gli errori di e-mail siano inviati al postmaster invece che al mittente (opzione bouncemail). L'azione set dice a Fetchmail che questa linea contiene un'opzione globale. Vengono quindi specificati due server di posta, uno impostato per rilevare la posta usando POP3 e l'altro per utilizzare diversi protocolli e consentire al primo di eseguire le proprie funzioni. Due utenti sono controllati mediante l'opzione relativa al secondo server, ma tutta la loro posta rilevata viene inviata al mail spool user1. Ciò consente il controllo delle mailbox multiple su server multipli, mentre compaiono in un'unica inbox MUA. Le informazioni specifiche per ogni utente sono attivate con l'azione user.
![]() | Nota Bene |
|---|---|
Non è necessario inserire la password personale nel file .fetchmailrc. Potete pertanto tralasciare la sezione with password '<password>'. Fetchmail vi chiederà la password dopo l'avvio. |
Fetchmail contiene una varietà di opzioni globali, server e locali. Molte di queste opzioni sono usate di rado oppure si applicano solo a situazioni molto specifiche. La pagina man fetchmail spiega in dettaglio queste opzioni. Troverete qui di seguito un elenco delle più comuni.
Ogni opzione globale dovrebbe essere posizionata su una singola riga dopo un'azione di set.
daemon <seconds> — Indica a Fetchmail di usare in automatico la modalità demone, in cui resterà in esecuzione in background e rileverà la posta a intervalli specifici.
postmaster — Assegna a Fetchmail un utente locale per inviare la posta in caso di problemi di consegna.
syslog — Istruisce Fetchmail sull'attivazione dei messaggi di stato o di errore di accesso nel file log del sistema. Per default, il file è /var/log/maillog.
Posizionate le opzioni server sulla riga specifica in .fetchmailrc dopo un'azione di poll oppure di skip.
auth <tipo-aut> — specifica il tipo di autenticazione da utilizzare. Per default, viene utilizzata l'autenticazione password, ma alcuni protocolli supportano altri tipi di autenticazione, fra cui kerberos_v5, kerberos_v4, e ssh. Quando viene usata l'autenticazione di tipo any, Fetchmail tenterà prima i metodi che non richiedono la password, quindi quelli che usano il masquerading e infine cercherà di inviare la vostra password in chiaro per l'autenticazione presso il server.
interval <numero> — indica a Fetchmail di interrogare il server ogni <numero> di volte che controlla la posta sui server configurati. Questa opzione può essere usata con i server di posta che ricevono i messaggi solo occasionalmente.
port <numero-porta> — esclude il numero della porta di default per un protocollo specifico.
proto <protocollo> — Istruisce Fetchmail su un protocollo specifico da usare, fra cui pop3 oppure imap, per controllare i messaggi su questo server.
timeout <secondi> — configura Fetchmail a interrompere l'operazione dopo un certo intervallo di inattività del server. Se questo valore non viene impostato, si presuppone il valore predefinito di 300.
Le opzioni utenti possono essere posizionate sulle loro linee specifiche sotto un'opzione server o sulla stessa riga dell'opzione server. In entrambi i casi le opzioni utente seguono l'opzione user (definita qui sotto).
fetchall — ordina a Fetchmail di scaricare tutti i messaggi in coda, compresi quelli che sono già stati visualizzati. Per default, Fetchmail scarica solo i messaggi nuovi.
fetchlimit <numero> — consente solo di scaricare un certo numero di messaggi prima di terminare.
flush — indica a Fetchmail di cancellare tutti i messaggi precedentemente visualizzati nella coda prima di scaricare i nuovi messaggi.
limit <numero-max-byte> — consente di specificare le dimensioni massime ammesse per scaricare i messaggi. Questa opzione risulta utile in caso di connessioni di rete lente, quando l'intervallo di tempo necessario a scaricare il messaggio è eccessivo.
password '<password>' — specifica la password da usare per quell'utente.
preconnect "<comando>" — indica di eseguire il comando specifico prima di rilevare i messaggi per quell'utente.
postconnect "<command>" — Indica di eseguire il comando specifico dopo aver ripreso i messaggi per quell'utente.
ssl — Attiva la connessione criptata SSL.
user "<nome-utente>" — imposta il nome utente usato da Fetchmail per rilevare i messaggi. Quest'opzione dovrebbe figurare in elenco prima di qualsiasi altra opzione utente.
La maggior parte delle opzioni Fetchmail utilizzabili sulla riga di comando, quando si esegue il comando fetchmail, rispecchia le opzioni di configurazione .fetchmailrc. In questo modo, Fetchmail può essere utilizzato con o senza un file di configurazione. La maggior parte degli utenti non userà queste opzioni sulla riga di comando, poiché è più semplice lasciarle nel file .fetchmailrc affinché siano attivate quando Fetchmail è in esecuzione.
A volte, tuttavia, si potrebbe desiderare di eseguire il comando fetchmail con altre opzioni per scopi particolari. Poiché ogni opzione specificata sulla linea di comando elimina le opzioni del file di configurazione, è possibile attivare le opzioni di comando per escludere temporaneamente l'impostazione .fetchmailrc che sta provocando un errore.
Certe opzioni usate dopo il comando fetchmail possono fornire informazioni importanti.
--configdump — visualizza ogni possibile opzione basata su informazioni provenienti da .fetchmailrc e dai valori predefiniti di Fetchmail. Quando viene usata quest'opzione, non vi è la possibilità di rilevare la posta per alcun utente.
-s — esegue Fetchmail in modalità "silent", impedendo la visualizzazione di qualsiasi messaggio che non sia di errore dopo il comando fetchmail.
-v — esegue Fetchmail in modalità "verbose", visualizzando ogni comunicazione tra Fetchmail e i server remoti.
-V — Fa sì che Fetchmail visualizzi informazioni dettagliate sulla versione, elenca le opzioni globali e mostra le impostazioni da usare per ogni utente, compreso il protocollo e-mail e il metodo di autenticazione. Quando questa opzione è attiva, la posta non viene rilevata per alcun utente.
Queste opzioni vengono usate occasionalmente per escludere i valori di default spesso inclusi nel file .fetchmailrc.
-a — Indica a Fetchmail di scaricare tutti i messaggi, sia nuovi che precedentemente visualizzati, presenti sul server remoto. Di default, Fetchmail scarica solo i messaggi nuovi.
-k — fa sì che Fetchmail lasci i messaggi sul server remoto dopo averli scaricati. Quest'opzione esclude la cancellazione di default dei messaggi dopo il download.
-l <numero-max-byte> — indica a Fetchmail di non scaricare i messaggi che superano determinate dimensioni lasciandoli sul server remoto.
--quit — abbandona il procedimento demone di Fetchmail.
Ulteriori comandi e opzioni .fetchmailrc sono disponibili sulla pagina man fetchmail.