Home Mappa Indice Ricerca News Archivi Link A proposito di LF
[Barra superiore]
[Barra inferiore]
Questo articolo è disponibile in: English  Castellano  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

[Foto dell'autore]
di John Perr

Notizie sull'autore:

Utente Linux fin dal 1994; è uno degli editori francesi di LinuxFocus.


Contenuto:

Sendmail e Fetchmail: un server mail locale

[Illustrazione]

Sommario:

Questo articolo spiega come configurare sendmail e fetchmail sul vostro computer locale connesso ad internet tramite un collegamento PPP. Tale configurazione vi consente di usare tutti i client di posta di Unix (e non soltanto Netscape). Potrete mandare e ricevere i messaggi ogni qual volta stabilite una connessione PPP.



 

Introduzione

Al fine di gestire in maniera opportuna la posta sul vostro computer Linux vi occorre configurare un Agente di Trasferimento della Posta (MTA in breve, dalle iniziali di "Mail Transfer Agent", n.d.T.). Il più popolare (e antico) è certamente sendmail, ma ce ne sono altri, come qmail, che sono più veloci e più semplici da configurare, o exim che è incluso nelle configurazioni standard di Debian. Qui noi tratteremo di sendmail e useremo un kit di configurazione dell'Università di Berkley University di Eric Allman.
Per prelevare le vostre mail dai server del vostro provider internet (ISP in breve), sarà inoltre necessario configurare fetchmail in modo che passi a sendmail il contenuto delle vostre mailbox. fetchmail serve per il prelievo delle mail tramite pop3 o imap. E' anche possibile usare uucp, ma quello è un caso più esotico non trattato in questo articolo.  

Configurazione

Per configurare sendmail è necessario installare i seguenti pacchetti (in formato rpm):

A secondo della vostra distribuzione potreste avere nomi leggermente diversi. Anche i numeri di versione potrebbero essere diversi. Solo i primi due pacchetti sono assolutamente indispensabili.

Per configurare effettivamente sendmail, seguite i questi passi:

  1. si assume che:
  2. per prima cosa create un file: /usr/lib/sendmail-cf/cf/config.mc contenente:
    # start of config.mc
    include(`../m4/cf.m4')dnl
    OSTYPE(`linux')dnl
    define(`SMTP_MAILER_FLAGS', `e9')dnl
    FEATURE(redirect)dnl
    FEATURE(nocanonify)dnl
    FEATURE(always_add_domain)dnl
    FEATURE(local_procmail)dnl
    GENERICS_DOMAIN(localhost.localdomain localhost localhost)
    FEATURE(genericstable)
    FEATURE(masquerade_envelope)dnl
    define(`confCF_VERSION',`dede's cf - 22/05/98')dnl
    define(`confCON_EXPENSIVE',`True')dnl
    define(`confME_TOO',`True')dnl
    define(`confCOPY_ERRORS_TO',`Postmaster')dnl
    define(`confDEF_CHAR_SET',`ISO-8859-1')dnl
    define(`confMIME_FORMAT_ERRORS',`True')dnl
    define(`SMART_HOST',`smtp8:[smtp.isp.net]')dnl
    define(`confTO_QUEUEWARN',`24h')
    MAILER(local)
    MAILER(smtp)
    # End of config.mc
    

    La linea define(`SMART_HOST'.... dice a sendmail di mandare tutta la posta in uscita tramite il vostro provider invece di provare a consegnarla direttamente. Il vostro provider quindi si prenderà cura della distribuzione.
  3. Create anche /etc/genericstable:
    dede:   toto@isp.net
    root:   toto@isp.net
    news:   toto@isp.net
    
  4. Vericate che /etc/aliases contenga almeno:
    MAILER-DAEMON:  postmaster
    postmaster:     root
    
  5. Modificate o create /etc/nsswitch.conf come segue:
    passwd:     files  
    shadow:     files  
    group:      files  
    hosts:      files   dns
    services:   files
    networks:   files
    protocols:  files
    rpc:        files
    ethers:     files
    netmasks:   files     
    bootparams: files
    netgroup:   
    publickey:  
    automount:  files 
    aliases:    files 
    
    (Ogni linea dovrebbe contenere solamente "files", tranne hosts)

  6. Generate /etc/sendmail.cf con:
    m4 config.mc > /etc/sendmail.cf
    e impostatene i permessi come segue:
    -rw------- 1 root root 26468 mai 12 22:52 /etc/sendmail.cf

  7. Generate il database di conversione degli indirizzi:
    /usr/bin/sendmail -bi -oA/etc/genericstable
    Dovrebbe essere stato creato il file /etc/genericstable.db.

  8. Rileggete la tabella degli alias:
    newaliases

  9. Il file /etc/hosts dovrebbe contenere una linea simile a:
    127.0.0.1 localhost.localdomain localhost localhost

  10. riavviate sendmail:
    kill `head -1 /var/run/sendmail.pid`
    /usr/bin/sendmail -bd -os
     

    Prova di sendmail

    Questo è tutto per sendmail. Adesso dobbiamo controllare che tutto funzioni bene:
    Create un file di nome test.mail contenente:

    Subject: test local
    first line of my message
    (compulsory blank line)


    e eseguite:
    /usr/bin/sendmail -v dede < test.mail

    Dovrebbero essere visualizzate le seguenti linee:

    dede... Connecting to local
    dede... Sent
    

    Lanciate mail o qualsiasi altro client di posta (escluso al momento netscape !!) e controllate che il messaggio sia stato ricevuto

    Per configurare Netscape in modo che legga la posta locale (fornita da sendmail):


    Potete anche usare chmod 777 ma questa modifica può essere un buco di sicurezza se non siete gli unici a potersi connettere al vostro computer. chmod 1777 vuol dire che i file possono essere cancellati solo dal proprietario e non dalle persone con permesso di scrittura nella directory.

    Da questo momento, il vostro PC fornirà la posta direttamente a Netscape anche se non siete connessi ad internet. Ovviamente si possono usare altri client di posta come XFmail, emacs, mutt, pine ecc...  

    Configurazione di fetchmail

    Prima di provare il nostro nuovo server mail su Internet, occorre configurare fetchmail in modo da prelevare i messaggi memorizzati nelle caselle postali del vostro ISP:
    create un file .fetchmailrc in /home/dede:

    poll pop.isp.net protocol POP3
            user toto is dede 
            password XXXXXXX
    

    dove toto e XXXXX sono la login e la password del vostro account di posta presso pop.isp.net. Se avete più di una mailbox, basta duplicare le linee per ogni casella postale che avete.
    Il file .fetchmailrc deve avere i permessi impostati come segue, altrimenti fetchmail si rifiuterà di funzionare:

    -rw-------   1 dede   dede   189 oct  6 21:45 /home/dede/.fetchmailrc
    

    Adesso facciamo una prova su Internet:

    Dovrebbe apparire nella coda dei messaggi in uscita quando date il comando: mailq Quindi, connettetevi al vostro provider (isp.net) e inviate il messaggio:
    /usr/bin/sendmail -q
    

    sendmail -q processa la coda dei messaggi di sendmail e fa in modo che i messaggi vengano inviati subito, se possibile. Attendete per qualche istante e eseguite fetchmail per prelevare la vostra posta; dovreste avere un messaggio inviatovi indietro dal mirror. Potete sconnettervi se sono arrivati tutti i messaggi.  

    Automatizzazione

    Una volta che tutto è funzionante, occorre ancora far si che il procedimento venga eseguito automaticamente ogni qual volta viene attivata la connessione.

    Con PPP, i file /etc/ppp/ip-up ed ip-down vengono eseguiti ogni volta che vi connettete o disconnettete. Controllate di avere una linea come questa in questi file, e in caso contrario aggiungetela:
    [ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local $*
    In /etc/ppp/ip-up aggiungete:
    [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local $*

    I file /etc/ppp/ip-up e ip-down a questo punto lanceranno i file ip-up.local e ip-down.local che scriveremo così:

    #!/bin/bash
    # /etc/ppp/ip-up.local
    
    #Record connection parameters
    echo `date` $4 $5 ppp-on >> /etc/ppp/history
    tail -n 1 connect-errors >> /etc/ppp/history
    
    # Send waiting mail
    echo Sending mail... > /dev/console
    /usr/sbin/sendmail -q
    echo Mail sent.  > /dev/console
    
    # Get mail waiting on the pop server
    echo Getting mail... > /dev/console
    fetchmail  > /dev/console 2>&1
    echo Got mail.  > /dev/console
    
    #End
    exit 0
    # end of /etc/ppp/ip-up.local
    

    In effetti, le due linee importanti sono i comandi sendmail -q e fetchmail. Le rimanenti sono accessorie e consentono:

    #!/bin/bash
    # /etc/ppp/ip-down.local
    
    #Record connection parameters
    echo `date` ppp-off >> /etc/ppp/history
    
    #end
    exit 0
    # end of /etc/ppp/ip-down.local
    

    Questi file vengono eseguiti come root, pertanto è necessario copiare il file .fetchmailrc nella directory /root.

    Se avete un accesso permanente ad Internet, sendmail manda regolarmente la posta se è stato lanciato come demone con il seguente comando:
    sendmail -bd -q10m
    manda le mail ogni 10 minuti, per esempio.
    anche fetchmail può essere lanciato in modalità demone con il comando:
    fetchmail -d 600
    per ricevere la posta in arrivo ogni 10 minuti (600 secondi), per esempio.

    Di solito questo tipo di comandi vengono messi nei file di inizializzazione nella directory /etc/rc o /etc/rc.d/ (può variare a secondo della vostra configurazione).  

    Conclusioni

    Con tale configurazione, vengono inviati i messaggi della coda di uscita (mailq). Vengono prelevati i messaggi in arrivo nelle mailbox del vostro ISP. Potete usare xbiff o xmailbox o qualsivoglia software simile che vi avverte quando avete posta. Potete anche ottimizzare il modo in cui la vostra posta viene ordinata e filtrata con procmail. Quest'ultimo passo è spiegato nell' articolo di Novembre 1997 di Angel Lopez.  

    Altri articoli correlati

    Documentazione su sendmail e fetchmail:  

    Commenti per questo articolo

    Ogni articolo ha la sua pagina dei commenti. Su questa pagina è possibile inviare un commento o leggere i commenti degli altri lettori:
     Pagina dei commenti 

    Pagine web mantenute dal Team degli Editori di LinuxFocus
    © John Perr
    LinuxFocus.org 2000

    Clicca qui per segnalare un errore o per inviare un commento a Linuxfocus
    Informazioni sulla traduzione:
    fr -> -- John Perr
    fr -> en John Perr
    en -> it Antonio Schifano

    2000-06-21, generated by lfparser version 1.5