<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>Sendmail address rewriting mini-HOWTO</TITLE> </HEAD> <BODY> <H1>Sendmail address rewriting mini-HOWTO</H1> <H2>Thomas Roessler, roessler@guug.de</H2>v0.0, 6 maggio 1998 <P><HR> <EM> 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, <CODE>lorenzo.pulici@usa.net</CODE></EM> <HR> <H2><A NAME="s1">1. Introduzione</A></H2> <P>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 <EM>un</EM> indirizzo unico. <P> <P>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). <P> <P>Questo documento si riferisce in parte a proprietà specifiche dei sistemi Debian/GNU Linux; gli utenti di altre distribuzioni dovranno averne particolare cura. <P> <P>Accertatevi di avere a portata di mano le seguenti informazioni: <P> <UL> <LI>il server di posta del vostro ISP</LI> <LI>il vostro indirizzo di posta Internet</LI> </UL> <P> <P> <P>La configurazione che si sta progettando ha due obiettivi principali: <P> <OL> <LI>Possibilità di inviare posta tra i vari utenti locali</LI> <LI>Il mondo esterno deve vedere gli indirizzi di posta dell'ISP e non quelli locali.</LI> </OL> <P> <P>Per raggiungerli, si usufruirà della feature <CODE>genericstable</CODE> di sendmail. <P> <H2><A NAME="s2">2. Mappa dei file</A></H2> <P>Tutti i file di configurazione di sendmail verranno messi in una directory separata, <CODE>/etc</CODE>: <CODE>/etc/mail</CODE>. Normalmente, sendmail si aspetta di trovare questi file direttamente in <CODE>/etc</CODE>. Per evitare problemi <CODE>/etc/sendmail.cf</CODE> dovrà essere un link simbolico a <CODE>/etc/mail/sendmail.cf</CODE>. <P> <P>Questi sono i file che affollano <CODE>/etc/mail</CODE>: <UL> <LI><CODE>aliases</CODE> -contiene ulteriori indirizzi locali</LI> <LI><CODE>genericsdomain</CODE> - contiene alcune informazioni sulla configurazione del vostro host locale </LI> <LI><CODE>genericstable</CODE> - contiene le attuali regole di riscrittura </LI> <LI><CODE>sendmail.cf</CODE> - file di configurazione di sendmail</LI> <LI><CODE>sendmail.mc</CODE> - il sorgente di <CODE>sendmail.cf</CODE>.</LI> </UL> <P>Alcuni di questi file saranno accompagnati da file <CODE>.db</CODE>. Questi file contengono database hash per l'uso diretto da parte di sendmail. <P> <P>Si assume che la parte <CODE>cf</CODE> del tree dei sorgenti di sendmail risieda in una directory denominata <CODE>/usr/lib/sendmail.cf</CODE>. 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. <P> <H2><A NAME="s3">3. Configurare sendmail</A></H2> <H2>3.1 Il file principale di configurazione</H2> <P>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 <CODE>sendmail.cf</CODE> è 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. <P> <P>Invece di mettere a punto manualmente queste regole, ci si affiderà al processore di macro <CODE>m4</CODE> per costruire la configurazione, partendo dalle parti già pronte distribuite con sendmail. <P> <P> <P>Si dia un'occhiata alle prime righe del file <CODE>sendmail.mc</CODE>: <P> <HR> <PRE> include(/usr/lib/sendmail.cf/m4/cf.m4) VERSIONID(`sendmail.mc - roessler@guug.de') OSTYPE(debian) define(`ALIAS_FILE',`/etc/mail/aliases') </PRE> <HR> <P>All'inizio viene incluso <CODE>cf.m4</CODE>. 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 <CODE>OSTYPE</CODE> 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". <CODE>ALIAS_FILE</CODE> dice a sendmail dove trovare la lista degli alias. <P> <P>Le righe seguenti indicano a sendmail di utilizzare la feature <CODE>genericstable</CODE>, e dove trovare i file di configurazione necessari per usufruirne: <HR> <PRE> FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain') </PRE> <HR> La feature <CODE>masquerade_envelope</CODE> indica a sendmail di applicare la riscrittura degli header al mittente dell'<EM>envelope</EM> 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 <CODE>generics*</CODE> verranno illustrati più sotto. <P> <P>È 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: <HR> <PRE> define(`SMART_HOST',`postainuscita.mio.provider') </PRE> <HR> Sostituire <EM>postainuscita.mio.provider</EM> con il nome qualificato (FQDN) del server del vostro ISP. <P> <P>Le due ultime righe includono la definizione "mailer", necessaria a sendmail per sapere in che modo gestire i diversi tipi di posta: <HR> <PRE> MAILER(local) MAILER(smtp) </PRE> <HR> <P> <P>Per generare il file <CODE>sendmail.cf</CODE> partendo da questo <CODE>sendmail.mc</CODE>, digitare da root i seguenti comandi: <HR> <PRE> # m4 sendmail.mc > _sendmail.cf # mv -f _sendmail.cf sendmail.cf </PRE> <HR> <P>Si noti la tecnica di scrivere l'output di <CODE>m4</CODE> su di un file temporaneo che verrà successivamente spostato nella giusta locazione. Ciò impedisce a sendmail di leggere file di configurazione scritti solo parzialmente. <P> <H2>3.2 Riscrittura degli indirizzi.</H2> <P>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 <CODE>/etc/mail/genericsdomain</CODE>. Per conoscere il nome qualificato del vostro host, digitare il seguente comando: <HR> <PRE> $ hostname -f </PRE> <HR> <P> <P>Si arriva finalmente alla tabella di riscrittura: <CODE>/etc/mail/genericstable</CODE>. 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: <P> <HR> <PRE> harry harryx@your.isp maude maudey@her.isp root fredx@your.isp news fredx@your.isp </PRE> <HR> <P> <P>Deve esserci una riga per <EM>ogni</EM> account presente sulla macchina locale, cosicchè la posta generata automaticamente diretta esternamente alla macchina riporterà negli headers le informazioni corrette. <P> <P>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. <P> <P> <HR> <PRE> # makemap -r hash genericstable.db < genericstable </PRE> <HR> <P> <P>Si noti che le regole di riscrittura della <CODE>genericstable</CODE> <EM>non</EM> 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. <P> <H2>3.3 Aliases</H2> <P>Il file degli aliases contiene nomi locali addizionali validi unicamente per messaggi locali. È utile per account amministrativi quali <CODE>root</CODE> che ricevono posta generata automaticamente dal vostro sistema. <P> <P>Un punto di partenza per il vostro <CODE>/etc/mail/aliases</CODE> potrebbe assomigliare a questo file: <P> <HR> <PRE> root: fred news: root postmaster: root mail: root www: root nobody: /dev/null MAILER-DAEMON: nobody </PRE> <HR> <P>In questo esempio, la posta locale per gli utenti <CODE>root</CODE>, <CODE>news</CODE>, <CODE>postmaster</CODE>, <CODE>mail</CODE>, e <CODE>www</CODE> verrà inoltrata a <CODE>fred</CODE>, mentre quella per <CODE>nobody</CODE> e <CODE>MAILER-DAEMON</CODE> verrà rediretta a <CODE>/dev/null</CODE>. <P> <P>Come per <CODE>genericstable</CODE>, <CODE>aliases</CODE> potrebbe avere <EM>parecchie</EM> 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 <CODE>genericstable</CODE> anche con <CODE>aliases</CODE>: si genera un hashed database. Invece di invocare direttamente <CODE>makemap</CODE>, è possibile digitare stavolta il comando <CODE>newaliases</CODE>, che si preoccuperà da solo di fare il lavoro necessario. <P> <H2><A NAME="s4">4. Letture consigliate</A></H2> <P>La distribuzione dei sorgenti di sendmail include una certa documentazione. Leggere soprattutto il file <CODE>cf/README</CODE>. <P> <P>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. <P> </BODY> </HTML>