Een mailserver aan huis

>> Index <<

Dit artikel geeft tips en uitleg over het afhandelen van emailberichten op een thuisnetwerk. Ik leg globaal uit hoe internetmail werkt, en geef voldoende details om op het netwerk de baas over uw post te worden. Een Linux mailserver met fetchmail, sendmail en pop3 en IMAP servers staat centraal.

Sendmail: de standaard Mail Delivery Agent

> Top <

Mail Delivery Agents

Sendmail is een Mail Delivery Agent (MDA): een dienst die de emailberichten van uw email client oppakt en naar hun eindbestemming verzendt. Dit gaat volgens het in RFC 821 beschreven Simple Mail Transfer Protocol (SMTP). Sendmail ontvangt de post als smtp dienst, maar verstuurt de post als smtp client naar andere Mail Delivery Agents. De door u geposte emailberichten van smtp server naar smtp server doorgesluisd totdat ze hun eindbestemming - het domein van de geadresseerde - bereiken. Voor dit doel, het versturen van de post over bedrijfsnetwerken en het internet, is sendmail gemaakt. Meer dan de helft van de internet servers maakt er gebruik van. Eric Allmans Sendmail is een van de open source succesnummers van het internet.

Hoewel Sendmail bij vrijwel alle Linux distributies standaard geïnstalleerd wordt, is het allesbehalve een eenvoudig programma. Dat heeft te maken met de vele opties waarmee systeembeheerders te maken hebben. Voor hen is door Bryan Costales en Eric Allman een apart Sendmail boek geschreven. Minder moeilijk te configureren Mail Delivery Agents zijn qmail en postfix. Wietse Venema's Postfix heeft het bijkomende voordeel van een veilig opzet. Zo draait Postfix niet onder het root account. Met de Local Mail Delivery Agent procmail kunt u de elektronische post automatisch beantwoorden en sorteren.

Overigens leveren de distributies voorgeïnstalleerde versies van sendmail waarin u nog maar weinig in te vullen hoeft. Maar om veiligheidsredenen is die versie meestal zo ingesteld dat ze alleen lokale post accepteren. Dus van de post van gebruikers van de computer (userid@localhost) zelf. En zal sendmail het op het vanaf een LAN client (userid@hostnaam) niet doen.

Daarnaast bestaan er Local Delivery Agents (LDA), waarvan procmail en /bin/mail de bekendste zijn. Ze leveren de door sendmail op uw domein (uw sendmail internetadres) bestelde berichten bij de juiste persoon af. Daarmee is de Local Delivery Agent te vergelijken met een portier/receptionist die de ingekomen post in het juiste postvak plaatst: bijv. /var/spool/mail/user-id. Om die reden wordt een LDA ook wel de Final Delivery Agent genoemd.

Mail Delivery Agents als sendmail versturen de post van host naar host. Ze letten op de IP adressen van de achter het apestaartje genoemde domeinen, maar niet op de geadresseerde. Alle post van en voor host zolder.thuis (sjoerd@zolder.thuis, user-id@provider.nl, bouke@zolder) komt in dezelfde wachtrij (/var/spool/mqueue) van zolder.thuis aan. Met een sendmail -q wordt die wachtrij geleegd. De lokale post wordt aan de Local Delivery Agent (huisportier) overgelaten en de niet lokale post zendt sendmail aan de Mail Delivery Agent van bestemming of aan een tussenpersoon (smarthost) die het verder afwikkelen moet. Ik kom hier later op terug.

Mail User Agents

Mail User Agents (MUAs) als Eudora, pine, mutt en Netscape Mail zijn gespecialiseerd in het lezen, bewaren, schrijven en adresseren van post. Ze leveren uw berichten bij uw Mail Delivery Agent (MDA) af. Dat is meestal de SMTP server van uw provider die op poort 25 zit. Maar het kan ook een sendmail server op uw thuisnetwerk zijn. Met het laatste beschikt u ook over een intern postsysteem.

