Sendmail address rewriting mini-HOWTO Thomas Roessler, roessler@guug.de 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, lorenzo.pulici@usa.net 11.. IInnttrroodduuzziioonnee 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 _u_n 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. 22.. MMaappppaa ddeeii ffiillee 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. 33.. CCoonnffiigguurraarree sseennddmmaaiill 33..11.. IIll ffiillee pprriinncciippaallee ddii ccoonnffiigguurraazziioonnee 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 - roessler@guug.de') 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'_e_n_v_e_l_o_p_e 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 _p_o_s_t_a_i_n_u_s_c_i_t_a_._m_i_o_._p_r_o_v_i_d_e_r 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. 33..22.. RRiissccrriittttuurraa ddeeggllii iinnddiirriizzzzii.. 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 harryx@your.isp maude maudey@her.isp root fredx@your.isp news fredx@your.isp ______________________________________________________________________ Deve esserci una riga per _o_g_n_i 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 _n_o_n 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. 33..33.. AAlliiaasseess 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 _p_a_r_e_c_c_h_i_e 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. 44.. LLeettttuurree ccoonnssiigglliiaattee 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.