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 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 (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
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 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.
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.
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.
Wat kunt u bereiken met een mailserver op het LAN? En wat hebt u daar voor nodig?
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.
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
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. |
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 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.
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.
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.
De sendmail organisatie onderhoudt sendmail.
The Postfix Home Page : Wietse Venema's sendmail alternatief.
The Linux Mail User HOWTO (aanrader)
Het CERT® Coordination Center bespreekt veel veiligheidsaspecten van Sendmail.
De open source page http://www.opensource.org/
System Administration : Sendmail en Fetchmail: Een lokale emailserver: een in het Nederlands vertaald artikel van John Perr.
Bryan Costales en Eric Allman schreven het boek: Sendmail (niet geraadpleegd).
Zie ook: http://library.cs.tuiasi.ro/networking/networking/sendmail waar in de root veel meer IT informatie is te verzamelen...
Mail relay testing (is uw sendmail gemakkelijke te misbruiken)
Stichwörter.SENDMAIL (SuSE Support DB, Duits)
Deze tekst mag niet worden gewijzigd, vermenigvuldigd of voor commerciële doeleinden gebruikt worden zonder toestemming van de auteur. © Sjoerd Visser (2000).