De emailprogramma's importeren de binnenkomende post uit uw lokale Unix spoolbestand (/var/spool/mail/user-id) of via het pop3 of imap uit het Unix spoolbestand van uw mailserver en slaan het meestal in uw persoonlijke Unix mailbox (/home/user/mbox) op. Wilt uw hier orde in aanbrengen, dan kunt u specifieke mbox bestanden aanmaken in /home/user/Mail/. Een kopie van de door u verzonden berichten staat typisch in /home/gebruiker/Sent.

Om te voorkomen dat u die belangrijke bestanden per abuis zou kunnen wissen of dat iemand anders ze kan inzien is het verstandig om u Documenten in /home/gebruiker/Documents te bewaren. En samba (smb.conf) zo in te stellen dat hij alleen die documentmap inleest.

[homes]
	comment = Home Directories
	path = /home/%u/Documents
	read only = No
	inherit permissions = Yes

Fetchmail als algemene email client

Laat u de berichten van uw mailaccount op de mailserver staan, dan blijven ze in de wachtrij staan: de /var/spool/mail/user-id van uw Internet Service Provider (ISP). Maar dat heeft als nadeel dat de UNIX spooler van uw ISP steeds voller wordt (quota!). Bovendien kan iemand die uw wachtwoord kraakt uw gegevens manipuleren. U moet uw UNIX postbus dus regelmatig legen. Maar als u dat met Outlook doet, slaat Microsoft uw post in zijn eigen bestandsformaat op. Onder Linux of OS/2 hebt u hier weinig aan.

Om de post voor het hele netwerk toegankelijk te maken kunt u uw post van de ISP naar een Linux mailserver op het LAN verplaatsen. Hiertoe is fetchmail de aangewezen weg: fetchmail verplaatst de post van al uw ISP accounts in een gang naar de juiste spooler van de mailserver uw LAN (/var/spool/mail/user). Als u die wachtrij met pine benaderd zal mail de post naar een eventuele /home/user/mbox verplaatsen. Maar als u op die smtp mailserver ook een simpele imap server installeert (echt een peuleschil) kunnen Outlook en andere imap clients (Mozilla) megabytes post op uw Linux mailserver benaderen. Dat is veruit de plezierigste weg.

/usr/bin/fetchmail -vv -f /etc/fetchmailrc

Waarbij de syntax van fetchmailrc als volgt is:

poll pop.provider.nl proto pop3 aka provider.nl no dns user gebruikersnaam_provider pass wachtwoord is gebruikersnaam_linux
poll imap.provider1.nl proto imap aka provider.nl no dns user gebruikersnaam_provider1 pass wachtwoord1 is gebruikersnaam_linux

Het serveren van de binnenkomende post op uw domein

Het centraal beheren van uw email in de spoolbestanden van een Linux mailserver heeft grote voordelen.

Als u iedere netwerkgebruiker zijn eigen UNIX account geeft, kunt de post van individuele gebruikers fysiek scheiden.

Door de post op de Linux mailserver te laten staan (IMAP of POP3 optie in uw emailclients: Delete from host: No of Leave messages on server) kunt u overal op het lokale netwerk uw email lezen, kopiëren, beantwoorden of wissen.

Voor het opruimwerk (spam, virussen) gebruikt u een veilig ingestelde IMAP client met meerdere accounts.

Daarnaast kan een spam- en virusfilter als Amavis u helpen om meteen alle ongewenste bijlagen opzij te zetten en te scannen op virussen, dus al voordat ze bij de gebruikers aankomen. Amavis stuurt u dan een mailtje met de gevonden resultaten.

A virus (Sober.K@mm) was found.
A banned name (.exe) was found.
Scanner detecting a virus: Norman Virus Control v5 / Linux
The mail originated from: <>
According to the 'Received:' trace, the message originated at:
   cstesucgr.gov
Notification to sender will not be mailed.
The message WAS NOT delivered to:
<bouke@localhost.zolder.thuis>:

In dit geval had iemand een Sober virus aan mijn zoon Bouke verstuurd. Het bericht werd met een vanuit cron-hourly gelanceerde fetchmail opgehaald. Dat wil zeggen dat via een cron script om het uur de post van Linux gebruikers bij de providers wordt opgehaald. Dit cron-script voert echter als eerste een internet update van de Norman virusscanner uit. Daarna komen de fetchmail opdrachten. Norman wordt weer ingeschakeld door het spam en virusfilter Amavis. Amavis heeft .pif, .scr en .exe bijlagen op de zwarte lijst staan. Amavis plaatst ze in een aparte map buiten het bereik van de MUA's. In mijn geval scant Amavis ze individueel in een tijdelijke map, zodat een overijverige virusscanner geen kwaad kan voor de rest van de berichten.

Een crash van het mailsysteem komt met deze gestructureerde aanpak zelden voor. Maar wees niet zo onwijs om een virusscanners op /var/spool/mail/user los te laten zonder /var/spool/mail/ eerst te backuppen. Het bestandsformaat van de UNIX spoolbestanden en de UNIX mailboxen is op dezelfde RFC 822 gebaseerd: een /home/sjoerd/mbox die ik naar /var/spool/mail/sjoerd verplaats kan daarna weer via IMAP of POP3 geserveerd worden. Hebt u uw post al in Outlook formaat opgeslagen, dan kunt u ze naar uw eigen IMAP server in Outlook slepen zodat ze daarna ook onder andere besturingssystemen te lezen zijn.

De post onder UNIX

> Top <

Er is een belangrijk verschil tussen een single en een multi-user systeem waar het de email betreft. Een single-user systeem heeft vooral met externe mailservers te maken, maar een multi-user systeem moet ook lokale postberichten afhandelen.

Op een Windows werkstation halen programma's als Outlook de post op bij de emailservers van hun internetproviders. De Mail User Agent logt in op poort 110 (Post Office Protocol v.3) of 143 (Internet Message Access Protocol) van de emailserver, authentiseert zich met een gebruikersnaam en een wachtwoord en kan daarna de post inzien, labelen, wissen, ophalen of op de server laten staan. De emailprogramma's versturen de uitgaande post naar de SMTP server (Mail Delivery Agent) van de provider. En tenzij u veel ruimte hebt op de IMAP server van uw provider zit u aan één emailprogramma vast.

Een Linux MUA kan op identieke wijze van een externe provider gebruik maken, maar Linux heeft ook zelf een postsysteem nodig. Linux is immers een multi-user systeem en een bericht van cron@localhost naar root@localhost kan uw provider onmogelijk afhandelen. Onder Linux hebt u dus een lokale postbesteller nodig. Hiertoe wordt meestal sendmail, qmail of postfix geïnstalleerd.

Omdat een op het internet aangesloten mailserver gemakkelijk door spammers misbruikt kan worden, moet de mailserver achter een firewall draaien en dan alleen naar bepaalde adressen (LAN, eventueel de smtp server van uw provider en natuurlijk localhost) luisteren. Via "telnet server 25" kunt u nagaan of sendmail beschikbaar is.

zolder:/etc # telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 zolder.thuis ESMTP Sendmail 8.12.3/8.12.3/SuSE Linux 0.6; Fri, 26 Mar 2004 2 2:00:55 +0100
help
214-2.0.0 This is sendmail version 8.12.3
214-2.0.0 Topics:
214-2.0.0       HELO    EHLO    MAIL    RCPT    DATA
214-2.0.0       RSET    NOOP    QUIT    HELP    VRFY
214-2.0.0       EXPN    VERB    ETRN    DSN     AUTH
214-2.0.0       STARTTLS
214-2.0.0 For more info use "HELP <topic>".
214-2.0.0 To report bugs in the implementation send email to
214-2.0.0       sendmail-bugs@sendmail.org.
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info

Op http://www.sendmail.org ziet u wat de laatste versie van sendmail is. Het aantal kritische veiligheidsproblemen van sendmail is groot. Ze zijn extra kritisch omdat sendmail als root uitgevoerd wordt. Het betekent dat u regelmatig updates moet uitvoeren en de toegang tot sendmail tot het minimaal noodzakelijke beperken moet. U moet sendmail dus streng configuren voor haar gebruikers (dat kunnen ook hun viri zijn) en u moet sendmail met een firewall tegen de niet geautoriseerde gebruikers afschermen.

Een eigen mailserver op het LAN

Omdat een beetje Linux distributie alle tools en faciliteiten in huis heeft om op het LAN uw internet provider te vervangen, is het vrij eenvoudig om Linux meteen als mailserver voor uw LAN in te richten. U bent dan uw eigen internetprovider voor de LAN gebruikers.

Hiertoe maakt u Linux accounts voor al uw netwerkgebruikers aan. In het eenvoudigste geval kunnen ze via telnet of SecureShell in een tekstmodus MUA als pine of mut opstarten om op de server hun post te lezen, te versturen en op te slaan. Met een pop3 of imap server kunnen LAN gebruikers ook met hun eigen emailclients (POP3, IMAP) werken.

Hiertoe moet u onder Linux een smtp server (bijv. sendmail, postfix of qmail), een pop3 en/of een imap server in het geheugen laden. Of - wat op een klein netwerk efficiënter is - koppelt ze aan de internet daemon, zodat ze alleen als het nodig is geladen worden. Deze servers mogen echter niet op het internet zichtbaar zijn, omdat ze gemakkelijk zijn te misbruiken. U moet een op het internet aangesloten mailserver dan ook beslist met een firewall (packet filter en tcp-wrappers op Linux) en/of een router met netwerkadresvertaling beschermen.

Ik raad u beslist af om sendmail als internetserver in te zetten. En dat geldt al helemaal voor de standaard pop3 en imap pakketten. Ik draai ze op een privé netwerkadres (192.168.n.m), maar sluit de toegang tot die servers vanaf het internet hermetisch af. Vanwege de vele beveiligingsproblemen is het gebruik zeer riskant. Omdat sendmail onder het root account draait kan iedere configuratiefout rampzalige gevolgen hebben (misbruik door spammers, DOS en overname van uw PC).

Gelukkig is het zelden nodig om sendmail als internetserver te draaien. Pas als uw computer onder een vast IP adres (of hostnaam) draait, heeft het zin. Dan kunt u zeer veel emailadressen (gebruikersnaam@hostnaam) aanmaken. Onder demon en hccnet.nl is dat bij mij het geval. Maar omdat ik onder die Internet Providers al over voldoende emailadressen beschik haal ik de post op met de fetchmail client. Voor vrienden een "exclusieve" email server draaien op de in iedere SMTP of NNTP-Posting te lezen host fia10-70.dsl.spam.hccnet.nl heeft op het promiscue internet weinig zin. Dus laat ik die poort op slot. Ik laat ik de bewaking van mijn SMTP poorten liever over aan de de professionals van demon.nl en hccnet.nl die dag en nacht mijn emailaccounts bewaken.

Ook voor het zenden van post hoeft sendmail niet naar poort 23 te luisteren. Het oproepen van een bestelronde met sendmail -q voldoet. Dit kan evenals fetchmail met cron worden geautomatiseerd. Sendmail -q zal tevens de haar in /var/spool/mqueue aangeboden niet lokale post trachten te bestellen, maar dat lukt natuurlijk alleen als de internetverbinding aan staat en sendmail over een correcte DNS (die van uw provider!) beschikt. Bij het bestellen van de post bij uw provider (smarthost) treedt sendmail als SMTP client op. Mits de DNS goed is ingesteld, zal ze geen last hebben van de netwerkadresvertaling van uw firewall.

In Hoe de post besteld wordt ga ik aan de hand van de weg die de post aflegt op de belangrijkste aspecten m.b.t. de configuratie in.

Nog even alles op een rijtje

Wat kunt u bereiken met een mailserver op het LAN? En wat hebt u daar voor nodig?

  1. U wilt dat netwerkgebruikers elkaar post kunnen sturen (telnet, ssh, smtp op het lan).
  2. U wilt met een dial-up account in een keer alle post versturen en ophalen om telefoontikken te besparen (fetchmail, smtp op het lan).
  3. U wilt een berichtje dat u onder Windows ontvangt naar een Linux client kunnen forwarden (smtp op het lan).
  4. U wilt dat berichtje ook onder linux kunnen lezen (fetchmail, smtp en imap op het lan)
  5. U wilt dat bepaalde netwerkgebruiker toegang krijgen tot internet mail, maar andere niet zomaar (proxy, fetchmail user=, smtp op het lan).
  6. U wilt maximale controle uitoefenen op het mailverkeer (proxy, fetchmail, procmail, sendmail -q, virusscanner)
  7. U wilt dat anderen uw computer kunnen gebruiken voor email en spam (smtp op het internet)

Conclusie: Achter een met netwerkadresvertaling uitgeruste firewall kan een Linux mailserver met sendmail, fetchmail, imap en eventueel pop3 in vrijwel alle emailbehoeftes van uw netwerkgebruikers voorzien. Ook als ze zelf geen default route naar het internet hebben. Aangezien iedere gebruiker de door fetchmail opgehaalde post via zijn UNIX account met IMAP kan benaderen kunt u de post gescheiden houden. Maar omdat u het als root instelt houdt u er toch zicht op.

Hoe de post besteld wordt

> Top <

Het kan zijn dat u uw mailberichten rechtstreeks via Netscape naar de smtp server van uw ISP verstuurd. Dan hebt u sendmail (of een alternatief) eigenlijk alleen nodig voor het afhandelen van het lokale postverkeer: de berichten van cron aan root of jan@localhost die een bericht stuurt naar aan piet@localhost. Ook op een stand-alone PC blijft Linux een multi-user systeem.

Maar u kunt uw email ook naar uw eigen smpt mailserver sturen. Dan gaat het via sendmail.

Voor de duidelijkheid zal ik stapsgewijs aangeven langs welke weg mijn email gaat. De grijze delen worden door de clients uitgevoerd. De paarse op een lokaal netwerk. Wit is commentaar. Mailheaders zijn groen gekleurd. Om spam te voorkomen zijn de email adressen wat bewerkt.

Het gaat om een bericht dat door mij vanaf mijn hccnet account naar mijn demon account verzonden werd. Ik schreef en las het onder OS/2 (ecs.thuis). Sendmail op zolder.thuis trad als mailserver op. De mailheaders geven de lokaties aan waar het tekstbestand werd verwerkt.

Return-Path: <sjoerd.h.visser@spam.hccnet.nl>
Received: from localhost (localhost [127.0.0.1])
        by zolder.thuis (8.12.3/8.12.3/SuSE Linux 0.6) with ESMTP id gAGM7DgB002779
        for <sjoerd@localhost>; Sat, 16 Nov 2002 23:07:13 +0100
Received: from pop3.demon.nl
        by localhost with POP3 (fetchmail-5.9.0)
        for sjoerd@localhost (single-drop); Sat, 16 Nov 2002 23:07:13 +0100 (CET)
Received: from punt-16.mail.nl.demon.net by mailstore
          for sjoerd@sjoerd-visser.spam.demon.nl id 1037484248:16:14781:1;
          Sat, 16 Nov 2002 22:04:08 GMT
Received: from relay-14.mail.nl.demon.net ([194.159.73.29])
          by punt-14.mail.nl.demon.net  id aa1423143; 16 Nov 2002 22:03 GMT
Received: from [62.251.70.10] (helo=zolder.thuis)
        by relay-14.mail.nl.demon.net with esmtp (Exim 3.36 #1)
        id 18DB2k-00041A-00
        for sjoerd@sjoerd-visser.spam.demon.nl; Sat, 16 Nov 2002 22:03:58 +0000
Received: from hccnet.nl (ecs.thuis [192.168.1.5])
        by zolder.thuis (8.12.3/8.12.3/SuSE Linux 0.6) with ESMTP id gAGM3lgB002769;
        Sat, 16 Nov 2002 23:03:47 +0100
Message-ID: <3DD6C0B3.60100@hccnet.nl>
Date: Sat, 16 Nov 2002 23:03:31 +0100
From: Sjoerd Visser <sjoerd.h.visser@hccnet.nl>
User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.2b) Gecko/20021017
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: sjoerd@sjoerd-visser.spam.demon.nl
Subject: Langs welke weg gaat mijn post?
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Langs welke weg gaat mijn post?

1

MUA zender

Met uw emailprogramma (Mail User Agent) wordt het mailbericht in uw home directory gemaakt. De header X-mailer geeft de MUA aan:

User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.2b) Gecko/20021017

Dit bericht werd door Mozilla onder OS/2 geschreven.

2


