<!-- <date>$Id: mail-howto,v 2.0 1997/12/3 18:26:59 Guylhem Exp $            -->
<!-- to add: - how to avoid spamming with procmail or directly with MTA      -->
<!-- Swedish translation 1998/08/08 Tomas Carlsson md5tc@mdstud.chalmers.se  -->

<!doctype linuxdoc system>
<article>

<title>Linux e-post HOWTO
<author>Guylhem Aznar &lt;guylhem@oeil.qc.ca&gt;. Svensk översättning Tomas Carlsson &lt;md5tc@mdstud.chalmers.se&gt;
<date>v2.1, July 1998. Svensk version Augusti 1998

<abstract>
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 <em/*inte*/ läsa detta dokument om du inte utväxlar elektronisk post med andra 
användare på ditt system eller med andra sajter.
</abstract>

<toc>

<sect>Introduktion, copyright och standard disclaimer<p>

<sect1> Email och spammning <p>

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!

<sect1> Mål <p>

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.

<sect1> Nya versioner <p>

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 
<htmlurl url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO" name="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO">.

Dessutom, bör du oftast hitta detta dokument på Linux WorldWideWeb hemsidan på 
<htmlurl url="http://sunsite.unc.edu/mdw/linux.html" name="http://sunsite.unc.edu/mdw/linux.html">.

<sect1> Feedback <p>

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 
(<tt>gregh at sunsite.unc.edu</tt>).

<sect1> Copyright <p>

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å 
<tt>gregh at sunsite.unc.edu</tt>.

<sect1> Begränsad garanti <p>

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.

<sect>Andra källor för information<p>

<sect1> USENET <p>

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.

<em>
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.
</em>

<em>
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.
</em>

BRA PLATSER är:
<verb>
           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.
</verb>

<sect1> E-postlistor <p>

Det finns många e-postlistor för sendmail, smail och qmail.

Du kan hitta adresser i /usr/doc/den_du_har_valt.

<sect1> Andra dokument från LDP <p>

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å:

<itemize>
<item>på din egen dator i /usr/doc/ :-)
<item>Linux Networking Administrators' Guide
<item>Serial Communications HOWTO
<item>Ethernet HOWTO
<item>UUCP HOWTO om du använder UUCP
</itemize>

<sect1> Böcker <p>

Följande är en lista på böcker som kan vara bra:

<itemize>
<item>"<tt>Managing UUCP and USENET</tt>" 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.

<item>"<tt>Unix Communications</tt>" från The Waite Group innehåller en bra beskrivning av alla delarna 
och ur de passar ihop.

<item>"<tt>Sendmail</tt>" 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. 

<item>"<tt>The Internet Complete Reference</tt>" 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.

<item>"<tt>The Linux Networking Administrators' Guide</tt>" 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.
<p>
</itemize>

<sect>Krav<p>

<sect1> Hårdvara <p>

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 <tt>comp.dcom.modems</tt> eller i de
olika FAQsen för modem och seriell kommunikation och periodiska inlägg på USENET.

<sect1> Mjukvara <p>

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
<bf/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.

<sect>Qmail v1.03<p>

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.

<sect1> Att få tag på qmail <p>

Gå till <htmlurl url="http://www.qmail.org" name="http://www.qmail.org"> för att ladda ner den senaste
versionen.

<sect1> Att packa upp källkoden <p>

Packa sedan upp den genom att köra:
<tscreen><verb>
mv qmail.tar.gz /usr/local/src
cd /usr/local/src ; tar -zxvf qmail.tar.gz
</verb></tscreen>

Om du hittar en bz2 version (nytt och bättre kompressionsformat), ersätt bara tar med:
<tscreen><verb>
bunzip2 qmail.tar.bz2
tar -xvf qmail.tar
</verb></tscreen>

<sect1> Att förbereda kompilering <p>

Gå nu in i qmail katalogen och titta på den förinställda konfigurationen:
<tscreen><verb>
cd qmail; more conf-*
</verb></tscreen>

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:
<tscreen><verb>
mkdir /var/qmail
</verb></tscreen>
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:
<tscreen><verb>
   # 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
</verb></tscreen>

eller ändra <tt>/etc/passwd</tt> och <tt>/etc/group</tt> för hand så att dessa användare läggs till. Du kan
till exempel lägga till:

<tscreen><verb>
        qmail:*:2107:
        nofiles:*:2108:
</verb></tscreen>

&amp;

<tscreen><verb>
        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
</verb></tscreen>

Nu kan du köra
<tscreen><verb>
make setup check
</verb></tscreen>

för att testa din konfiguration, sedan:
<tscreen><verb>
./config
</verb></tscreen>
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:
<tscreen><verb>
File : ".qmail-MAILER-DAEMON"
&amp;postmaster
File : ".qmail-bin"
&amp;root
File : ".qmail-daemon"
&amp;root
File : ".qmail-decode"
&amp;root
File : ".qmail-dumper"
&amp;root
File : ".qmail-games"
&amp;root
File : ".qmail-ingres"
&amp;root
File : ".qmail-mailer-daemon"
&amp;postmaster
File : ".qmail-manager"
&amp;root
File : ".qmail-news"
&amp;root
File : ".qmail-nobody"
&amp;root
File : ".qmail-operator"
&amp;root
File : ".qmail-postmaster"
&amp;root
File : ".qmail-root"
&amp;guylhem
File : ".qmail-system"
&amp;root
File : ".qmail-toor"
&amp;root
File : ".qmail-uucp"
&amp;root
File : ".qmail-uucp-default"
|preline -dr /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" lm!rmail "($DEFAULT@$HOST)"
</verb></tscreen>

Du måste skapa var och en av dessa filer i <tt/~alias/, och ersätta <tt/&amp;guylhem/ i <tt/.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:
<itemize>
<item> För NFS-monterade hemkataloger, använd MAILDIR format med en patch för lokala e-postläsare (patchar 
finns på <htmlurl url="http://www.qmail.org" name="http://www.qmail.org">)
<item> 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.
<item> Undvik /var/spool/mail/&dollar;USER format, för osäkert.
</itemize>

För att fixa standardformat, läs alla filer i <tt>/var/qmail/boot</tt>, kopiera sedan den du tycker bäst om 
till <tt>/var/qmail/rc</tt>.

<tt/home/ eller <tt/proc/ är säkra val, men jag föredrar <tt/home/ av säkerhetsskäl.

<sect1> Att konfigurera qmail <p>

I /var/qmail/control, editera :

<sect2> defaultdomain, me, plusdomain <p>

<itemize>
<item> me är ditt lokala FQDN (fully qualified domain name), till exempel på min maskin är det 
<tt/barberouge.linux.lmm.com/

<item> defaultdomain kommer att adderas till alla datornamn som inte innehåller några punkter, inklusive
defaulthost, du kan till exempel sätta det till <tt/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.

<item>plusdomain är undantaget; det adderas till alla datornamn som slutar med ett plustecken, inklusive
defaulthost (sätts i <tt/me/) om den slutar med ett plustecken.
</itemize>

Följande tre exempel visar hur kraftfullt och lättkonfigurerat qmail är:

<sect2> locals, rcpthosts <p>

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 <tt/locals/ och <tt/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.

<sect2> virtualdomains <p>

Här kan du specificera standardläget för utgående e-post, till exempel:
<tscreen><verb>
#:alias-uucp
</verb></tscreen>

om du inte vill skicka utgående e-post med uucp utan med smtp (standard) eller
<tscreen><verb>
:alias-ucp
</verb></tscreen>

om du skickar utgående e-post med uucp.

<sect1> Att testa qmail <p>

Nu är det konfigurerat, prova:
<tscreen><verb>
sh -cf '/var/qmail/rc &'
</verb></tscreen>
för att köra igång qmail (det kommer inte att störa din lokala MTA), sedan:

<tscreen><verb>
echo to: mylogin | /var/qmail/bin/qmail-inject
</verb></tscreen>

Du bör få detta i det format som du har valt i <tt>/var/qmail/boot/</tt>.

<sect1> Att ta bort din andra MTA <p>

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:
<tscreen><verb>
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
</verb></tscreen>

Sätt sedan in qmail-smtpd i <tt>/etc/inetd.conf</tt> (allt på en rad):
<tscreen><verb>
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
</verb></tscreen>

Om du använder en gammal icke-SYSV-init distribution som RedHat, lägg bara till följande i dina boot-skript:
<tscreen><verb>
sh -cf '/var/qmail/rc &' 
</verb></tscreen>

Vanligtvis i <tt>/etc/rc.local</tt> men inte helt säkert.

För en verkligt SYSV-init kompatibel distribution (RedHat, Caldera, Suse, Debian), lägg till följande skript
i <tt>/etc/init.d/</tt>

DEBIAN version:

<tscreen><verb>
#!/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
</verb></tscreen>

REDHAT version :

<tscreen><verb>
#!/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
</verb></tscreen>

Gör sedan symboliska länkar till varje <tt>/etc/rcN.d/</tt>, till exempel:
<tscreen><verb>
ln -sf /etc/init.d/qmail /etc/rc1.d/K19qmail
</verb></tscreen>

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).

<itemize>
<item>Hur man vet om det skall vara ett K eller ett S?
Gör vad majoriteten av daemonerna i denna runleveln gör!

<item>Vilken siffra skall jag skriva efter K eller S?
Siffran som står vid nätverks-daemonen!
</itemize>

RedHat, Caldera och Suse använder <tt>/etc/rc.d/</tt> istället för bara <tt>/etc/</tt> som Debian, dvs
<tt>/etc/rc.d/rc1.d/</tt> eller <tt>/etc/rc.d/init.d/</tt> till exempel.

<sect1> Det var allt ! <p>

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:

<tscreen><verb>
killall inetd
init 1
</verb></tscreen>

För att gå till 'single user'-läge, sedan:
<tscreen><verb>
init 2
</verb></tscreen>

för att gå tillbaka till din standard-runlevel (som står specificerad i <tt>/etc/inittab</tt> 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).

<sect>Smail v3.1<p>

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.

<sect1> Att konfigurera smail <p>

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.

<verb>CASE_NO_NEWLINES=true </verb>

När det väl är installerat så brukar konfigurationsfilerna läggas i <tt>/etc/smail/</tt>, så låt oss börja 
editera dem.

<sect1> Filen <tt>config</tt> <p>

<tscreen><verb>
# 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
</verb></tscreen>

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 <tt/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 <tt>/usr/doc/smail/examples/</tt> för att
se om något passar din situation.

<sect1>Filen <tt/directors/ <p>

<tscreen><verb>
# 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
</verb></tscreen>

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.

<sect1> Filen <tt/fidopaths/ <p>

<tscreen><verb>
.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
</verb></tscreen>

Skapa endast denna filen om du använder ifmail och FIDO.

<sect1> Filen <tt/routers/ <p>

<tscreen><verb>
# 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
</verb></tscreen>

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 <tt>/etc/smail/maps/table</tt>.

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.

<sect1> Filen <tt/transports/ <p>

<tscreen><verb>
# 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})$)"
</verb></tscreen>

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.

<sect1> Katalogen <tt>maps/</tt> <p>

Den innehåller filerna <tt/map/ och <tt/table/:

Först filen <tt/map/

<tscreen><verb>
#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
</verb></tscreen>

Återigen så skall du ändra denna fil så att den speglar din situation (Jag förses av polux.linux.eu.org).

Nu filen <tt/table/


<tscreen><verb> 
*	uux
</verb></tscreen>

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 '*').

<sect1> Andra bra exempel <p>

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.

<tscreen><verb>
#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
</verb></tscreen>

<tscreen><verb>
#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
</verb></tscreen>

<sect1> Starta om inetd <p>

För att köra smail som en smtp daemon, lägg till en av följande rader i <tt>/etc/inetd.conf</tt>:
<verb>
         smtp stream tcp nowait  root  /usr/bin/smtpd smtpd

eller:

         smtp stream tcp nowait  root  /usr/sbin/tcpd  /usr/sbin/in.smtpd


</verb>

Utgående e-post skickas automatiskt, om man använder elm.

<sect1> Smail med smtp <p>

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 
<tt>/var/spool/smail/input/</tt>. När kopplingen kommer upp så körs <tt/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.

<sect>GAMMALT AVSNITT: Sendmail+IDA<p>

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:

<itemize>
<item> Om du använder en gammal kärna (1.0): sendmail+IDA
<item> Om du använder en inte så gammal kärna (1.2): sendmail+IDA och modifiering av källkod
<item> Nyare kärna (2.0): sendmail 8.x
</itemize>

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.

<sect1> Installation av källkod <p>

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:

<itemize>
<item><tt>cd / ; tar -zxvf sendmail5.67b+IDA1.5.tgz</tt>
</itemize>

<itemize>
<item>byt till katalogen <tt>/usr/local/lib/mail/CF</tt> och kopiera exempelfilen <tt>local.m4</tt> till
<tt>ditt_datornamn.m4</tt>.
</itemize>

Editera denna fil och byt ut <em/hostname/, <em/aliases/ och <em/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 <tt/make ditt_datornamn.cf/ och flytta resultatet till <tt>/etc/sendmail.cf</tt>

<itemize>
<item>Om du har en endast-uucp sajt så behöver du inte skapa någon av de tabeller som nämns i filen 
<tt/README.linux/.
</itemize>

Du kommer att behöva ändra lite grann i filerna så att <tt/Makefile/ fungerar. Ändra bara i <tt/.m4/ filen, kör
<tt/make sendmail.cf/ och börja testa det.

<itemize>
<item>Om du har en endast-uucp sajt och du 'pratar' med sajter utöver din <em/smarthost/, så måste du lägga 
till <em/uucpxtable/-poster för var och en av dem (annars kommer e-post till dem också att gå via 
<em/smarthost/) och köra <em/dbm/ mot den ändrade <tt/uucpxtable/.
</itemize>

<itemize>
<item>Om du kör Rich Brauns orginaldistribution av 5.67a, och om du ändrar din <tt/.cf/-fil så måste du frysa 
konfigurationen med <tt>/usr/lib/sendmail -bz</tt> för att ändringarna skall ha någon effekt.
</itemize>

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 <em/mail.debug/ satt och du kör <em/syslogd/, så kommer dina
inkommande och utgående e-postmeddelanden att loggas. Se filen <tt>/etc/syslog.conf</tt> för mer information.

Källkoden för sendmail+IDA finns på <htmlurl url="ftp://vixen.cso.uiuc.edu" name="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 <tt/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.

<sect1> Filen <tt/sendmail.m4/ <p>

Sendmail+IDA kräver att du sätter upp en <tt/sendmail.m4/ fil istället för att ändra direkt i filen 
<tt/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 <tt/sendmail.m4/ fil som motsvarar ovanstående exempel med smail ser ut som följer:

<verb>
  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 -------
 </verb>

<sect1> Att definiera en lokal e-postutdelare <p>

Till skillnad från de flesta Unixdistributioner, så har inte Linux en lokal e-postutdelare som standard. Men 
<em/deliver/ eller <em/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 <em/deliver/ eller 
<em/procmail/ programmen, som kan vara valbara paket i en Linuxdistribution.

För att göra detta så måste du definiera en <tt/LOCAL_MAILER_DEF/ i filen <tt/sendmail.m4/ som pekar på en fil
som ser ut som följer:

<verb>
  # -- /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
</verb>

Det finns även inbyggt standard för <em/deliver/ i filen <tt/Sendmail.mc/ som inkluderas i filen 
<tt/sendmail.cf/. För att använda det så skall du inte använda filen <tt/mailers.linux/ utan istället definiera
följande i din <tt/sendmail.m4/:

<verb>
   dnl --- (in sendmail.m4) ---
   define(LOCAL_MAILER_DEF, DELIVER)dnl       # mailer for local delivery
</verb>

Tyvärr så förutsätter <tt/Sendmail.mc/ att <em/deliver/ är installerat i <tt>/bin</tt>, vilket inte är fallet
med Slackware 1.1.1 (som installerar det i <tt>/usr/bin</tt>). I så fall måste du antingen göra en symbolisk
länk eller kompilera om <em/deliver/ från källkoden så att det hamnar i <tt>/bin</tt>. Notera att <em/procmail/
generellt är bättre än <em/deliver/, till exempel för filtrering av e-post.

<sect1> Sendmail+IDA dbm tabeller <p>

Att sätta upp speciellt uppträdande för sajter eller domäner görs genom ett antal <tt/dbm/ tabeller istället
för att ändra direkt i filen <tt/sendmail.cf/.

Se Julinumret 1994 av <em/Linux Journal/ (om du fortfarande kan hitta det :-), dokumentationen i källkoden 
eller i sendmail kapitlet i <em/Networking Administration Guide/ för mer detaljer.

<itemize>
<item>mailertable   - definierar speciellt uppträdande för andra datorer eller domäner.
<item>uucpxtable    - tvingar UUCP utdelning av e-post till datorer som är i DNS format.
<item>pathtable     - definierar UUCP 'bang-paths' till andra datorer eller domäner.
<item>uucprelays    - kortsluter 'pathalias' vägen till välkända datorer.
<item>genericfrom   - konverterar interna adresser till generella som kan ses från utsidan.
<item>xaliases      - konverterar generella adresser till/från giltiga interna adresser.
<item>decnetxtable  - konverterar RFC-822 adresser till DECnet adresser.
</itemize>

<sect1> Så vilka poster krävs? <p>

När man inte använder någon av de valbara dbm tabellerna så skickar sendmail e-post via <tt/RELAY_HOST/ och
<tt/RELAY_MAILER/ som är definierade i filen <tt/sendmail.m4/ som används för att generera <tt/sendmail.cf/.
Det är lätt att gå förbi det genom poster i <em/domaintable/ eller <em/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 <tt/RELAY_HOST/, behöver antagligen inte specificera några tabellposter alls.

I stort sett alla system bör sätta makrona <tt/DEFAULT_HOST/ och <tt/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 <tt/UUCPNAME/ 
till dess officiella uucp-namn.

De behöver också sätta <tt/RELAY_MAILER/ och <tt/RELAY_HOST/ vilket sätter på 'smarthost' routing genom en
vidarebefodrande e-post utdelare.

Transportprotokollet som skall användas definieras i <tt/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 <tt/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 <tt/ISOLATED_DOMAINS/ och
<tt/VALIDATION_DOMAINS/ till din domän. Du skall även definiera <tt/RELAY_HOST/ till att vara din leverantör 
och <tt/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 <tt/RELAY_HOST/.

<sect1>Sendmail 8.x<p>

Sendmail 8.7.x från Berkeley var den senaste stora revisionen efter sendmail5. Den hade underbart inbyggt stöd
för linux: bara <tt/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 (<tt/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.

<sect1> Exempel på 8.7.x <tt/mc/-fil <p>

Liksom sendmail+IDA så använder sendmail v8 m4 till att processa en konfigurationsfil till en <tt/sendmail.cf/
som används av sendmail. Följande är den <tt/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).

<verb>
        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')
</verb>

<sect1> Sendmail v8 skillnader <p>

Det finns några skillnader. Hittills har jag hittat följande:

<p> Istället för <tt/runq/ så skall man köra <tt/sendmail -q/ för att köra e-postkön! <p>

<sect1> Lokala e-postutdelare <p>

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 <em/lmail/, <em/procmail/ eller <em/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.

<sect>POP e-post<p>

Detta avsnitt handlar också om IMAP som inte är helt olikt POP.

<sect1> Historia <p>

På ett nätverk med arbetsstationer har e-post alltid varit ett problem:

<itemize>
<item>Antingen använder du <em/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,...

<item>Eller så använder du en e-post hubb, <em/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.
</itemize>

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.

<sect1> Att hämta e-post <p>

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:

<itemize>
<item> 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.
<item> 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:

<tscreen><verb>
$ popclient -3 -v mail.acme.net -u john -p "GanskaHemligt" -k -o JOHN-INET-MAIL
</verb></tscreen>

<item> fetchmail, vilket stöds aktivt och är otroligt lätt att använda. Det konfigureras i 
<tt>~/.fetchmailrc</tt> och sedan behöver du bara köra <tt/fetchmail/ när du vill hämta din e-post.

Här är min <tt>~/.fetchmailrc</tt>
<tscreen><verb>
poll mail.server protocol pop3:
        forcecr
        password PrettySecret;
</verb></tscreen>

Notera att 'forcecr' behövs för att använda fetchmail med qmail som strikt följer RFCs.

<p>Här kommer även översättarens <tt>~/.fetchmailrc</tt>
<tscreen><verb>
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
</verb></tscreen>
 
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.
</itemize>
<sect1> Att skicka e-post <p>

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.

<sect1> Att läsa e-post <p>

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.

<sect1> Testning <p>

För att kolla att din e-postserver har POP, försök med:

<tscreen><verb>
$ telnet mailhost 110
</verb></tscreen>

Om det fungerar så skall du få något unefär som: "OK Pop server (...) starting". Skriv <tt/quit/.

För att installera en ssh-krypterad kanal, testa först din e-postserver med:

<tscreen><verb>
$ ssh mailhost date
</verb></tscreen>

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 <tt/.shosts/ på e-postservern som innehåller klientens namn. För att desta 
omdirigering av ssh port (som gwpop använder), skriv:

<tscreen><verb>
$ ssh -n -f -L 12314:localhost:110 mailhost sleep 30

sedan

$ telnet localhost 12314
</verb></tscreen>

Då skall du förhoppningsvis se e-post hubbens POP meddelande. Om du inte använder ssh, glöm inte att kommentera
bort &dollar;ssh i alla gwpop skript. För att se om procmail kör, försök med <tt/procmail -v/.

<sect1> Användning <p>

Nu kan du modifiera gwpops Perl-skript för att kolla att allt är okej, kör sedan qwpop:

<tscreen><verb>
$ gwpop -v your-username
POP password on mailhost: yoursecretpasword
</verb></tscreen>

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:

<tscreen><verb>
$ gwpop -d $HOME/tmp your-username
</verb></tscreen>

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å:
<p>
<htmlurl url="ftp://ftp.pasteur.fr/pub/Network/gwpop" name="ftp://ftp.pasteur.fr/pub/Network/gwpop">
<p>
<htmlurl url="ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail" 
name="ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail">
<p>
<htmlurl url="http://www.cs.hut.fi/ssh/" name="http://www.cs.hut.fi/ssh/">

<sect>E-post <em/användarprogram/<p>

Detta avsnitt innehåller information relaterad till 'användarprogram', vilket avser mjukvaran som användaren
ser och använder. Denna mjukvara litar till <em/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!

<sect1> Mutt <p>
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 <tt/-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.

<sect1> Elm <p>

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 <tt>/var/spool/mail/</tt>
"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
<tt/-f/ för att peka till deras lokala e-postkatalog.

Om du använder en binärdistribution, så måste du skapa en fil <tt>/usr/local/lib/elm/elm.rc</tt> för att inte
använda de inkompilerade namnen på dator och domän:

<itemize>
<item> byt ut <tt/subdomain.domain/ med ditt domännamn
<item> byt ut <tt/myhostname/ med ditt datornamn (utan domän)
</itemize>

<verb>
        #---------- /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
	#
        #--------------------------------------------------------
</verb>

En sak som du skall veta är att om du har kompilerat in MIME-stöd i elm så måste <em/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å <tt>thumper.bellcore.com</tt> och såklart via <em/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 <htmlurl url="ftp://ftp.viewlogic.com/pub/elm-2.4pl24pgp3.tar.gz" 
name="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 (<tt/aliases.dir/ och 
<tt/aliases.pag/).
<p>
<tt>DETTA ÄR INTE EN BUGG I ELM</tt>, 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 <tt> scot at
catzen.gun.de (Scot W. Stevenson) </tt>)

Nuvarande version av metamail kräver csh för vissa av dess skript. Att inte ha csh (eller tcsh) skapar väldigt
intressanta fel...

<sect1> Mailx <p>

Om du inte har ett lokalt <em/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 <em/pmake/ installerat.

Om någon fortfarande använder det, så rekommenderar jag starkt att ta bort de gamla <em/edmail/-grejorna från
SLS1.00 och ersätta dem med mailx.

<sect1> Andra användarprogram <p>

Det är även känt att följande program fungerar i Linux. Använd <em/archie/ för detaljer om hur du hittar dem...

<itemize>
<item>mutt	- på långa vägar bättre än elm, väldigt enkel att använda
<item>pine      - från  University of Washington
<item>metamail  - har MIME-stöd
<item>mh        - ytterligare ett sätt att hantera e-post.
<item>deliver   - spara/processa e-post baserat på regler.
<item>procmail  - spara/processa e-post baserat på regler.
<item>majordomo - hanterar e-postlistor
<item>mserv     - erbjuder filer-per-e-post
</itemize>

<sect> Tillkännagivanden <p>

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!

</article>




