Nästa Föregående Innehållsförteckning

4. Qmail v1.03

Säker, snabb och lätt att använda. Detta är den MTA (Mail Transport Agent) som jag föredrar.

För närvarande så inkluderas qmail inte i någon distribution av Linux, så vi skall fokusera på att kompilera och installera qmail, eftersom det är det enda som är lite besvärligt. Konfigurationen är ganska okomplicerad.

4.1 Att få tag på qmail

Gå till http://www.qmail.org för att ladda ner den senaste versionen.

4.2 Att packa upp källkoden

Packa sedan upp den genom att köra:

mv qmail.tar.gz /usr/local/src
cd /usr/local/src ; tar -zxvf qmail.tar.gz

Om du hittar en bz2 version (nytt och bättre kompressionsformat), ersätt bara tar med:

bunzip2 qmail.tar.bz2
tar -xvf qmail.tar

4.3 Att förbereda kompilering

Gå nu in i qmail katalogen och titta på den förinställda konfigurationen:

cd qmail; more conf-*

Du bör inte behöva ändra några förinställda värden, men du kan till exempel ange en alternativ katalog för installationen eller bättre kompileringsflaggor.

Kör nu:

mkdir /var/qmail
för att skapa målkatalogen.

Om du inte har installerat en Debian distribution så behöver du lägga till qmail användare; qmails höga säkerhet är beroende av detta.

Ingen kommer att kunna förstöra hela ditt e-postsystem eller få root-access eftersom qmail är uppdelat i moduler som var och en kör under sitt eget UID.

Så kör:

   # groupadd nofiles
   # useradd -g nofiles -d /var/qmail/alias alias
   # useradd -g nofiles -d /var/qmail qmaild
   # useradd -g nofiles -d /var/qmail qmaill
   # useradd -g nofiles -d /var/qmail qmailp
   # groupadd qmail
   # useradd -g qmail -d /var/qmail qmailq
   # useradd -g qmail -d /var/qmail qmailr
   # useradd -g qmail -d /var/qmail qmails

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

        qmail:*:2107:
        nofiles:*:2108:

&

        alias:*:7790:2108::/var/qmail/alias:/bin/true
        qmaild:*:7791:2108::/var/qmail:/bin/true
        qmaill:*:7792:2108::/var/qmail:/bin/true
        qmailp:*:7793:2108::/var/qmail:/bin/true
        qmailq:*:7794:2107::/var/qmail:/bin/true
        qmailr:*:7795:2107::/var/qmail:/bin/true
        qmails:*:7796:2107::/var/qmail:/bin/true

Nu kan du köra

make setup check

för att testa din konfiguration, sedan:

./config
för att konfigurera qmail.

Nu måste du installera några alias, eftersom /etc/alias inte används av qmail om du inte kompilerar och installerar något valfritt paket.

Här är mina inställningar:

File : ".qmail-MAILER-DAEMON"
&postmaster
File : ".qmail-bin"
&root
File : ".qmail-daemon"
&root
File : ".qmail-decode"
&root
File : ".qmail-dumper"
&root
File : ".qmail-games"
&root
File : ".qmail-ingres"
&root
File : ".qmail-mailer-daemon"
&postmaster
File : ".qmail-manager"
&root
File : ".qmail-news"
&root
File : ".qmail-nobody"
&root
File : ".qmail-operator"
&root
File : ".qmail-postmaster"
&root
File : ".qmail-root"
&guylhem
File : ".qmail-system"
&root
File : ".qmail-toor"
&root
File : ".qmail-uucp"
&root
File : ".qmail-uucp-default"
|preline -dr /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" lm!rmail "($DEFAULT@$HOST)"

Du måste skapa var och en av dessa filer i ~alias, och ersätta &guylhem i .qmail-root med ditt eget användarnamn för att få root-e-post.

VARNING ALLA UUCP ANVÄNDARE !

LITA INTE PÅ QMAIL FAQ OM DU ANVÄNDER UUCP, ANVÄND MIN .qmail-uucp-default ISTÄLLET! ANNARS KOMMER DU INTE KUNNA SKICKA E-POST VIA DIN UUCP ANSLUTNING!

Nu måste du bestämma i vilket format dina användare skall få sin e-post.

Här är mitt förslag:

För 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 :

defaultdomain, me, plusdomain

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

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.

virtualdomains

Här kan du specificera standardläget för utgående e-post, till exempel:

#:alias-uucp

om du inte vill skicka utgående e-post med uucp utan med smtp (standard) eller

:alias-ucp

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

4.5 Att testa qmail

Nu är det konfigurerat, prova:

sh -cf '/var/qmail/rc &'
för att köra igång qmail (det kommer inte att störa din lokala MTA), sedan:

echo to: mylogin | /var/qmail/bin/qmail-inject

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

4.6 Att ta bort din andra MTA

Om denna testen var lyckad, så kan du döda din tidigare MTA:

killall -STOP daemon_name ; om några barnprocesser är igång så bör du göra killall -CONT deras_namn, wait, killall -STOP igen, och repetera ad nauseam.

Om det inte finns några barnprocesser, killall -TERM och sedan killall -CONT.

Tag sedan bort den (hur detta görs beror på vilken distribution du har, till exempel 'rpm -e --nodeps' i RedHat, Caldera och Suse, eller 'dpkg -r --force-depends' i Debian). Kör sedan:

# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

Sätt sedan in qmail-smtpd i /etc/inetd.conf (allt på en rad):

smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd

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

sh -cf '/var/qmail/rc &' 

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

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

DEBIAN version:

#!/bin/sh

test -x /var/qmail/rc || exit 0

case "$1" in
  start)
     echo -n "Starting mta: "
     sh -cf '/var/qmail/rc &'
     echo "qmail."
     ;;
  stop)
     echo -n "Stopping mta: "
     killall qmail-lspawn
     echo "qmail."
     ;;
  restart)
     echo -n "Restarting mta: "
     killall -HUP qmail-lspawn
     killall -ALRM qmail-lspawn
     echo "qmail."
     ;;
  *)
     echo "Usage: /etc/init.d/qmail {start|stop|restart}"
     exit 1
esac

exit 0

REDHAT version :

#!/bin/sh
#
# qmail      This shell script takes care of starting and stopping qmail.
#
# description: qmail is a Mail Transport Agent, which is the program \
#              that moves mail from one machine to another.
# processname: qmail
# config: /var/qmail/control/

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

export PATH=$PATH:/var/qmail/bin

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/sbin/sendmail ] || exit 0

# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting qmail: "
        qmail-start '|preline procmail' splogger qmail &
        touch /var/lock/subsys/qmail
        echo
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down qmail: "
        killproc qmail-lspawn
        echo
        rm -f /var/lock/subsys/qmail
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  status)
        status qmail
        ;;
  *)
        echo "Usage: qmail {start|stop|restart|status}"
        exit 1
esac

exit 0

Gör sedan symboliska länkar till varje /etc/rcN.d/, till exempel:

ln -sf /etc/init.d/qmail /etc/rc1.d/K19qmail

Om den första bokstaven är K, så kommer qmail att dödas i denna runleveln (1 för "single mode" eller 6 för "boot"), men om den första bokstaven är S så kommer qmail att startas i denna runleveln (alla andra runlevels).

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


Nästa Föregående Innehållsförteckning