De Mail User Agent (MUA) stuurt het bericht naar SMTP poort 25 van SuSE Linux op zolder.thuis. Dat is mijn lokale mailserver (MTA) voor uitgaand verkeer.



Beschikt u niet over een lokale Mail Tranfer Agent (MTA) dan zal de bestemmingsserver voor uw mailberichten de SMTP server van uw provider zijn (Stap 7).

Received: from smtp.hccnet.nl by smtp.hccnet.nl
        via fia10-70.dsl.hccnet.nl [62.251.70.10] with SMTP for <sjoerd@sjoerd-visser.spam.demon.nl>
        id AAA22921 (8.8.8/1.13); Sun, 17 Nov 2002 00:13:17 +0100 (MET)

Zowel het "from" als het "by" kopje bevatten het netwerkadres van de SMTP server van de provider. Er vindt geen netwerkvertaling (processing) plaats. Het email programma is rechtstreeks met het internet verbonden.

3

tcp wrapper

De TCP wrapper van de de internet daemon op zolder controleert de herkomst en lanceert sendmail.


Listen address en Relay access

Recente versies van sendmail luisteren standaard alleen naar "localhost". Dit is bedoeld om misbruik (spammers, hackers) te weren. Onder Suse 8 staat de /etc SYSCONFIG variabele SMTPD_LISTEN_REMOTE op NO. Die moet u op YES zetten om sendmail als lokale smtp server in te zetten. Sendmail luistert dan naar alle (0.0.0.0) poorten.

sjoerd@zolder:~> netstat -anlp | grep :25
(No info could be read for "-p": geteuid()=500 but you should be root.)
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN

Maar ook dan zal sendmail de post van andere hosts op uw netwerk nog met een "Relay access denied" weigeren . In etc/mail/access en /etc/mail/relay-domains kunt u vertrouwde hostnamen en domeinen opgeven. Bijv. het netwerkadres 192.168.0. Wees hier zuinig mee, om misbruik van uw mail systeem door hackers en spammers te voorkomen.

4

MTA op lokale mailserver

Sendmail ontvangt de post en onderzoekt of het om lokaal (sjoerd@visser.thuis naar bouke@zolder.thuis) of internetverkeer gaat. Sendmail zal hierbij van het /etc/hosts bestand en de DNS gebruik maken.

Received: from hccnet.nl (ecs.thuis [192.168.1.5])
        by zolder.thuis (8.12.3/8.12.3/SuSE Linux 0.6) with ESMTP id gAGM3lgB002769;
        Sat, 16 Nov 2002 23:03:47 +0100

In tegenstelling tot Demon geeft HccNet haar leden weliswaar een (semi) vast IP adres, maar geen geregistreerd domein (sjoerd-visser.spam.demon.nl). Vandaar dat de verzendende computer ecs.thuis [192.168.1.5] met het email adres sjoerd.h.visser@hccnet.nl tot het hccnet.nl netwerk gerekend wordt.

Bestemmingen die niet op te lossen zijn, worden geweigerd. Op een traag netwerk met lookup failures geeft dit problemen.

5

processing

De headers van het mailbericht worden aangepast (afzender sjoerd@ecs.thuis wordt bijv. sjoerd@mijn.domein.nl). Daarna plaatst sendmail het bericht in de wachtrij (mail queue /var/mqueue).

6

sendmail -q verstuurt de post

Sendmail verstuurt de post uit de wachtrij naar de bestemming met sendmail -q. Afhankelijk van het adres kunnen stappen worden overgeslagen.



1). Een lokale bestemming (cron@zolder voor root@zolder) op een multi-user systeem zal localhost niet verlaten. Het bericht gaat via de Local Mail Delivery Agent naar de mailboxen (/var/spool/mail). Stap 6 gaat over in Stap 13.

2). Een bestemming op het LAN kan zijn eigen SMTP server hebben (Stap 10). Zo niet, dan blijft het bericht op dezelfde server (Stap 10) en is het via pop3 of imap van de server op te halen (Stap 13) .

Een bestemming buiten het LAN of WAN kan op twee manieren worden afgeleverd.

