Linux e-post HOWTO

Guylhem  Aznar  <guylhem@oeil.qc.ca>.  Svensk  översättning  Tomas  Carlsson

<md5tc@mdstud.chalmers.se> 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 kommunicera 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åll

1 Introduktion, copyright och standard disclaimer 3 1.1 Email och spammning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Mål . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Nya versioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.6 Begränsad garanti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Andra källor för information 4 2.1 USENET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 E-postlistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Andra dokument från LDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Böcker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Krav 5 3.1 Hårdvara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 Mjukvara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4 Qmail v1.03 6 4.1 Att få tag på qmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.2 Att packa upp källkoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.3 Att förbereda kompilering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.4 Att konfigurera qmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.4.1 defaultdomain, me, plusdomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.4.2 locals, rcpthosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.4.3 virtualdomains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.5 Att testa qmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.6 Att ta bort din andra MTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4.7 Det var allt ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5 Smail v3.1 12 5.1 Att konfigurera smail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.2 Filen config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.3 Filen directors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.4 Filen fidopaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.5 Filen routers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.6 Filen transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.7 Katalogen maps/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.8 Andra bra exempel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.9 Starta om inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.10 Smail med smtp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6 GAMMALT AVSNITT: Sendmail+IDA 23 6.1 Installation av källkod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.2 Filen sendmail.m4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6.3 Att definiera en lokal e-postutdelare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.4 Sendmail+IDA dbm tabeller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.5 Så vilka poster krävs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.6 Sendmail 8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.7 Exempel på 8.7.x mc-fil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.8 Sendmail v8 skillnader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.9 Lokala e-postutdelare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

7 POP e-post 28 7.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.2 Att hämta e-post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.3 Att skicka e-post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.4 Att läsa e-post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.5 Testning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7.6 Användning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

8 E-post användarprogram 31 8.1 Mutt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 8.2 Elm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 8.3 Mailx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 8.4 Andra användarprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 9 Tillkännagivanden 33

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

4. Qmail v1.03 7

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

4. Qmail v1.03 10

Om du använder en gammal icke-SYSV-init distribution som RedHat, lägg bara till följande i dina bootskript:

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

5. Smail v3.1 13

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!