Linux e-post HOWTO Guylhem Aznar . Svensk översättning Tomas Carlsson v2.1, July 1998. Svensk version Augusti 1998 Detta dokument beskriver konfiguration och underhåll av elektronisk post (e-post) i Linux. Du behöver läsa detta om du planerar att kom­ municera lokalt eller till andra sajter med elektronisk post. Du behöver antagligen *inte* läsa detta dokument om du inte utväxlar elektronisk post med andra användare på ditt system eller med andra sajter. ______________________________________________________________________ Innehållsförteckning 1. Introduktion, copyright och standard disclaimer 1.1 Email och spammning 1.2 Mål 1.3 Nya versioner 1.4 Feedback 1.5 Copyright 1.6 Begränsad garanti 2. Andra källor för information 2.1 USENET 2.2 E-postlistor 2.3 Andra dokument från LDP 2.4 Böcker 3. Krav 3.1 Hårdvara 3.2 Mjukvara 4. Qmail v1.03 4.1 Att få tag på qmail 4.2 Att packa upp källkoden 4.3 Att förbereda kompilering 4.4 Att konfigurera qmail 4.4.1 defaultdomain, me, plusdomain 4.4.2 locals, rcpthosts 4.4.3 virtualdomains 4.5 Att testa qmail 4.6 Att ta bort din andra MTA 4.7 Det var allt ! 5. Smail v3.1 5.1 Att konfigurera smail 5.2 Filen 5.3 Filen 5.4 Filen 5.5 Filen 5.6 Filen 5.7 Katalogen 5.8 Andra bra exempel 5.9 Starta om inetd 5.10 Smail med smtp 6. GAMMALT AVSNITT: Sendmail+IDA 6.1 Installation av källkod 6.2 Filen 6.3 Att definiera en lokal e-postutdelare 6.4 Sendmail+IDA dbm tabeller 6.5 Så vilka poster krävs? 6.6 Sendmail 8.x 6.7 Exempel på 8.7.x 6.8 Sendmail v8 skillnader 6.9 Lokala e-postutdelare 7. POP e-post 7.1 Historia 7.2 Att hämta e-post 7.3 Att skicka e-post 7.4 Att läsa e-post 7.5 Testning 7.6 Användning 8. E-post 8.1 Mutt 8.2 Elm 8.3 Mailx 8.4 Andra användarprogram 9. Tillkännagivanden ______________________________________________________________________ 1. Introduktion, copyright och standard disclaimer 1.1. Email och spammning Först och främst, byt ut alla "at" i e-post till "@". Det är lätt för människor, men inte för program som söker webben för att spamma; därför är det tillräckligt för att skydda generösa bidragsgivare mot att bli spammade! 1.2. Mål Avsikten med detta dokument är att svara på vissa av de frågor och kommentarer som verkar svara mot definitionen "ofta frågade frågor" om e-postmjukvara i Linux generellt och speciellt versionen i distributionerna Debian och RedHat. 1.3. Nya versioner Nya versioner av detta dokument (den engelska versionen) kommer periodvis att postas till comp.os.linux.announce, comp.answers och mail.answers. De kommer även att finnas på de olika anonyma ftp- sajterna som innehåller sådan information, inklusive ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO. Dessutom, bör du oftast hitta detta dokument på Linux WorldWideWeb hemsidan på http://sunsite.unc.edu/mdw/linux.html. 1.4. Feedback Jag är intresserad av all feedback, positiv eller negativ, som har att göra med innehållet i detta dokument via e-post. Kontakta mig definitivt om du hittar fel eller självklara uteslutanden. Jag läser, men svarar inte nödvändigtvis, på all e-post som jag tar emot. Förfrågningar om förbättringar kommer att beaktas och sedan utföras beroende av den dagens kombination av tillgänglig tid, kvaliteten på förfrågningen och den dagens blodtryck :-) Flames kommer i det tysta att dirigeras till /dev/null så ödsla ingen tid. Feedback angående formatet på dokumentet bör skickas till HOWTO koordinatorn: Greg Hankins (gregh at sunsite.unc.edu). 1.5. Copyright Mail-HOWTO är kopieringsrättskyddad (c) 1998 Guylhem Aznar. Distribuerad under LDP copyright licens. Om du har frågor, var vänlig kontakta Greg Hankins, koordinatorn för Linux HOWTOs, på gregh at sunsite.unc.edu. 1.6. Begränsad garanti Självklart, jag avsäger mig allt ansvar för innehållet i detta dokument. Användning av principer, exempel, och/eller annat innehåll i detta dokument sker på egen risk. 2. Andra källor för information 2.1. USENET Det är inget "konstigt" med att konfigurera och köra e-postmjukvara i Linux (längre). Därför vill du nästan säkert *INTE* posta generella frågor om e-post till comp.os.linux.* diskussionsgrupper. Posta inte i comp.os.linux hierarkin om det inte verkligen är linux specifikt, till exempel: "Vilka alternativ kompilerades Debian 1.2 sendmail med?" eller "RedHat 5.0 smail krashar när jag kör det". Låt mig upprepa det. Det finns i stort sett ingen anledning att posta något e-postrelaterat till comp.os.linux hierarkin längre. Det finns existerande diskussionsgrupper i comp.mail.* hierarkin som kan ta hand om *ALLA* dina frågor. OM DU POSTAR I COMP.OS.LINUX.* MED ICKE-LINUX-SPECIFIKA FRÅGOR, SÅ LETAR DU EFTER HJÄLP PÅ FEL STÄLLE. EXPERTERNA PÅ E-POST FINNS PÅ DE PLATSER SOM NÄMNS OVAN OCH KÖR VANLIGTVIS INTE LINUX. ATT POSTA TILL LINUX HIERARKIN MED ICKE-LINUX-SPECIFIKA FRÅGOR SLÖSAR BORT DIN OCH ALLA ANDRAS TID, OCH DET FÖRLÄNGER SVARSTIDEN PÅ DIN FRÅGA. BRA PLATSER är: comp.mail.elm ELM e-post system. comp.mail.mh Rand Message Handling system. comp.mail.mime Multipurpose Internet Mail Extensions. comp.mail.misc Generella diskussioner om datorpost. comp.mail.multi-media Multimedia Mail. comp.mail.mush Mail User's Shell (MUSH). comp.mail.sendmail BSD sendmail agent. comp.mail.smail smail mail agent. comp.mail.uucp Mail i uucp omgivning. 2.2. E-postlistor Det finns många e-postlistor för sendmail, smail och qmail. Du kan hitta adresser i /usr/doc/den_du_har_valt. 2.3. Andra dokument från LDP Det finns gott om utmärkt material i andra Linux HOWTO dokument och från Linux DOC projektet. Speciellt, så kan följande vara bra att titta på: · på din egen dator i /usr/doc/ :-) · Linux Networking Administrators' Guide · Serial Communications HOWTO · Ethernet HOWTO · UUCP HOWTO om du använder UUCP 2.4. Böcker Följande är en lista på böcker som kan vara bra: · "Managing UUCP and USENET" från O'Reilly and Associates är enligt min uppfattning den bästa boken för att lista ut hur programmen och protokollen fungerar som behövs för att vara en USENET sajt. · "Unix Communications" från The Waite Group innehåller en bra beskrivning av alla delarna och ur de passar ihop. · "Sendmail" från O'Reilly and Associates verkar vara den definitiva referensen till sendmail-v8 och sendmail+IDA. Det är ett "måste" för alla som räknar med att få sendmail att fungera utan blod. · "The Internet Complete Reference" från Osborne är en bra referensbok som förklarar de olika tjänsterna som finns tillgängliga på Internet och är en utmärkt källa för information om nyheter, e-post och andra Internet resurser. · "The Linux Networking Administrators' Guide" från Olaf Kirch i Linux Documentation Project finns tillgänglig på nätet och är även publicerad av (åtminstonde) O'Reilly och SSC. Det är en bra "allt-i-ett" för att lära sig allt möjligt om Unixnätverk. 3. Krav 3.1. Hårdvara Det finns inga speciella hårdvarukrav för mail i Linux. Du behöver någon sorts 'transporteringsmjukvara' för att ansluta till andra system, vilket betyder antingen TCP/IP eller UUCP. Detta kan betyda att du behöver ett modem eller ett ethernetkort, beroende på din konfiguration. I de flesta fall så vill man ha det snabbaste modem man har råd med, t.ex V90 57600 bps för närvarande. Generellt så behöver man en 16550 UART på sitt seriekort eller inbyggt i modemet för att hantera hastigheter över 9600 baud. Om du inte vet vad den sista meningen betyder, var vänlig att titta i comp.dcom.modems eller i de olika FAQsen för modem och seriell kommunikation och periodiska inlägg på USENET. 3.2. Mjukvara Okej, nu kommer problemen. Vilken e-postmjukvara skall du välja? För närvarande finns qmail, smail, vmail och sendmail. Vart och ett har sina egna egenskaper, men den bästa kompromissen är qmail för hög säkerhet (även att vmail är säkrare), hög hastighet (även att smail är snabbare för lokal post) och för lätt konfiguration. Du får självklart välja själv vilken mjukvara du vill använda, informationen här skall bara hjälpa dig i ditt val. Sendmail kan vara bra för många sajter med komplicerade alternativ, men jag tycker att dess konfiguration är för svår för nybörjare medans den inte är särskilt säker eller särskilt snabb. Så det finns endast ett riktigt gammalt avsnitt om sendmail i denna HOWTO. Om du vet vad du gör, välj sendmail (och du borde inte läsa denna HOWTO!); annars rekommenderar jag generellt qmail. 4. Qmail v1.03 Säker, snabb och lätt att använda. Detta är den MTA (Mail Transport Agent) som jag föredrar. För närvarande så inkluderas qmail inte i någon distribution av Linux, så vi skall fokusera på att kompilera och installera qmail, eftersom det är det enda som är lite besvärligt. Konfigurationen är ganska okomplicerad. 4.1. Att få tag på qmail Gå till http://www.qmail.org för att ladda ner den senaste versionen. 4.2. Att packa upp källkoden Packa sedan upp den genom att köra: mv qmail.tar.gz /usr/local/src cd /usr/local/src ; tar -zxvf qmail.tar.gz Om du hittar en bz2 version (nytt och bättre kompressionsformat), ersätt bara tar med: bunzip2 qmail.tar.bz2 tar -xvf qmail.tar 4.3. Att förbereda kompilering Gå nu in i qmail katalogen och titta på den förinställda konfigurationen: cd qmail; more conf-* Du bör inte behöva ändra några förinställda värden, men du kan till exempel ange en alternativ katalog för installationen eller bättre kompileringsflaggor. Kör nu: mkdir /var/qmail för att skapa målkatalogen. Om du inte har installerat en Debian distribution så behöver du lägga till qmail användare; qmails höga säkerhet är beroende av detta. Ingen kommer att kunna förstöra hela ditt e-postsystem eller få root- access eftersom qmail är uppdelat i moduler som var och en kör under sitt eget UID. Så kör: # groupadd nofiles # useradd -g nofiles -d /var/qmail/alias alias # useradd -g nofiles -d /var/qmail qmaild # useradd -g nofiles -d /var/qmail qmaill # useradd -g nofiles -d /var/qmail qmailp # groupadd qmail # useradd -g qmail -d /var/qmail qmailq # useradd -g qmail -d /var/qmail qmailr # useradd -g qmail -d /var/qmail qmails eller ändra /etc/passwd och /etc/group för hand så att dessa användare läggs till. Du kan till exempel lägga till: qmail:*:2107: nofiles:*:2108: & alias:*:7790:2108::/var/qmail/alias:/bin/true qmaild:*:7791:2108::/var/qmail:/bin/true qmaill:*:7792:2108::/var/qmail:/bin/true qmailp:*:7793:2108::/var/qmail:/bin/true qmailq:*:7794:2107::/var/qmail:/bin/true qmailr:*:7795:2107::/var/qmail:/bin/true qmails:*:7796:2107::/var/qmail:/bin/true Nu kan du köra make setup check för att testa din konfiguration, sedan: ./config för att konfigurera qmail. Nu måste du installera några alias, eftersom /etc/alias inte används av qmail om du inte kompilerar och installerar något valfritt paket. Här är mina inställningar: File : ".qmail-MAILER-DAEMON" &postmaster File : ".qmail-bin" &root File : ".qmail-daemon" &root File : ".qmail-decode" &root File : ".qmail-dumper" &root File : ".qmail-games" &root File : ".qmail-ingres" &root File : ".qmail-mailer-daemon" &postmaster File : ".qmail-manager" &root File : ".qmail-news" &root File : ".qmail-nobody" &root File : ".qmail-operator" &root File : ".qmail-postmaster" &root File : ".qmail-root" &guylhem File : ".qmail-system" &root File : ".qmail-toor" &root File : ".qmail-uucp" &root File : ".qmail-uucp-default" |preline -dr /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" lm!rmail "($DEFAULT@$HOST)" Du måste skapa var och en av dessa filer i ~alias, och ersätta &guylhem i .qmail-root med ditt eget användarnamn för att få root-e- post. VARNING ALLA UUCP ANVÄNDARE ! LITA INTE PÅ QMAIL FAQ OM DU ANVÄNDER UUCP, ANVÄND MIN .qmail-uucp- default ISTÄLLET! ANNARS KOMMER DU INTE KUNNA SKICKA E-POST VIA DIN UUCP ANSLUTNING! Nu måste du bestämma i vilket format dina användare skall få sin e- post. Här är mitt förslag: · För NFS-monterade hemkataloger, använd MAILDIR format med en patch för lokala e-postläsare (patchar finns på http://www.qmail.org) · Om ingen patch finns tillgänglig, tag MAILFILE format; alla e- postläsare kan läsa en fil som innehåller e-post, användarna behöver bara skapa ett alias (för bash) eller en setenv (för csh) för deras e-postläsare. · Undvik /var/spool/mail/$USER format, för osäkert. För att fixa standardformat, läs alla filer i /var/qmail/boot, kopiera sedan den du tycker bäst om till /var/qmail/rc. home eller proc är säkra val, men jag föredrar home av säkerhetsskäl. 4.4. Att konfigurera qmail I /var/qmail/control, editera : 4.4.1. defaultdomain, me, plusdomain · me är ditt lokala FQDN (fully qualified domain name), till exempel på min maskin är det barberouge.linux.lmm.com · defaultdomain kommer att adderas till alla datornamn som inte innehåller några punkter, inklusive defaulthost, du kan till exempel sätta det till lokalanätverket så att all e-post som sänds till joe@hansdator kommer att kompletteras och skickas till joe@hansdator.lokalanätverket istället. · plusdomain är undantaget; det adderas till alla datornamn som slutar med ett plustecken, inklusive defaulthost (sätts i me) om den slutar med ett plustecken. Följande tre exempel visar hur kraftfullt och lättkonfigurerat qmail är: 4.4.2. locals, rcpthosts Om du vill stödja virtuella domännamn, skriv in ytterligare namn i dessa filer. All e-post som du tar emot för dessa namn kommer att hanteras lokalt. Skillnaden mellan locals och rcpthosts är att den senare ses som ett lokalt alias, vilket är användbart om du får mail från någon fri e- postadress som yahoo.com eller lemel.fr samtidigt som du även skickar e-post till andra användare av dessa icke-lokala tjänster, dvs du vill inte hantera e-post som sänds till någon@yahoo.com lokalt. 4.4.3. virtualdomains Här kan du specificera standardläget för utgående e-post, till exempel: #:alias-uucp om du inte vill skicka utgående e-post med uucp utan med smtp (standard) eller :alias-ucp om du skickar utgående e-post med uucp. 4.5. Att testa qmail Nu är det konfigurerat, prova: sh -cf '/var/qmail/rc &' för att köra igång qmail (det kommer inte att störa din lokala MTA), sedan: echo to: mylogin | /var/qmail/bin/qmail-inject Du bör få detta i det format som du har valt i /var/qmail/boot/. 4.6. Att ta bort din andra MTA Om denna testen var lyckad, så kan du döda din tidigare MTA: killall -STOP daemon_name ; om några barnprocesser är igång så bör du göra killall -CONT deras_namn, wait, killall -STOP igen, och repetera ad nauseam. Om det inte finns några barnprocesser, killall -TERM och sedan killall -CONT. Tag sedan bort den (hur detta görs beror på vilken distribution du har, till exempel 'rpm -e --nodeps' i RedHat, Caldera och Suse, eller 'dpkg -r --force-depends' i Debian). Kör sedan: # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail Sätt sedan in qmail-smtpd i /etc/inetd.conf (allt på en rad): smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd Om du använder en gammal icke-SYSV-init distribution som RedHat, lägg bara till följande i dina boot-skript: sh -cf '/var/qmail/rc &' Vanligtvis i /etc/rc.local men inte helt säkert. För en verkligt SYSV-init kompatibel distribution (RedHat, Caldera, Suse, Debian), lägg till följande skript i /etc/init.d/ DEBIAN version: #!/bin/sh test -x /var/qmail/rc || exit 0 case "$1" in start) echo -n "Starting mta: " sh -cf '/var/qmail/rc &' echo "qmail." ;; stop) echo -n "Stopping mta: " killall qmail-lspawn echo "qmail." ;; restart) echo -n "Restarting mta: " killall -HUP qmail-lspawn killall -ALRM qmail-lspawn echo "qmail." ;; *) echo "Usage: /etc/init.d/qmail {start|stop|restart}" exit 1 esac exit 0 REDHAT version : #!/bin/sh # # qmail This shell script takes care of starting and stopping qmail. # # description: qmail is a Mail Transport Agent, which is the program \ # that moves mail from one machine to another. # processname: qmail # config: /var/qmail/control/ # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network export PATH=$PATH:/var/qmail/bin # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -f /usr/sbin/sendmail ] || exit 0 # See how we were called. case "$1" in start) # Start daemons. echo -n "Starting qmail: " qmail-start '|preline procmail' splogger qmail & touch /var/lock/subsys/qmail echo ;; stop) # Stop daemons. echo -n "Shutting down qmail: " killproc qmail-lspawn echo rm -f /var/lock/subsys/qmail ;; restart) $0 stop $0 start ;; status) status qmail ;; *) echo "Usage: qmail {start|stop|restart|status}" exit 1 esac exit 0 Gör sedan symboliska länkar till varje /etc/rcN.d/, till exempel: ln -sf /etc/init.d/qmail /etc/rc1.d/K19qmail Om den första bokstaven är K, så kommer qmail att dödas i denna runleveln (1 för "single mode" eller 6 för "boot"), men om den första bokstaven är S så kommer qmail att startas i denna runleveln (alla andra runlevels). · Hur man vet om det skall vara ett K eller ett S? Gör vad majoriteten av daemonerna i denna runleveln gör! · Vilken siffra skall jag skriva efter K eller S? Siffran som står vid nätverks-daemonen! RedHat, Caldera och Suse använder /etc/rc.d/ istället för bara /etc/ som Debian, dvs /etc/rc.d/rc1.d/ eller /etc/rc.d/init.d/ till exempel. 4.7. Det var allt ! Du behöver inte starta om (kom ihåg, du kör linux, inte något annat billigt OS !) för att ändringarna skall bli gällande, kör bara: killall inetd init 1 För att gå till 'single user'-läge, sedan: init 2 för att gå tillbaka till din standard-runlevel (som står specificerad i /etc/inittab med texten "initdefault"). Du kan även starta qmail-skriptet för hand, men om du gör som ovan så märker du om skriptet är bra placerat, dvs det körs efter nätverks- skripten men innan eventuella program som beror av e-post (som inn). 5. Smail v3.1 Smail 3.1 verkar vara en de-facto standard när det gäller e-post programvara för uucp-sajter och för vissa smtp-sajter. Det är lätt att konfigurera, det kompilerar från källkoden utan patchar och det är hyfsat säkert. 5.1. Att konfigurera smail Installera binärfilerna för smail från din distribution (jag rekommenderar detta) eller hämta källkoden för smail och kompilera den. Om du kompilerar smail från källkod så måste du ha följande i din os/linux fil så att 'sed' ger dig shell-skript som fungerar ordentligt. CASE_NO_NEWLINES=true När det väl är installerat så brukar konfigurationsfilerna läggas i /etc/smail/, så låt oss börja editera dem. 5.2. Filen config # From smart_path=polux smart_transport=uux # To hostname=barberouge domains=linux.lmm.com visible_name=barberouge.linux.lmm.com uucp_name=barberouge.linux.lmm.com # max_message_size=512k # auth_domains=foo.bar # more_hostnames=barberouge.polux.freenix.fr Okej, först, vem förser dig? Jag förses av "polux" via uucp (dvs uux transport). Du måste naturligtvis ändra denna fil så att den speglar din egen situation. Till exempel så skulle du kunna förses av "bargw.bar.foobar.com" via "smtp", i sådana fall behöver du ingen transports-fil och kan definiera "-transport_file" för att indikera att du inte behöver någon. Du kan även använda 'postmaster_address = dittnamn', dölja nätverkstopologin i utgående adresser (om du är en gateway) genom att använda 'visible_name', specificera vilka alias som också kan användas för e-post som du tar emot, genom att använda 'more_hostnames'. Se smail dokumentationen för mer detaljer eller dokumentationen i /usr/doc/smail/examples/ för att se om något passar din situation. 5.3. Filen directors # aliasinclude - expand ":include:filename" addresses produced by alias files # This entry and the next one are pretty much boiler-plate. Reasons # for making significant changes are few. The sole purpose of these # is to match and expand addresses of the form: # :include:pathname # which may occur in alias files or mailing-list/forward files # (produced by any director with a driver of forwardfile). aliasinclude: driver = aliasinclude, # use this special-case driver nobody; # associate nobody user with addresses # when mild permission violations # are encountered copysecure, # get permissions from alias director copyowners, # get owners from alias director # forwardinclude - expand ":include:filename" addrs produced by forward files forwardinclude: driver = forwardinclude, # use this special-case driver nobody; copysecure, # get perms from forwarding director copyowners, # get owners from forwarding director # aliases - search for alias expansions stored in a database # This is the standard aliases file. It is used for generic things, # like mapping root, postmaster, MAILER-DAEMON and uucp to site # admins, creating some small system alias expansions, and such. In # this site configuration, the aliases file is used mostly for # machine-specific aliasing/forwarding information. Global forwarding # information should be put in the "forward" database. aliases: driver=aliasfile, # general-purpose aliasing director -nobody, # all addresses are associated # with nobody by default, so setting # this is not useful. sender_okay, # don't remove sender from expansions owner=owner-$user; # problems go to an owner address file=/etc/aliases, modemask=002, # should not be globally writable optional, # ignore if file does not exist proto=lsearch, # unsorted ASCII file # forward - search for expansions stored in a forwarding database # This is the subdomain-wide user forwarding database. Entries are # maintained here for current or past users, to forward their mail to # their preferred mail-reading machine. The forward database is # shipped around the TCP/IP network as changes are made, to keep the # network consistent. #forward: # driver = aliasfile, # general-purpose aliasing director # -nobody, # all addresses are associated # # with nobody by default, so setting # # this is not useful. # owner = real-$user; # problems go to an owner address # # file = /etc/forward, # modemask = 002, # proto = dbm, # use dbm(3X) library for access # dotforward - expand .forward files in user home directories # For users that have an entry in the "forward" database, a ".forward" # file is only used if it is on the "home" machine, as identified in # the forward database. If used, it is treated as a list of addresses # to which mail should be delivered, rather than (or in addition to) # the user identified in the local address. dotforward: driver = forwardfile, # general-purpose forwarding director owner = postmaster, nobody, sender_okay; file = ~/.forward, # .forward file in home directories checkowner, # the user can own this file owners = root, # or root can own the file modemask = 002, # it should not be globally writable caution = daemon:root, # don't run things as root or daemon # be extra carefull of remotely accessible home directories unsecure = "~uucp:/tmp:/usr/tmp:/var/tmp" # forwardto - expand a "Forward to " in user mailbox files # This emulates the V6/V7/System-V forwarding mechanism which uses a # line of forward addresses stored at the beginning of user mailbox files # prefixed with the string "Forward to " forwardto: driver = forwardfile, owner = postmaster, nobody, sender_okay; file = /var/spool/mail/${lc:user}, # point at user mailbox files forwardto, # enable "Forward to " function checkowner, # the user can own this file owners = root, # or root can own the file modemask = 0002, # under System V, group mail can write caution = daemon:root # don't run things as root or daemon # user - match users on the local host with delivery to their mailboxes user: driver = user; # driver to match usernames transport = local # local transport goes to mailboxes # real_user - match usernames when prefixed with the string "real-" # This is useful for allowing an address which explicitly delivers to a # user's mailbox file. For example, errors in a .forward file expansion # could be delivered here, or forwarding loops between multiple machines # can be resolved by using a real-username address. Also, users that # wish to use mail as a means of transferring data to a machine that # is not their "home" machine can mail to real-login-name@remote.host. real_user: driver = user; transport = local, prefix = "real-" # for example, match real-root # lists - expand mailing lists stored in a list directory # mailing lists can be created simply by creating a file in the # /etc/smail/lists directory. lists: driver = forwardfile, caution, # flag all addresses with caution nobody, # and then associate the nobody user owner = owner-$user; # system V sites may wish to use # o-$user, as owner-$user may be # too long for a 14-char filename. file = lists/${lc:user} # lists is under $smail_lib_dir # owners - expand mailing lists stored in a list owner directory # mailing lists owner lists can be created simply by creating a file # in the /etc/smail/lists/owner directory. Mailing list owners # are sent locally generated errors dealing with a mailing list of the # same name. To create an owner list for a mailing list, create a # file with the name of the list in /etc/smail/lists/owner. This # will create a list address of owner-listname, as is used by the # "lists" director above. owners: driver = forwardfile, caution, # flag all addresses with caution nobody, # and then associate the nobody user owner = postmaster; # system V sites may wish to use # o-$user, as owner-$user may be # too long for a 14-char filename. prefix = "owner-", file = lists/owner/${lc:user} # lists is under $smail_lib_dir # request - expand mailing lists stored in a list request directory # mailing lists request lists can be created simply by creating a file # in the /etc/smail/lists/request directory. Request addresses # are typically used as a standard address for queries about a mailing # list. For example, requests for additions or deletions to a list # will generally be sent to "list-request", which should be set up to # forward to the appropriate person or persons. request: driver = forwardfile, caution, # flag all addresses with caution nobody, # and then associate the nobody user owner = postmaster; # system V sites may wish to use # o-$user, as owner-$user may be # too long for a 14-char filename. suffix = "-request", file = lists/request/${lc:user} # lists is under $smail_lib_dir Du bör inte behöva ändra något här, bara alternativ för e-post-listor om du tänker köra några med smail. Eller alternativ för vidareskickning (forwarding) om du till exempel vill inaktivera vidareskickning. 5.4. Filen fidopaths .f105.n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s .n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s .z2.fidonet.org f105.n324.z2.fidonet.org!%s .fidonet.org f105.n324.z2.fidonet.org!%s Skapa endast denna filen om du använder ifmail och FIDO. 5.5. Filen routers # forces - force certain paths # This database exists as a means of hardcoding the paths to various # machines or domains. It is for use in creating temporary tweaks to # the other routint databases. To change the database, edit the file # maps/force.path and type "make" in the maps/ subdirectory. forces: driver = pathalias, # router to search paths file method = /etc/smail/maps/table; # transports are in this file file = forcepaths, # file containing force path info proto = lsearch, # use the sorted path file optional, reopen # close when not being used uucp_neighbors: driver=uuname, # use a program which returns neighbors transport=uux; cmd="/usr/bin/uuname -a", # specifically, use the uuname program # domain=uucp # strip ending ".uucp" # smart_host - a partically specified smarthost director # If the config file attribute smart_path is defined as a path from the # local host to a remote host, then hostnames not matched otherwise will # be sent off to the stated remote host. The config file attribute # smart_transport can be used to specify a different transport. # If the smart_path attribute is not defined, this router is ignored. smart_host: driver = smarthost, # special-case driver transport = uux # by default deliver over UUCP # path=phreak # ifmail - to send mails to fidonet and vice versa ifmail: driver=pathalias, transport=ifmail; file=fidopaths, proto=lsearch Du skall endast inkludera ifmail-delen om du använder ifmail för FIDO post. Notera att du även kan byta transportläge från 'uux' (dvs UUCP) till, exempelvis, 'smtp' eller till och med 'hårdkoda vägarna till vissa maskiner eller domäner' i /etc/smail/maps/table. Detta kan vara användbart om du vill att utgående e-post som är ämnat för ditt lokala nätverk skall skickas ut med en gång, eftersom det inte behöver routas till din uucp anslutning med Internet access. 5.6. Filen transports # local - deliver mail to local users # Tell smail to append directly to user mailbox files in the /var/spool/mail # directory. #local: driver = appendfile, # append message to a file # -return_path, # include a Return-Path: field # local, # use local forms for delivery # from, # supply a From_ envelope line # unix_from_hack; # insert > before From in body # # file = /var/spool/mail/${lc:user}, # use this location for Linux # # Note, mail spool must be 1777 # file = ~/mailfile, # use this location for better security # group = mail, # group to own file for System V # mode = 0660, # under System V, group mail can access # suffix = "\n", # append an extra newline # append_as_user, # This allows each user to have a ~/.procmailrc file to control filtering # of mail and saving mail from mail lists in separate mailboxes if they wish. local: +inet, -uucp, driver = pipe, # append message to a file return_path, # include a Return-Path: field local, # use local forms for delivery from, # supply a From_ envelope line unix_from_hack; # insert > before From in body cmd = "/usr/bin/procmail", # use procmail for local delivery parent_env, # environment info from parent addr pipe_as_user, # use user-id associated with address umask = 0022, # umask for child process # -ignore_status, # exit status should be believed # -ignore_write_errors, # retry on broken pipes # pipe - deliver mail to shell commands # This is used implicitly when smail encounters addresses which begin with # a vertical bar character, such as "|/usr/lib/news/recnews talk.bizarre". # The vertical bar is removed from the address before being given to the # transport. #pipe: driver = pipe, # pipe message to another program # return_path, local, from, unix_from_hack; # # cmd = "/bin/sh -c $user", # send address to the Bourne Shell # parent_env, # environment info from parent addr # pipe_as_user, # use user-id associated with address # umask = 0022, # umask for child process # -log_output, # do not log stdout/stderr # ignore_status, # exit status may be bogus, ignore it # ignore_write_errors, # ignore broken pipes # file - deliver mail to files # This is used implicitly when smail encounters addresses which begin with # a slash or squiggle character, such as "/usr/info/list_messages" or # perhaps "~/Mail/inbox". #file: driver = appendfile, # return_path, local, from, unix_from_hack; # # file = $user, # file is taken from address # append_as_user, # use user-id associated with address # expand_user, # expand ~ and $ within address # check_path, # suffix = "\n", # mode = 0644 # uux - deliver to the rmail program on a remote UUCP site # # As many as five recipient addresses will be delivered to the remote # host in one UUCP transaction. uux: driver = pipe, -uucp, inet, # uucp, # use UUCP-style addressing forms from, # supply a From_ envelope line max_addrs = 5, # at most 5 addresses per invocation max_chars = 200; # at most 200 chars of addresses # the -r flag prevents immediate delivery, parentheses around the # $user variable prevent special interpretation by uux. cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)", # cmd="/usr/bin/uux - $host!rmail $(($user)$)", ignore_write_errors, # ignore broken pipes umask = 0022, # pipe_as_sender, # uux_one_addr - deliver mail over UUCP to a remote host that can take # one address at a time. # This is often necessary when delivering to a site running an unmodified # version of 4.1BSD. uux_one_addr: driver = pipe, uucp, # use UUCP-style addressing forms from; # supply a From_ envelope line # the -r flag prevents immediate delivery cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})", umask = 0022, pipe_as_sender queueonly: driver = pipe; # send the message to a pipe cmd = "/usr/lib/sendmail -Q -f $sender -bm $user", # use getmail for local delivery user=root, # execute getmail as "root" group=mail, # execute getmail as "mail" parent_env, # environment info from parent addr -pipe_as_user, # use user-id associated with address umask = 0007, # umask for child process # to deliver the message. The smtp transport is included only if BSD # networking exists. # The uucp attribute can be specified for transfers within the UUCP # zone. The inet attribute must be specified for transfers within the # Internet. # NOTE: This is hardly optimal, a backend should exist which can handle # multiple messages per connection. # ALSO: It may be necessary to restrict max_addrs to 100, as this is the # lower limit SMTP requires an implementation to handle for one # message. smtp: driver=tcpsmtp, inet, # if UUCP_ZONE is not defined # uucp, # if UUCP_ZONE is defined -max_addrs, -max_chars; # no limit on number of addresses short_timeout=5m, # timeout for short operations long_timeout=2h, # timeout for longer SMTP operations service=smtp, # connect to this service port # For internet use: uncomment the below 4 lines use_bind, # resolve MX and multiple A records defnames, # use standard domain searching defer_no_connect, # try again if the nameserver is down local_mx_okay, # fail an MX to the local host ifmail: from,received,max_addrs=5,max_chars=200, driver=pipe; pipe_as_sender, cmd="/usr/local/bin/ifmail -x9 -r$host $((${strip:user})$)" Du skall endast inkludera ifmail-delen om du använder ifmail för FIDO post. Förutom det skall du inte behöva ändra någonting i denna filen, vilken definierar transport-agenter (typ uux, smtp ...) som du kan använda som parametrar i andra konfigurationsfiler. Notera att jag har kommenterat bort vissa delar, som 'pipes' eller 'file', för att öka säkerheten. 5.7. Katalogen maps/ Den innehåller filerna map och table: Först filen map #N foo.bar foo2.bar2 #S AT 486/RedHat Linux 1.2.13 #O organization #C contact #E administration (email) #T phone #P address #R #U hosts connected via uucp #W created/edited by # hname polux hname linux.eu.org hname = polux hname = polux.linux.eu.org Återigen så skall du ändra denna fil så att den speglar din situation (Jag förses av polux.linux.eu.org). Nu filen table * uux Du kan definiera olika transportsätt till olika vägar, till exempel 'smtp' för maskinerna i ditt lokala nätverk, 'uux' (dvs uucp) för resten av världen eller vice-versa (Jag använder uucp för all utgående e-post, därför har jag '*'). 5.8. Andra bra exempel De förra filerna är de jag för närvarande använder för min sajt, du bör inte stöta på några problem med att använda dem som grund för dina egna filer. Följande filer har jag med för att visa andra bra exempel på hur man kan konfigurera smail på ett annat sätt. #ident "@(#) transports,v 1.2 1990/10/24 05:20:46 tron Exp" # See smail(5) for a complete description of the contents of this file. # local - deliver mail to local users # # Tell smail to append directly to user mailbox files in the /usr/mail # directory. local: driver = appendfile, # append message to a file return_path, # include a Return-Path: field local, # use local forms for delivery from, # supply a From_ envelope line unix_from_hack; # insert > before From in body file = /usr/mail/${lc:user}, # use this location for System V group = mail, # group to own file for System V mode = 0660, # under System V, group mail can access suffix = "\n", # append an extra newline append_as_user, # pipe - deliver mail to shell commands # # This is used implicitly when smail encounters addresses which begin with # a vertical bar character, such as "|/usr/lib/news/recnews talk.bizarre". # The vertical bar is removed from the address before being given to the # transport. pipe: driver = pipe, # pipe message to another program return_path, local, from, unix_from_hack; cmd = "/bin/sh -c $user", # send address to the Bourne Shell parent_env, # environment info from parent addr pipe_as_user, # use user-id associated with address umask = 0022, # umask for child process -log_output, # do not log stdout/stderr ignore_status, # exit status may be bogus, ignore it ignore_write_errors, # ignore broken pipes # file - deliver mail to files # # This is used implicitly when smail encounters addresses which begin with a # slash or squiggle character, such as "/usr/info/list_messages" or perhaps # "~/Mail/inbox". file: driver = appendfile, return_path, local, from, unix_from_hack; file = $user, # file is taken from address append_as_user, # use user-id associated with address expand_user, # expand ~ and $ within address suffix = "\n", mode = 0644 # uux - deliver to the rmail program on a remote UUCP site # # As many as five recipient addresses will be delivered to the remote host in # one UUCP transaction. uux: driver = pipe, uucp, # use UUCP-style addressing forms from, # supply a From_ envelope line max_addrs = 5, # at most 5 addresses per invocation max_chars = 200; # at most 200 chars of addresses # the -r flag prevents immediate delivery, parentheses around the # $user variable prevent special interpretation by uux. cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)", umask = 0022, pipe_as_sender # uux_one_addr - deliver mail over UUCP to a remote host that can take one # address at a time. # # This is often necessary when delivering to a site running an unmodified # version of 4.1BSD. uux_one_addr: driver = pipe, uucp, # use UUCP-style addressing forms from; # supply a From_ envelope line # the -r flag prevents immediate delivery cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})", umask = 0022, pipe_as_sender # demand - deliver to a remote rmail program, polling on demand demand: driver = pipe, uucp, from, max_addrs = 5, max_chars = 200; # with no -r flag, try to contact remote site immediately cmd = "/usr/bin/uux - -g$grade $host!rmail $(($user)$)", umask = 0022, pipe_as_sender # uusmtp - deliver to the rsmtp program on a remote UUCP site # # Deliver using a simple Batched SMTP protocol to the remote machine. # This allows much more arbitrary addresses to be used. It also # removes the limit on recipient addresses per invocation of uux. uusmtp: driver = pipe, bsmtp, # send batched SMTP commands -max_addrs, # there is no limit on the number or -max_chars; # total size of recipient addresses. # supply -r to prevent immedate delivery, the recipient addresses # are stored in the data sent to the standard input of rsmtp. cmd = "/usr/bin/uux - -r -g$grade $host!rsmtp", umask = 0022, pipe_as_sender # demand_uusmtp - deliver to a remote rsmtp program, polling on demand demand_uusmtp: driver = pipe, bsmtp, -max_addrs, -max_chars; # with no -r flag, try to contact remote site immediately cmd = "/usr/bin/uux - -g$grade $host!rsmtp", umask = 0022, pipe_as_sender # smtp - deliver using SMTP over TCP/IP # # Connect to a remote host using TCP/IP and initiate an SMTP conversation to # deliver the message. The smtp transport is included only if BSD networking # exists. # NOTE: It may be necessary to restrict max_addrs to 100, as this is the # lower limit SMTP requires an implementation to handle for one # message. smtp: driver = smtp, -max_addrs, -max_chars #ident "@(#) table,v 1.2 1990/10/24 05:20:31 tron Exp" # This file names the transports that are to be used in delivering # to specific hosts from bargw. #host transport #-------- --------- curdsgw demand_uusmtp # deliver using batched SMTP oldbsd uux_one_addr # 4.1BSD sites cannot take more than one addr sun demand # call sun when their is mail to send * uux # for all others, poll at intervals 5.9. Starta om inetd För att köra smail som en smtp daemon, lägg till en av följande rader i /etc/inetd.conf: smtp stream tcp nowait root /usr/bin/smtpd smtpd eller: smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd Utgående e-post skickas automatiskt, om man använder elm. 5.10. Smail med smtp Vanligtvis så använder internetleverantörer smtp, därför skall du inte ha några problem med att skicka din e-post. Om din Internet-koppling är nere när du skickar e-post, så sparas den i /var/spool/smail/input/. När kopplingen kommer upp så körs runq som gör att e-posten skickas iväg. Men problemet är att ta emot e-post eftersom din leverantör har många kunder att se efter, inte bara dig. Vanligtvis kan du hämta din e-post via POP-protokollet, se POP- avsnittet nedan. 6. GAMMALT AVSNITT: Sendmail+IDA För stora sajter kan det vara värt att välja sendmail på grund av det är "otroligt lättanvänt" (väldigt relativ känsla när man känner till qmail) men du måste avgöra om du vill ha sendmail+IDA eller sendmail 8.x: · Om du använder en gammal kärna (1.0): sendmail+IDA · Om du använder en inte så gammal kärna (1.2): sendmail+IDA och modifiering av källkod · Nyare kärna (2.0): sendmail 8.x Kom ihåg: linuxnybörjare eller personer som vill ha säkerhet och/eller lätt konfiguration bör istället använda smail eller qmail, vilka är lättare att använda och säkrare. 6.1. Installation av källkod Om din distribution inte innehåller ett installeringsfärdigt paket med sendmail (.rpm för RedHat, Caldera och Suse, .deb för Debian) så ladda hem källkoden och kör: · cd / ; tar -zxvf sendmail5.67b+IDA1.5.tgz · byt till katalogen /usr/local/lib/mail/CF och kopiera exempelfilen local.m4 till ditt_datornamn.m4. Editera denna fil och byt ut hostname, aliases och smarthost mot de som är korrekta för din sajt. Standardfilen är för en endast-uucp sajt som har domäniserade huvuden och som 'pratar' med en smart värd. Kör sedan make ditt_datornamn.cf och flytta resultatet till /etc/sendmail.cf · Om du har en endast-uucp sajt så behöver du inte skapa någon av de tabeller som nämns i filen README.linux. Du kommer att behöva ändra lite grann i filerna så att Makefile fungerar. Ändra bara i .m4 filen, kör make sendmail.cf och börja testa det. · Om du har en endast-uucp sajt och du 'pratar' med sajter utöver din smarthost, så måste du lägga till uucpxtable-poster för var och en av dem (annars kommer e-post till dem också att gå via smarthost) och köra dbm mot den ändrade uucpxtable. · Om du kör Rich Brauns orginaldistribution av 5.67a, och om du ändrar din .cf-fil så måste du frysa konfigurationen med /usr/lib/sendmail -bz för att ändringarna skall ha någon effekt. Du bör också updatera din version till åtminstonde 5.67b eftersom det finns ett elakt säkerhetshål i 5.67a och tidigare. En annan bra sak är att, om du har mail.debug satt och du kör syslogd, så kommer dina inkommande och utgående e-postmeddelanden att loggas. Se filen /etc/syslog.conf för mer information. Källkoden för sendmail+IDA finns på ftp://vixen.cso.uiuc.edu. Det krävs inga patchar om du kör en kärna som 1.00. Om du kör en kärna >1.1.50, så kommer du att få skoj med att ta bort de flesta Linux-specifika patchar som nu finns i vanilla källkoden. (Jag *sade* ju att sendmail+IDA bara var för gamla kärnor :-) Det är extremt självklart var detta behövs: kör bara make och när det blir fel, gå till den raden i källkoden och kommentera bort den Linux- specifika koden som finns där. Om du skall köra sendmail+IDA så rekommenderar jag starkt att du tar versionen sendmail5.67b+IDA1.5 eftersom alla nödvändiga Linux- specifika patchar nu finns i vanilla källkoden och flera säkerhetsläckor som FANNS i de gamla versionerna har täppts till. Nu är linux kärnan på 2.0 och du bör välja sendmail 8.x istället för sendmail+IDA. 6.2. Filen sendmail.m4 Sendmail+IDA kräver att du sätter upp en sendmail.m4 fil istället för att ändra direkt i filen sendmail.cf. Det fina med detta är att det är enkelt att sätta upp konfigurationer som är extremt svåra (om inte totalt omöjliga för de flesta) att sätta upp korrekt i smail eller traditionell sendmail. En sendmail.m4 fil som motsvarar ovanstående exempel med smail ser ut som följer: dnl #------------------ SAMPLE SENDMAIL.M4 FILE ------------------ dnl # dnl # (the string 'dnl' is the m4 equivalent of commenting out a line) dnl # dnl # you generally don't want to override LIBDIR from the compiled in paths dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go define(LOCAL_MAILER_DEF, mailers.linux)dnl # mailer for local delivery define(POSTMASTERBOUNCE)dnl # postmaster gets bounces define(PSEUDODOMAINS, BITNET UUCP)dnl # don't try DNS on these dnl # dnl #------------------------------------------------------------- dnl # dnl # names we're known by define(PSEUDONYMS, myhostname.subdomain.domain myhostname.UUCP) dnl # dnl # our primary name define(HOSTNAME, myhostname.subdomain.domain) dnl # dnl # our uucp name define(UUCPNAME, myhostname)dnl dnl # dnl #------------------------------------------------------------- dnl # define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors define(BANGIMPLIESUUCP)dnl # make certain that uucp define(BANGONLYUUCP)dnl # mail is treated correctly define(RELAY_HOST, my_uucp_neighbor)dnl # our smart relay host define(RELAY_MAILER, UUCP-A)dnl # we reach moria via uucp dnl # dnl #-------------------------------------------------------------------- dnl # dnl # the various dbm lookup tables dnl # define(ALIASES, LIBDIR/aliases)dnl # system aliases define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainize hosts define(PATHTABLE, LIBDIR/pathtable)dnl # paths database define(GENERICFROM, LIBDIR/generics)dnl # generic from addresses define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers per host or domain define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # paths to hosts we feed define(UUCPRELAYS, LIBDIR/uucprelays)dnl # short-circuit paths dnl # dnl #-------------------------------------------------------------------- dnl # dnl # include the 'real' code that makes it all work dnl # (provided with the source code) dnl # include(Sendmail.mc)dnl # REQUIRED ENTRY !!! dnl # dnl #------------ END OF SAMPLE SENDMAIL.M4 FILE ------- 6.3. Att definiera en lokal e-postutdelare Till skillnad från de flesta Unixdistributioner, så har inte Linux en lokal e-postutdelare som standard. Men deliver eller procmail är vanligtvis installerat, så ingen komplexitet kommer att läggas till denna redan komlexa konfiguration. Jag rekommenderar att använda de vanligt förekommande deliver eller procmail programmen, som kan vara valbara paket i en Linuxdistribution. För att göra detta så måste du definiera en LOCAL_MAILER_DEF i filen sendmail.m4 som pekar på en fil som ser ut som följer: # -- /usr/local/lib/mail/mailers.linux -- # (local mailers for use on Linux ) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u Det finns även inbyggt standard för deliver i filen Sendmail.mc som inkluderas i filen sendmail.cf. För att använda det så skall du inte använda filen mailers.linux utan istället definiera följande i din sendmail.m4: dnl --- (in sendmail.m4) --- define(LOCAL_MAILER_DEF, DELIVER)dnl # mailer for local delivery Tyvärr så förutsätter Sendmail.mc att deliver är installerat i /bin, vilket inte är fallet med Slackware 1.1.1 (som installerar det i /usr/bin). I så fall måste du antingen göra en symbolisk länk eller kompilera om deliver från källkoden så att det hamnar i /bin. Notera att procmail generellt är bättre än deliver, till exempel för filtrering av e-post. 6.4. Sendmail+IDA dbm tabeller Att sätta upp speciellt uppträdande för sajter eller domäner görs genom ett antal dbm tabeller istället för att ändra direkt i filen sendmail.cf. Se Julinumret 1994 av Linux Journal (om du fortfarande kan hitta det :-), dokumentationen i källkoden eller i sendmail kapitlet i Networking Administration Guide för mer detaljer. · mailertable - definierar speciellt uppträdande för andra datorer eller domäner. · uucpxtable - tvingar UUCP utdelning av e-post till datorer som är i DNS format. · pathtable - definierar UUCP 'bang-paths' till andra datorer eller domäner. · uucprelays - kortsluter 'pathalias' vägen till välkända datorer. · genericfrom - konverterar interna adresser till generella som kan ses från utsidan. · xaliases - konverterar generella adresser till/från giltiga interna adresser. · decnetxtable - konverterar RFC-822 adresser till DECnet adresser. 6.5. Så vilka poster krävs? När man inte använder någon av de valbara dbm tabellerna så skickar sendmail e-post via RELAY_HOST och RELAY_MAILER som är definierade i filen sendmail.m4 som används för att generera sendmail.cf. Det är lätt att gå förbi det genom poster i domaintable eller uucpxtable. En generell sajt som finns på Internet och förstår DNS, eller en som är endast-uucp och vidarebefodrar all e-post via UUCP genom en smart RELAY_HOST, behöver antagligen inte specificera några tabellposter alls. I stort sett alla system bör sätta makrona DEFAULT_HOST och PSEUDONYMS, vilka definierar det kanoniska namnet på sajten och alias som den är känd som. Om allt du har är en vidarebefodringsdator och vidarebefodringsutdelare så behöver du inte sätta dessa standardvärden eftersom det fungerar automagiskt. UUCP-datorer behöver antagligen också sätta UUCPNAME till dess officiella uucp-namn. De behöver också sätta RELAY_MAILER och RELAY_HOST vilket sätter på 'smarthost' routing genom en vidarebefodrande e-post utdelare. Transportprotokollet som skall användas definieras i RELAY_MAILER och skall vanligtvis vara UUCP-A för UUCP-sajter. Om din sajt är endast- smtp och förstår DNS så skall du ändra RELAY_MAILER. Om du har en SLIP-sajt så kan du göra på det enkla sättet och bara vidarebefodra all utgående e-post till din leverantör som sedan kan hantera den. För att göra så så skall du definiera ISOLATED_DOMAINS och VALIDATION_DOMAINS till din domän. Du skall även definiera RELAY_HOST till att vara din leverantör och RELAY_MAILER till att vara TCP. Självklart skall du fråga om lov innan du ställer in ett annat system till att vara din RELAY_HOST. 6.6. Sendmail 8.x Sendmail 8.7.x från Berkeley var den senaste stora revisionen efter sendmail5. Den hade underbart inbyggt stöd för linux: bara make linux och allt var klart. Du klarar dig antagligen bäst genom att ta en av de olika binärdistributionerna från något av Linuxarkiven istället för att kämpa med saker som Berkeley dbm själv. Det finns en bra distribution av sendmail 8.6.12 från Jason Haar (j.haar at lazerjem.demon.co.uk) på sunsite.unc.edu i /pub/Linux/system/Mail/delivery/sendmail-8.6.12-bin.tgz som innehåller dokumentationen från källkoden och en väldigt trevlig snabbeskrivning av hur man kör sendmail v8 för vanliga konfigurationer. Med sendmail v8 vill man konfigurera så lite som möjligt för att få jobbet gjort. Följande är ett exempel som iallafall skall få dig på rätt väg. 6.7. Exempel på 8.7.x mc -fil Liksom sendmail+IDA så använder sendmail v8 m4 till att processa en konfigurationsfil till en sendmail.cf som används av sendmail. Följande är den mc-fil som jag använder för närvarande på min sajt (ppp till Internet för utgående e-post, uucp för inkommande e-post). dnl divert(-1) #--------------------------------------------------------------------- # # this is the .mc file for a linux host that's set up as follows: # # - connected to Internet for outbound mail (ppp here) # - connected via UUCP for incoming mail # - domainized headers # - no local mailer (use 'deliver' instead) # - no DNS running so don't canonicalize outgoing via DNS # - all non-local outbound mail goes to the RELAY_HOST over smtp # (we run ppp and let our service provider do the work) # # vds 3/31/95 # #--------------------------------------------------------------------- include(`../m4/cf.m4') VERSIONID(`linux nodns relays to slip service provider smarthost')dnl Cwmyhostname.myprimary.domain myhostname.UUCP localhost OSTYPE(linux) FEATURE(nodns)dnl FEATURE(always_add_domain)dnl FEATURE(redirect) FEATURE(nocanonify) dnl MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp)dnl define(`RELAY_HOST', smtp:my.relay.host.domain) define(`SMART_HOST', smtp:my.relay.host.domain) define(`UUCP_RELAY', smtp:my.relay.host.domain) define(`LOCAL_MAILER_PATH', `/bin/deliver') define(`LOCAL_MAILER_ARGS', `deliver $u') 6.8. Sendmail v8 skillnader Det finns några skillnader. Hittills har jag hittat följande: Istället för runq så skall man köra sendmail -q för att köra e- postkön! 6.9. Lokala e-postutdelare Till skillnad från de flesta operativsystem så hade Linux inte 'inbyggd' e-post. Du var tvungen att ha ett program som kunde dela ut den lokala e-posten, till exempel lmail, procmail eller deliver. Men, alla nyare distributioner inkluderar en lokal utdelare nu. Dokumentation för hur man använder de olika finns i binärversionen av sendmail5.67b+IDA1.5 (på sunsite) som nämns ovan. 7. POP e-post Detta avsnitt handlar också om IMAP som inte är helt olikt POP. 7.1. Historia På ett nätverk med arbetsstationer har e-post alltid varit ett problem: · Antingen använder du användar-id@dator.foo.com med problem när 'dator' är nere, visar din nätverkstopologi för personer på utsidan, har olika adresser för samma person som byter till en annan dator,... · Eller så använder du en e-post hubb, mailhost.foo.com med regler för att omskrivning, så att alla användare ser ut att e-posta från samma adress även att de finns vid olika datorer. Men i det fallet, hur kan en användare läsa sin e-post? Använda en rsh med elm? :-) Det skulle överbelasta våran e-post hubb! En metod var vidarebefodring med UUCP, smtp, osv. men det är för komplicerat. Sedan kom POP/IMAP, båda med säkerhetsproblem i början (som nu är fixade genom att använda ssh i nya versioner). E-postprogram måste ibland ställas in lokalt (som qmail, smail eller vmail om du tex använder elm, men mozilla undviker det !) men att hämta och skicka e- post är lättare. 7.2. Att hämta e-post Här är POPs största nackdel: lösenordet skickas som klartext över nätverket och vissa e-postläsare vet inte om POP. Du måste välja en e- postläsare som vet om POP, som Pine, Emacs, Netscape, Mutt, .... Lösenordsproblemet kan lösas genom att skapa en krypterad 'kanal' som har POP, eller att använda APOP eller RPOP utökningar. E- postläsarproblemet kan lösas antingen genom att byta läsare (mozilla klarar POP, så även Emacs och Pine) eller genom att använda en POP 'e- post hämtare' med ett lokalt e-post program. Här är några POP-program som är värda ett försök: · gwpop (a Good Way to POP) är väldigt säkert eftersom det skapar en krypterad kanal och placerar e-posten direkt i 'spoolen'. Men det beror av Perl. · popclient, lätt att använda: Till exempel om ditt användarnamn är 'john' och ditt lösenord är 'GanskaHemligt' så skulle du köra: $ popclient -3 -v mail.acme.net -u john -p "GanskaHemligt" -k -o JOHN-INET-MAIL · fetchmail, vilket stöds aktivt och är otroligt lätt att använda. Det konfigureras i ~/.fetchmailrc och sedan behöver du bara köra fetchmail när du vill hämta din e-post. Här är min ~/.fetchmailrc poll mail.server protocol pop3: forcecr password PrettySecret; Notera att 'forcecr' behövs för att använda fetchmail med qmail som strikt följer RFCs. Här kommer även översättarens ~/.fetchmailrc defaults proto pop3 no dns keep mda "/usr/sbin/sendmail -oem %s" # Hämta från pop-server 1 poll popserver.universitetet user användar-id is tomas password ganskaHemligt # Hämta från pop-server 2 poll popserver.isp user användar-id2 is tomas password mycketHemligt fetchall no keep Detta visar hur man kan hämta e-post från flera POP servrar på en gång och dela ut den till rätt lokal användare ('user xx is yy' betyder att man hämtar xx's e-post från pop-servern och delar ut den till yy på den lokala maskinen). Det som står under 'defaults' gäller för alla 'poll'-rader. 7.3. Att skicka e-post För detta behöver du e-postmjukvara som förstår smtp, tex qmail, smail, vmail eller mozilla (denna kan allting: e-postläsare, POP, smtp!) Gå till en av de tidigare avsnitten för att installera och konfigurera den du tycker bäst om. Sedan kommer du att komma till 'Testning', testa att skicka några e-postmeddelanden till ett lokalt konto på e- post hubben. 7.4. Att läsa e-post Om ditt program inte fixar allting själv så kan du installera elm, pgp, mush, pine, ... det finns många bra fritt tillgängliga program för Linux. 7.5. Testning För att kolla att din e-postserver har POP, försök med: $ telnet mailhost 110 Om det fungerar så skall du få något unefär som: "OK Pop server (...) starting". Skriv quit. För att installera en ssh-krypterad kanal, testa först din e- postserver med: $ ssh mailhost date Om du får tillbaka ett datum, så skall allt vara okej. Notera att ssh kommer inte att fråga efter ett lösenord, därför måste du skapa en fil .shosts på e-postservern som innehåller klientens namn. För att desta omdirigering av ssh port (som gwpop använder), skriv: $ ssh -n -f -L 12314:localhost:110 mailhost sleep 30 sedan $ telnet localhost 12314 Då skall du förhoppningsvis se e-post hubbens POP meddelande. Om du inte använder ssh, glöm inte att kommentera bort $ssh i alla gwpop skript. För att se om procmail kör, försök med procmail -v. 7.6. Användning Nu kan du modifiera gwpops Perl-skript för att kolla att allt är okej, kör sedan qwpop: $ gwpop -v your-username POP password on mailhost: yoursecretpasword Om meddelanden från gwpop är normala så skall e-posten från e-post hubben laddas ner till din lokala maskin och sparas där du specificerade.(testa med några e-postmeddelanden!) Du kan också köra gwpop som daemon: $ gwpop -d $HOME/tmp your-username Alla meddelanden från gwpop skickas då till syslog och gwpop kommer alltid att vara igång; en 'HUP' signal gör att qwpop hämtar din e- post. Du kan hämta POP-mjukvaran på: ftp://ftp.pasteur.fr/pub/Network/gwpop ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail http://www.cs.hut.fi/ssh/ 8. E-post användarprogram Detta avsnitt innehåller information relaterad till 'användarprogram', vilket avser mjukvaran som användaren ser och använder. Denna mjukvara litar till transportprogrammen som diskuterats ovan. Flera andra användarprogram finns nu tillgängliga (pine, mush ...) men jag har inte hittat någon linux-specifik information att berätta om dem. Säg till om jag missar något! 8.1. Mutt Det skall inte vara några problem att kompilera, installera och köra mutt. Qmail användare använder antingen en qmail-patch eller kör med parametern -f för att läsa sin lokala e-postkatalog. Om mutt besvärar med ett 'unknown terminal error' efter en uppgradering av distributionen så bara kompilera om det. 8.2. Elm Elm kan kompileras, installeras och köras utan problem i Linux. För mer information, titta i elm's källkod och installations instruktioner. Elm och filter måste ha "mode 2755" (gruppen mail) och /var/spool/mail/ "mode 775" och grupp mail. Användare av qmail bör hämta en patch för att kunna använda bra egenskaper hos qmail, eller köra elm med flaggan -f för att peka till deras lokala e-postkatalog. Om du använder en binärdistribution, så måste du skapa en fil /usr/local/lib/elm/elm.rc för att inte använda de inkompilerade namnen på dator och domän: · byt ut subdomain.domain med ditt domännamn · byt ut myhostname med ditt datornamn (utan domän) #---------- /usr/local/lib/elm/elm.rc ------------------ # # this is the unqualified hostname hostname = myhostname # # this is the local domain hostdomain = subdomain.domain # # this is the fully qualified hostname hostfullname = myhostname.subdomain.domain # #-------------------------------------------------------- En sak som du skall veta är att om du har kompilerat in MIME-stöd i elm så måste metamail vara installerat och finnas i din sökväg, annars kommer elm inte att kunna läsa e-post i MIME format som du tar emot. Metamail finns på thumper.bellcore.com och såklart via archie. I kategorin "för cool för att vara sann", finns det en distribution av elm-2.4.24 som har stöd för PGP. För att testa det, hämta filen ftp://ftp.viewlogic.com/pub/elm-2.4pl24pgp3.tar.gz. Du konfigurerar och kompilerar det på samma sätt som du gör med normala elm, vilket betyder att du antagligen behöver installera patcharna som nämns ovan. För vad det är värt, jag kör det här och jag gillar det mycket. Självklart måste det finnas senare versioner att tillgå, inklusive elm-ME+. Detta är inget Linux-specifikt, det antas (felaktigt) vara en irriterande bugg i elm. Vi har hört att elm ibland falerar med ett meddelande att det inte kan göra en malloc() på ett stort antal bytes. Den identifierade sättet att undvika detta är att ta bort de post- processade globala e-postaliasen (aliases.dir och aliases.pag). DETTA ÄR INTE EN BUGG I ELM, det är ett fel i konfigurationen av elm som den som kompilerat elm har gjort. Elm har ett utökat och icke-kompatibelt format för alias. Du måste se till att sökvägen som elm använder för alias inte är samma som den som sendmail/smail använder. Av döma av volymen av rapporter med detta problem, så är det självklart att åtminstonde en stor distribution 'på gatan' har varit felkonfigurerad. (från scot at catzen.gun.de (Scot W. Stevenson) ) Nuvarande version av metamail kräver csh för vissa av dess skript. Att inte ha csh (eller tcsh) skapar väldigt intressanta fel... 8.3. Mailx Om du inte har ett lokalt mailx program, spara dig mödan. Hämta bara mailx paketet från Slackware 2.1.0 eller senare, vilka har en bra implemetering av mailx5.5. Om du gillar att bygga från källkod så kompilerar mailx v5.5 i Linux utan patchar om du har pmake installerat. Om någon fortfarande använder det, så rekommenderar jag starkt att ta bort de gamla edmail-grejorna från SLS1.00 och ersätta dem med mailx. 8.4. Andra användarprogram Det är även känt att följande program fungerar i Linux. Använd archie för detaljer om hur du hittar dem... · mutt - på långa vägar bättre än elm, väldigt enkel att använda · pine - från University of Washington · metamail - har MIME-stöd · mh - ytterligare ett sätt att hantera e-post. · deliver - spara/processa e-post baserat på regler. · procmail - spara/processa e-post baserat på regler. · majordomo - hanterar e-postlistor · mserv - erbjuder filer-per-e-post 9. Tillkännagivanden Följande personer har hjälpt till med att sätta ihop den information och erfarenhet som hjälpte till att göra detta dokument möjligt: Steve Robbins, Ian Kluft, Rich Braun, Ian Jackson, Syd Weinstein, Ralf Sauther, Martin White, Matt Welsh, Ralph Sims, Phil Hughes, Scot Stevenson, Neil Parker, Stephane Bortzmayer och särskilt mycket tack till Vince Skahan för hans enorma bidrag. Om jag glömde någon, ursäkta mig: skicka ett e-postmeddelande!