Sendmail en Fetchmail: Een lokale emailserver

ArticleCategory:

System Administration

AuthorImage:

[John Perr]

TranslationInfo:

Original in fr John Perr

fr to en:John Perr

en to nl:Egon Willighagen

AboutTheAuthor:

Linuxgebruiker sinds 1994 en Is redacteur in het Franse LinuxFocus team.


Abstract:

Dit artikel legt uit hoe Sendmail en Fetchmail geconfigureerd kunnen worden voor een desktop computer met een PPP link naar het internet. Zo'n configuratie maakt het mogelijk dat u elk emailprogramma kunt gebruiken (en niet alleen Netscape). U kunt dan uw email automatisch laten versturen en ophalen als u verbinding legt met het internet via uw PPP verbinding.

ArticleIllustration:

[Illustration]

ArticleBody:

Inleiding

Om email naar wensen te kunnen gebruiken op uw Linux computer, is het noodzakelijk een Mail Transfer Agent (MTA) te installeren. De meest populaire (en oudste) is zonder twijfel Sendmail, maar andere zoals Qmail en Exim, dat standaard gebruikt wordt op Debian systemen, zijn ook beschikbaar en vaak sneller en makkelijker te installeren. We zullen ons beperken tot Sendmail en gebruiken een installatieprogramma ontwikkelt op Berkley University door Eric Allman.
Om uw email bij uw internetprovider, of Internet Server Provider (ISP) in het Engels, op te halen en lokaal op te slaan is het nodig om naast Sendmail ook Fetchmail te installeren en configureren. Fetchmail kan uw email ophalen via de POP3 en IMAP protocollen, maar ook via het UUCP protocol. Dit protocol is behoorlijk exotisch en zal niet in dit artikel behandeld worden.

Configuratie

Als eerste moet u de volgende RPM pakketten installeren:

Afhankelijk van uw systeem zullen de namen en de versienummers licht afwijken. Bovendien is het derde pakket strikt genomen niet noodzakelijk.

