Artikel arkivet's artikelkategori: Installation
Skriven av nomicon 2003-10-09 12:44 url: http://www.qmail.org

Qmail installation i Slackware med Maildir

Jag tar inget ansvar för vad detta kan ställa till med på ditt system!

Dessa paket behöver du ladda hem INNAN du börjar läsa denna dokumentation!
Kolla gärna innan du laddar hem dessa att de verkligen är den senaste versionen!

qmail source:
http://cr.yp.to/software/qmail-1.03.tar.gz
qmail daemontools:
http://cr.yp.to/daemontools/daemontools-0.70.tar.gz
qmail ucspi.
http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
pine patch.
http://qmail.nac.net/pine-maildir-4.33

Packa upp qmail sourcen, gå in i det biblioteket och skriv sedan:

mkdir /var/qmail

Nu ska vi skapa lite grupper och användare som qmail kommer att
använda sig utav:


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


Skriv sedan:


make setup check


och sedan

./config


config scriptet tar reda på vad du har för fqdn i din nameserver, fqdn är fully qualified domainname, tex mailhost.rptcq.se och inte det du satte det lokala datornamnet till.

Ibland så hittas tyvärr inte ditt fqdn, och config säger då till att
du måste sätta upp dina controls-filer själv.
Du kan då antingen följa anvisningar här nedan, eller skriva:


./config-fast mitt.hostnamn.som.jag.ska.ta.emot.mail.för.se


Ifall även detta misslyckas så får lov göra detta:


cd /var/qmail/control


Skapa följande filer:


me Denna fil skall innehålla domänen som din qmailserver skall presentera sig som, tex rptcq.se

rcpthosts Denna fil skall innehålla namnen på de domäner qmail ska acceptera epost för. Tex rptcq.se

locals Denna fil skall innehålla namnen på de domäner qmail ska levereras lokalt till användare på systemet. Tex rptcq.se

Det är alltså dessa 3 filer du skall skapa manuellt, me,rcpthosts och locals

Det är nu dags att skapa dom alias som ska användas på systemet, och du kan självklart lägga till egna alias senare, tex info@ och abuse@.


export PATH=/var/qmail/bin:$PATH
cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
chmod 644 ~alias/.qmail*


Nu ska vi läsa igenom antingen INSTALL.mbox, INSTALL.vsm eller INSTALL.maildir
Själv föredrar jag Maildir, så detta dokument kommer att fortsätta med inställningarna för Maildirformatet. Ifall du vill ha något annat format så får du själv läsa INSTALL filerna för dessa.

Ifall du är en användare utav pine (Yeah!) så måste du efter att du har fått qmail att fungera ladda ned en version av Pine som har stöd för Maildir.

Nu skriver vi:


maildirmake $HOME/Maildir
echo ./Maildir/ > ~/.qmail

Ovanstående rad måste göras för varje användare på systemet som ska kunna ta emot mail! (ifall du vill att detta ska göras för varje ny användare, skriv då: maildirmake /etc/skel/Maildir ; echo ./Maildir/ > /etc/skel/.qmail)

Kopiera nu /var/qmail/boot/home till /var/qmail/rc:


cp /var/qmail/boot/home /var/qmail/rc


Obs, detta är bara temporärt, vi ska snart göra en ny /var/qmail/rc fil som gör så att den levererar all post till ~/Maildir

Nu är qmail installerat, men allting är inte riktigt klart ännu. Nu ska vi sätta upp daemontools så att qmail startar vid systemboot. Detta gör vi med svscan, som är en del av daemontools paketet.
Packa upp daemontools:


tar xvfz daemontools-0.70.tar.gz
cd daemontools-0.70

Editera filen tai64nlocal.c med din favoriteditor, ändra:

#include sys/time.h

till:

#include time.h

sedan:

make
make setup check


Sådär, då var det gjort... nu ska vi skapa service directory etc för daemontools:


mkdir /service
mkdir /var/qmail/supervise
mkdir /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-send
mkdir /var/qmail/supervise/qmail-send/log
mkdir /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-smtpd
mkdir /var/qmail/supervise/qmail-smtpd/log
mkdir /var/log/qmail
mkdir /var/log/qmail/qmail-send
mkdir /var/log/qmail/qmail-smtpd
chown qmaill /var/log/qmail
chown qmaill /var/log/qmail/*


Nästa sak vi måste göra är att skapa ett script så att svscan startar varje gång man bootar systemet, detta kan göras såhär med ett enkelt rc script:


#!/bin/sh -e
# /etc/init.d/svscan : start or stop svscan.
# borrowed from http://Web.InfoAve.Net/~dsill/lwq.html#start-qmail
# modified by Adam McKenna

case "$1" in
start)
echo -n "Starting djb services: svscan "
cd /service
env - PATH="/usr/local/bin:$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping djb services: svscan "
kill `cat /var/run/svscan.pid`
echo -n "services "
svc -dx /service/*
echo -n " logging "
svc -dx /service/*/log
echo "."
;;
restart|reload|force-reload)
$0 stop
$0 start
;;
*)
echo 'Usage: /etc/init.d/svscan {start|stop|restart}'
exit 1
esac

exit 0


Döp detta script till tex svscan.sh och lägg det i /etc/rc.d. Glöm inte:

chmod +x /etc/rc.d/svscan.sh
echo "/etc/rc.d/svscan.sh start" >> /etc/rc.d/rc.local


Detta script övervakar qmail, så om qmail utav någon anledning dör, så startas det igen.
Det går även att ansluta andra tjänster till svscan, t.ex om du väljer vid ett senare tillfälle att köra den POP3 daemonen som följer med Qmail.

Nu måste vi därimot göra ett script som kontrollerar själva qmail:


#!/bin/sh -e
# /etc/init.d/qmail : start or stop the qmail mail subsystem.
# borrowed from http://Web.InfoAve.Net/~dsill/lwq.html#start-qmail
# modified by Adam McKenna

PATH=$PATH:/usr/local/bin:/var/qmail/bin

case "$1" in
start)
echo -n "Starting mail-transport-agent:"
svc -u /var/qmail/supervise/*
echo -n " qmail"
svc -u /var/qmail/supervise/*/log
echo " logging."
;;
stop)
echo -n "Stopping mail-transport-agent: "
echo -n " qmail"
svc -d /var/qmail/supervise/*
echo " logging"
svc -d /var/qmail/supervise/*/log
;;
restart)
$0 stop
$0 start
;;
reload|force-reload)
echo "Reloading 'locals' and 'virtualdomains' control files."
svc -h /var/qmail/supervise/qmail-send
;;
*)
echo 'Usage: /etc/init.d/qmail {start|stop|restart|reload}'
exit 1
esac

exit 0


Detta script används endast för att stoppa eller starta om Qmail, och behöver således inte exekveras vid systemboot, den biten sköter föregående script.


chmod +x /etc/rc.d/qmailctl.sh


Nu ska vi skapa lite magik i /var/qmail/supervice, vi ska skapa några små scriptfiler som heter run, och de sköter om att starta upp qmail-send, qmail-smtpd m.m.


cd /var/qmail/supervise/qmail-send


Skapa en ny fil som heter run med din favoriteditor:


#!/bin/sh
exec /var/qmail/rc


Och nu..


cd /var/qmail/supervise/qmail-send/log


..även här ett script som heter run


#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-send


samma sak här:


cd /var/qmail/supervise/qmail-smtpd


filen run


#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000
/usr/local/bin/tcpserver -H -R -v -p -x /etc/tcp.smtp.cdb
-u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1


..och skapa även run i:


cd /var/qmail/supervise/qmail-smtpd/log



#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-smtpd


Obs! Glöm nu inte att sätta chmod +x på alla de run filer vi nyss skapade. Dessa måste kunna exekveras!

Nu ska vi installera paketet ucspi-tcp-0.88.tar.gz:


tar xvfz ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check


Detta används för att kontrollera vilka ipadresser som är tillåtna att relaya via våran Qmailserver, dvs skicka epost via oss. Detta bör begränsas endast till ett fåtal adresser, annars är risken överhängade för att illasinnade spammare kommer att utnyttja oss för att skicka ut reklam och dylikt.

Filen som kontrollerar detta heter /etc/tcp.smtp.


cd /etc

Skapa filen tcp.smtp med din favoriteditor:


127.0.0.1:allow,RELAYCLIENT=""
:allow


Detta tillåter endast den lokala datorn att skicka ut utgående e-post. Ifall du önskar andra ipadresser att ha rättighet till detta, så lägg in de under den första raden i /etc/tcp.smtp. För mera information så kan du köra man tcprules.

Vi måste nu köra tcprules för att bygga en liten databasfil från /etc/tcp.smtp:


tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.smtp !!