3a.) Standaard maakt uw sendmail contact maakt met de MTA van het domein van bestemming van uw post (Stap 9). Dus poort 25 van het netwerk dat vermeld staat achter het apestaartje van het internetmailadres. Dit is een optie voor mensen met een permanente internetverbinding met een vast IP adres, maar deze methode is niet aan te raden voor een dial-up verbinding. Want als de eindbestemming niet of moeilijk te bereiken is, zullen er vele inbelpogingen worden ondernomen. Iedere tikfout of vertraging op het internet zal u telefoontikken kosten.

3b.) Om die reden wordt voor een dial-up verbinding de niet lokale post post meestal ongezien afgeleverd bij de MTA van uw internet provider (smtp.provider.nl). In sendmail jargon: de smarthost. Met bepaalde configuratieopties (nodns, nocanonify) zal uw sendmail de DNS controles uit Stap 4 overslaan en dit werk aan het veel snellere netwerk van uw provider overlaten.

7

sendmail op smarthost

De SMTP server van mijn provider (smarthost) ontvangt de post vanaf mijn internet IP adres en onderzoekt de bestemming. De provider (hccnet.nl) geeft het bericht een uniek nummer.

Message-ID: <3DD6C0B3.60100@hccnet.nl>

Vrijwel altijd zal de provider alleen post vanuit zijn eigen (sub)domein accepteren. In dit geval vanuit het IP bereik van HCCNet.