Na de installatie moet Sendmail nog geconfigureerd worden. Hiervoor volgt u de volgende stappen:

  1. In alle volgende stappen neem ik aan dat:
  2. Creëer het volgende bestand: /usr/lib/sendmail-cf/cf/config.mc met als inhoud:
    # begin van het bestand 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)
    # eind van het bestand config.mc
    

    De regel define(`SMART_HOST'.... vertelt Sendmail dat alle uitgaande email via de SMTP server van uw internetprovider provider verzonden moet worden en niet direct vanaf uw computer het internet op. De server van uw internetprovider zal dan deze laatste stap op zich nemen en uw computer werk uit handen nemen.
  3. Maak ook het bestand /etc/genericstable aan:
    jan:   janjanssen@isp.net
    root:   janjanssen@isp.net
    news:   janjanssen@isp.net
    
  4. Controleer dat /etc/alias tenminste de volgende regels bevat:
    MAILER-DAEMON:  postmaster
    postmaster:     root
    
  5. Wijzig of creëer het bestand /etc/nsswitch.conf met de volgende inhoud:
    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 
    
    (Kortom, elke regel, behalve de regel die begint met hosts:, moet ten hoogste "files" opgeven.)

  6. Genereer het bestand /etc/sendmail.cf met het commando:
    m4 config.mc > /etc/sendmail.cf
    en wijzig de bestandspermissies zodanig dat:
    -rw------- 1 root root 26468 May 12 22:52 /etc/sendmail.cf

  7. Genereer een adressen conversie database met:
    /usr/bin/sendmail -bi -oA/etc/genericstable
    Het bestand /etc/genericstable.db zou nu aangemaakt moeten zijn.

  8. Lees de nieuwe aliassen in:
    newaliases

  9. Het bestand /etc/hosts moet een regel bevatten die overeenkomt met of lijkt op de volgende:
    127.0.0.1 localhost.localdomain localhost localhost

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

    Het testen van Sendmail

    Nu we klaar zijn met het installeren van Sendmail, is het tijd om de nieuwe configuratie te testen:
    Maak een bestand aan met de naam test.mail en geef het de volgende inhoud:

    Subject: Sendmail test
    eerste regel van mijn test bericht
    (verplichte lege regel)


    en doe hierna:
    /usr/bin/sendmail -v jan < test.mail

    De volgende berichten zullen op uw scherm verschijnen:

    jan... Connecting to local
    jan... Sent
    

    Start uw emailprogramma (maar nog niet Netscape), en controleer of u het bericht ontvangen hebt.

    Om Netscape juist in te stellen voor het lezen van uw lokale email zoals dat door Sendmail en Fetchmail beheert wordt, doet u het volgende:


    U kunt ook chmod 777 gebruiken, maar dit veroorzaakt een veiligheidsrisico. Het commando chmod 1777 zorgt ervoor dat alleen de eigenaar van het bestand het bestand kan wissen en niet iedereen die schrijf toegang heeft tot de directory.

    Vanaf dit moment kunt u email versturen en lezen in Netscape zonder dat u verbonden bent met het internet. Uiteraard geldt dit ook voor andere emailprogramma's zoals XFMail, Emacs, Mutt en Pine.

    Configureren van Fetchmail

    Voordat we de Sendmail configuratie testen voor het internet, moeten we eerst de Fetchmail configuratie doen. Hierdoor kunnen we emailberichten van de internetprovider overhalen en lokaal opslaan: maak het bestand .fetchmailrc aan in uw homedirectory /home/jan en geef het de volgende inhoud:

    poll pop.isp.net protocol POP3
            user janjanssen is jan 
            password XXXXXXX
    

    waar janjanssen en XXXXXXX uw login en paswoord zijn voor de POP3 server van uw internetprovider. Als u meer dan een emailaccounts heeft, kunt u deze drie regels kopiëren en aanpassen voor uw andere accounts.
    Het bestand .fetchmailrc moet de volgende bestandspermissies hebben, omdat Fetchmail ander niet wil starten:

    -rw-------   1 jan    jan    189 Oct  6 21:45 /home/jan/.fetchmailrc
    

    Nu ook dit gedaan is, kunnen we de emailverbinding met het internet testen:

    Als het goed is, verschijnt het emailbericht in de wachtrij, zoals u kunt zien met het commando: mailq De volgende stap, is nu echt contact te maken het met internet. Als u ingelogd bent op het internet geeft u het commando:
    /usr/bin/sendmail -q
    

    Het commando Sendmail -q verstuurt alle berichten die in de wachtrij staan naar de SMTP server van uw provider. Wacht enkele minuten en type dan fetchmail om nieuwe email bij uw internetprovider op te halen. De emailspiegel heeft zeer waarschijnlijk uw email al teruggestuurd. Als alle berichten overgehaald zijn kunt u uitloggen waarna u ze rustig en zonder tijdsdruk kunt lezen.

    Automatisch Ophalen en Versturen

    Als dit alles ingesteld is en werkt, moeten we alleen nog het ophalen van versturen van email nog automatisch laten uitvoeren bij het inloggen op het internet.

    Met PPP verbindingen worden de programma's /etc/ppp/ip-up en /etc/ppp/ip-down gestart om verbinding te leggen en verbreken met het internet. Controleer of deze twee bestanden de volgende twee regels bevatten of voeg deze toe als ze er niet instaan:
    [ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local $*
    voor /etc/ppp/ip-down en in het bestand /etc/ppp/ip-up de regel:
    [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local $*

    De programma's ip-up en ip-down starten dan respectievelijk de programma's ip-up.local en ip-down.local. Het programma ip-up.local heeft tenminste de volgende inhoud:

    #!/bin/bash
    # /etc/ppp/ip-up.local
    
    # Bewaarde parameters van de PPP verbinding
    echo `date` $4 $5 ppp-on >> /etc/ppp/history
    tail -n 1 connect-errors >> /etc/ppp/history
    
    # Verstuur het email in de wachtrij
    echo Sending mail... > /dev/console
    /usr/sbin/sendmail -q
    echo Mail sent.  > /dev/console
    
    # Haal het email op de POP3 server van uw internetprovider over
    echo Getting mail... > /dev/console
    fetchmail  > /dev/console 2>&1
    echo Got mail.  > /dev/console
    
    # Klaar :)
    exit 0
    # einde van het bestand /etc/ppp/ip-up.local
    

    In feite zijn de twee belangrijke regels de commando's sendmail -q en fetchmail. De andere zijn alleen van cosmetische aard en maken het mogelijk om:

    Het overeenkomstige ip-down.local bestand heeft de volgende inhoud:
    #!/bin/bash
    # /etc/ppp/ip-down.local
    
    # Bewaarde parameters van de PPP verbinding
    echo `date` ppp-off >> /etc/ppp/history
    
    # Klaar
    exit 0
    # einde van het bestand /etc/ppp/ip-down.local
    

    Omdat deze programma's door de root gedraaid worden, is het nodig om het bestand .fetchmailrc ook naar de directory /root te kopiëren.

    Als u een permanente verbinding heeft met het internet, zoals met een kabelmodem, kunt u Sendmail programma als deamon starten om elke tien minuten uw email te versturen. U doet dit met het commando:
    sendmail -bd -q10m
    Om ook elke tien minuten uw email op te laten halen geeft u het volgende commando: fetchmail -d 600
    Ook nu wordt het programma als deamon gestart en voert het zijn taak elke tien minuten, is 600 seconden, uit.

    Gebruikelijk is dat deze commando's gegeven worden in de opstartbestanden in de directory /etc/rc of /etc/rc.d/ dat afhangt van type distributie.

    Conclusie

    Met deze configuratie wordt uw email elke keer als u inlogt op het internet uit de wachtrij (mailq) verzonden. Ook wordt de wachtende email bij uw provider overgehaald. U kunt programma's als Xbiff en Xmailbox gebruiken om te waarschuwen als u nieuwe email heeft. Tenslotte kan ik melden dat u uw email kunt laten sorteren en filteren met Procmail. Hoe dit werkt is uitgelegd in een artikel in de November 1997 uitgave van LinuxFocus geschreven door Angel Lopez.

    Relevante Artikelen

    Documentatie over Sendmail en Fetchmail: