Sendmail address rewriting mini-HOWTO
Thomas Roessler,
[email protected]
v0.0, 6 maggio 1998
Questo documento � una breve descrizione di come impostare il file di
configurazione di sendmail per un uso casalingo con una connessione
dial-up. Traduzione a cura di Lorenzo Pulici,
[email protected]
1. Introduzione
Si assume che abbiate il tipo di accesso ad Internet che sembra
attualmente essere il pi� comune alle universit� e per i servizi
online: utilizzate PPP con una connessione seriale per accedere alla
rete del vostro provider. La vostra posta in arrivo viene presa dal
server POP o IMAP del provider, mentre i messaggi in uscita verranno
inviati tramite SMTP. Non disponete di un nome di dominio di vostra
propriet�, per cui tutto utilizza un indirizzo unico.
Si assume che sia installata sul vostro sistema una versione
sufficientemente aggiornata di sendmail di Eric Allman (la versione
8.8.8 � l'ultima al momento della stesura di questo documento e
funziona correttamente).
Questo documento si riferisce in parte a propriet� specifiche dei
sistemi Debian/GNU Linux; gli utenti di altre distribuzioni dovranno
averne particolare cura.
Accertatevi di avere a portata di mano le seguenti informazioni:
� il server di posta del vostro ISP
� il vostro indirizzo di posta Internet
La configurazione che si sta progettando ha due obiettivi principali:
1. Possibilit� di inviare posta tra i vari utenti locali
2. Il mondo esterno deve vedere gli indirizzi di posta dell'ISP e non
quelli locali.
Per raggiungerli, si usufruir� della feature genericstable di
sendmail.
2. Mappa dei file
Tutti i file di configurazione di sendmail verranno messi in una
directory separata, /etc: /etc/mail. Normalmente, sendmail si aspetta
di trovare questi file direttamente in /etc. Per evitare problemi
/etc/sendmail.cf dovr� essere un link simbolico a
/etc/mail/sendmail.cf.
Questi sono i file che affollano /etc/mail:
� aliases -contiene ulteriori indirizzi locali
� genericsdomain - contiene alcune informazioni sulla configurazione
del vostro host locale
� genericstable - contiene le attuali regole di riscrittura
� sendmail.cf - file di configurazione di sendmail
� sendmail.mc - il sorgente di sendmail.cf.
Alcuni di questi file saranno accompagnati da file .db. Questi file
contengono database hash per l'uso diretto da parte di sendmail.
Si assume che la parte cf del tree dei sorgenti di sendmail risieda in
una directory denominata /usr/lib/sendmail.cf. Questo � il caso dei
sistemi Debian GNU/Linux. Altre distribuzioni potrebbero porre questi
file in altre posizioni. Consultate la documentazione della vostra
distribuzione per maggiori informazioni.
3. Configurare sendmail
3.1. Il file principale di configurazione
Sendmail usa un sistema di regole dall'elevata complessit� per la sua
configurazione. Anche se � possibile eseguire una gran quantit� di
trucchetti in questo modo, scrivere da zero un file sendmail.cf �
piuttosto insolito e porta via molto tempo. Se siete tuttavia
interessati, allora smettete di leggere questo documento adesso per
iniziare invece il "Bat Book" della O'Reilly.
Invece di mettere a punto manualmente queste regole, ci si affider� al
processore di macro m4 per costruire la configurazione, partendo dalle
parti gi� pronte distribuite con sendmail.
Si dia un'occhiata alle prime righe del file sendmail.mc:
______________________________________________________________________
include(/usr/lib/sendmail.cf/m4/cf.m4)
VERSIONID(`sendmail.mc -
[email protected]')
OSTYPE(debian)
define(`ALIAS_FILE',`/etc/mail/aliases')
______________________________________________________________________
All'inizio viene incluso cf.m4. Questo file macro di m4 contiene
numerose definizioni macro per il resto del file. Ci si assicuri di
inserire il percorso corretto - quello qui presente � tipico per una
distribuzione Debian GNU/Linux. La macro OSTYPE viene utilizzata per
dare alcune opzioni di default utili per determinati valori di
configurazione. Se non si utilizza un sistema Debian, sostituire la
parola "debian" con "linux". ALIAS_FILE dice a sendmail dove trovare
la lista degli alias.
Le righe seguenti indicano a sendmail di utilizzare la feature
genericstable, e dove trovare i file di configurazione necessari per
usufruirne:
______________________________________________________________________
FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
______________________________________________________________________
La feature masquerade_envelope indica a sendmail di applicare la
riscrittura degli header al mittente dell'envelope di un messaggio.
Questo � l'indirizzo di posta al quale i sottosistemi di consegna
della posta indirizzeranno i loro rapporti di mancata consegna e i
messaggi di avvertimento. I file generics* verranno illustrati pi�
sotto.
� ora necessario definire un cosiddetto "smart host", vale a dire, una
macchina che gestir� la posta in uscita dal vostro sistema. Questa
macchina pu� non essere lo stesso server POP o IMAP del vostro ISP. Se
avete dubbi contattate l'assistenza. Il codice del file principale di
configurazione:
______________________________________________________________________
define(`SMART_HOST',`postainuscita.mio.provider')
______________________________________________________________________
Sostituire postainuscita.mio.provider con il nome qualificato (FQDN)
del server del vostro ISP.
Le due ultime righe includono la definizione "mailer", necessaria a
sendmail per sapere in che modo gestire i diversi tipi di posta:
______________________________________________________________________
MAILER(local)
MAILER(smtp)
______________________________________________________________________
Per generare il file sendmail.cf partendo da questo sendmail.mc,
digitare da root i seguenti comandi:
______________________________________________________________________
# m4 sendmail.mc > _sendmail.cf
# mv -f _sendmail.cf sendmail.cf
______________________________________________________________________
Si noti la tecnica di scrivere l'output di m4 su di un file temporaneo
che verr� successivamente spostato nella giusta locazione. Ci�
impedisce a sendmail di leggere file di configurazione scritti solo
parzialmente.
3.2. Riscrittura degli indirizzi.
Prima di tutto, � necessario far conoscere a sendmail quali sono da
considerarsi locali (e perci� soggetti a riscrittura). Operazione
molto semplice: � sufficiente inserire il nome qualificato (FQDN)
della vostra macchina nel file /etc/mail/genericsdomain. Per
conoscere il nome qualificato del vostro host, digitare il seguente
comando:
______________________________________________________________________
$ hostname -f
______________________________________________________________________
Si arriva finalmente alla tabella di riscrittura:
/etc/mail/genericstable. Questo file consiste di due colonne,
separate da spazi vuoti. La prima colonna contiene l'indirizzo locale,
la seconda l'indirizzo e-mail che dovr� sostituirlo. Il file potrebbe
assomigliare a questo:
______________________________________________________________________
harry
[email protected]
maude
[email protected]
root
[email protected]
news
[email protected]
______________________________________________________________________
Deve esserci una riga per ogni account presente sulla macchina locale,
cosicch� la posta generata automaticamente diretta esternamente alla
macchina riporter� negli headers le informazioni corrette.
Per motivi di prestazioni, sendmail non utilizza direttamente questo
file di testo, ma si affida ad una versione "hashed". per generarla,
digitare il seguente comando.
______________________________________________________________________
# makemap -r hash genericstable.db < genericstable
______________________________________________________________________
Si noti che le regole di riscrittura della genericstable non saranno
applicate alla posta locale o a quella in arrivo dall'esterno - la
mappatura viene usata unicamente se un messaggio lascia il vostro
sistema verso lo smart host del vostro ISP.
3.3. Aliases
Il file degli aliases contiene nomi locali addizionali validi
unicamente per messaggi locali. � utile per account amministrativi
quali root che ricevono posta generata automaticamente dal vostro
sistema.
Un punto di partenza per il vostro /etc/mail/aliases potrebbe
assomigliare a questo file:
______________________________________________________________________
root: fred
news: root
postmaster: root
mail: root
www: root
nobody: /dev/null
MAILER-DAEMON: nobody
______________________________________________________________________
In questo esempio, la posta locale per gli utenti root, news,
postmaster, mail, e www verr� inoltrata a fred, mentre quella per
nobody e MAILER-DAEMON verr� rediretta a /dev/null.
Come per genericstable, aliases potrebbe avere parecchie righe. Per
questo motivo, sarebbe ancora una volta inefficiente un uso del file
di testo cos� descritto da parte di sendmail. Viene allora applicato
il medesimo meccanismo per genericstable anche con aliases: si genera
un hashed database. Invece di invocare direttamente makemap, �
possibile digitare stavolta il comando newaliases, che si preoccuper�
da solo di fare il lavoro necessario.
4. Letture consigliate
La distribuzione dei sorgenti di sendmail include una certa
documentazione. Leggere soprattutto il file cf/README.
Se il vostro interesse � di approfondire ancora di pi� le opzioni di
configurazione di sendmail, procuratevi il "Bat Book" della O'Reilly:
Bryan Costales, Eric Allman, e Neil Rickert: "sendmail". O'Reilly,
1993.