Received: from [62.251.70.10] (helo=zolder.thuis)
        by relay-14.mail.nl.demon.net with esmtp (Exim 3.36 #1)
        id 18DB2k-00041A-00
        for sjoerd@sjoerd-visser.spam.demon.nl; Sat, 16 Nov 2002 22:03:58 +0000

8

processing

Ook op de smarthost vindt weer processing van headers plaats (bijv. om de route van het bericht aan te geven). Als het domein niet te bereiken is, zal uw provider u hierover berichten.

9

sendmail -q

Anders wordt het naar de SMTP server (sendmail) van het domein van de geadresseerde verzonden.

Received: from [62.251.70.10] (helo=zolder.thuis)
        by relay-14.mail.nl.demon.net with esmtp (Exim 3.36 #1)
        id 18DB2k-00041A-00
        for sjoerd@sjoerd-visser.spam.demon.nl; Sat, 16 Nov 2002 22:03:58 +0000

10

sendmail van de ISP van de geadresseerde

De MTA van het bestemmingsdomein ontvangt de post en gaat op zoek naar de geadresseerde. Ook hier vindt weer processing plaats. Als de geadresseerde op dit domein niet te vinden is, behoort de provider van de geadresseerde u daarover berichten.

11

smtp, pop3, imap provider

De internet provider biedt de berichten aan via zijn smtp, pop3 of imap server aan op /var/spool/mail/user.



Op single-user/stand-alone systemen zal de post vervolgens via Stap 15 worden binnengehaald.

Stap 15 is ook een optie op een multi-user systeem, maar het is handiger om alle berichten van alle gebruikers ineens op te halen en via een pop3 en/of imap server aan te bieden. Op zo'n server kan iedere gebruiker zijn berichten zowel op de laptop als de desktop lezen onder ieder besturingssysteem. Ook een ISP biedt vaak de optie om een beperkt aantal berichten op de server te laten staan, maar hier hebt u het zelf in de hand. Zo kunt u er voordat het op een werkstation komt al virusscanners op los laten en bent u zelden gebonden aan een limiet.

Procmail is een voorbeeld van een Local Delivery Agent (LDA).

12

fetchmail door root

De systeembeheerder van de geadresseerde haalt de post op met fetchmail. Fetchmail geeft het door aan sendmail op localhost die het in de wachtrij plaatst (/var/spool/mqueue).

Received: from pop3.demon.nl
        by localhost with POP3 (fetchmail-5.9.0)
        for sjoerd@localhost (single-drop); Sat, 16 Nov 2002 23:07:13 +0100 (CET)

Valkuil: Vergeet nooit localhost (127.0.0.1) aan /etc/hosts.allow toe te voegen. Ander verdwijnt de mail soms in het niets (zie: Permissies op het netwerk).

13

sendmail -q verstuurt de post

Het bericht wordt door root via sendmail -q en de Local Delivery Agent mail in de juiste systeemmailbox (/var/spool/mail/user) opgeslagen. Sendmail kan echter ook van de LDA procmail gebruik maken.

Received: from localhost (localhost [127.0.0.1])
        by zolder.thuis (8.12.3/8.12.3/SuSE Linux 0.6) with ESMTP id gAGM7DgB002779
        for <sjoerd@localhost>; Sat, 16 Nov 2002 23:07:13 +0100

14

pop3, imap ontvanger

Een pop3 of imap server biedt de berichten in /var/spool/mail/user aan.

15

MUA ontvanger

De Mail User Agent (MUA) van de ontvanger plaatst de post in de lokale mailbox (/home/user/mbox) en leest (na een virusscan op localhost) het bericht.


Sendmail en de DNS

Sendmail is afhankelijk van een goed functionerende DNS. Een caching DNS server (bijv. van een router) blijkt niet altijd te voldoen! Om die reden staat de nameserver van mijn provider in in /etc/resolv.conf.

  1. Zonder "nocanonify" zal brievenbus sendmail bij het ontvangen van post in zijn brievenbus al een DNS query naar ieder adres van de bestemming doen. In het schema hieronder moeten de domeinen paprika, komkommer en appel opgelost worden.

  2. Daarnaast zal postbesteller sendmail bij het afleveren van de post over het IP adres van de ontvanger moeten beschikken.

Door een smarthost in te stellen kunt u veelvuldige DNS verzoeken voorkomen. Er vindt dan alleen een DNS query naar de smarthost plaats. Als u niet online bent, moet het IP adres van tussenstation smarthost in /etc/hosts zetten. Anders weigert Sendmail in de post.

In het onderstaande voorbeeld wordt de rol van de smarthost schematisch verduidelijkt. Sjoerd stuurt post naar jan, piet, truus en mac. In het eerste geval zal sendmail op zolder vier queries op drie domeinen doen. Bij gebruik van smarthost (en nocanonify) alleen maar naar de smtp server van mijn ISP (MTU smarthost). Die wikkelt het verder af.

MTA visser.thuis

MTU zolder.thuis

MTU smarthost

MTU ontvangers

MTA werkstations

sjoerd@visser.thuis

DNS query ->

DNS query ->

DNS query ->

DNS query ->


domein paprika

domein paprika

domein komkommer

domein appel

jan@paprika

piet@paprika

truus@komkommer

mac@appel

sjoerd@visser.thuis

DNS query ->

DNS query ->

DNS query ->

DNS query ->

DNS query ->

domein paprika

domein paprika

domein komkommer

domein appel

jan@paprika

piet@paprika

truus@komkommer

mac@appel

Een eigenaardigheid is dat Sendmail de localhost ook thuis wil kunnen brengen in een domein. Vandaar dat distributies als Redhat met de tweede ingang (127.0.02) in /etc/hosts plaatsen.

# /etc/hosts

# IP-Address Full-Qualified-Hostname Short-Hostname

#

127.0.0.1 localhost

127.0.0.2 localhost.localdomain localhost

192.168.1.10 visser.thuis visser

192.168.1.20 zolder.thuis zolder

194.159.73.20 post.demon.nl

149.174.177.156 smtp.compuserve.com

De IP adressen van de mail servers van uw ISP kunnen tijdens een dial-up verbinding (DNS nodig!) opgevraagd worden met het commando host:

sjoerd@visser:~ > host smtp.compuserve.com

smtp.compuserve.com is a nickname for mail.compuserve.com

mail.compuserve.com has address 149.174.206.154

mail.compuserve.com has address 149.174.206.140

mail.compuserve.com has address 149.174.177.156

mail.compuserve.com has address 149.174.206.155

Host mail.compuserve.com geeft inderdaad dezelfde IP adressen aan.

Met sendmail -q wordt het tijdens een dial-up verbinding naar uw ISP verzonden. Die moet het dan verder afhandelen.

Literatuur

> Top <
> Top <
>> Index <<


Deze tekst mag niet worden gewijzigd, vermenigvuldigd of voor commerciële doeleinden gebruikt worden zonder toestemming van de auteur. © Sjoerd Visser (2000).