Installer daemontools
Først laves det dir daemontools installeres i:
# mkdir -p /package
# chmod 1755 /package
Download
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz .
# cd /package
# tar zxvf /path/to/daemontools-0.76.tar.gz
# cd admin/daemontools-0.76
# package/install
Dette vil compile og installere softwaren, og lave et /command og et /service dir. Der vil også blive tilføjet en linie med " csh -cf '/command/svscanboot &' " til /etc/rc.local , den vil jeg foreslå at du sletter og i stedet indsætter:
if [ -L /command/svscanboot ]; then
echo -n 'starting svscanboot.'
/bin/csh -cf '/command/svscanboot &'
echo -n ''
fi
Det er en lidt pænere måde, og det er nemmere at se hvad der foragår ved boot.
Reboot and tjek med ' ps auxw | grep svscan ' og se efter noget lignende dette:
root 27104 0.0 0.1 68 136 C0- S 12:57AM 0:06.12 svscan
/service
morten 14580 0.0 0.3 156 372 p3 Ss+ 10:35PM 0:00.04 grep
svscan
Installer ucspi-tcp
Hent kildekoden på
http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz .
# tar zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# make
# make setup check
Pærelet!
Installer qmail
Hent kildekoden på
http://cr.yp.to/software/qmail-1.03.tar.gz .
Opret brugere og grupper
Tilføj brugere og grupper for qmail (de er ikke nødt til at være disse eksakte numre, det er bare dem der er brugt som eksempler i qmail INSTALL filerne)
Du skal tilføje brugere og grupper inden du compiler qmail , ellers vil qmail s build exite med fejl.
I /etc/group tilføjes:
qmail:*:2107:
nofiles:*:2108:
Editer /etc/passwd med vipw(8) og tilføj:
alias:*:7790:2108::0:0:qmail user:/var/qmail/alias:/sbin/nologin
qmaild:*:7791:2108::0:0:qmail user:/var/qmail:/sbin/nologin
qmaill:*:7792:2108::0:0:qmail user:/var/qmail:/sbin/nologin
qmailp:*:7793:2108::0:0:qmail user:/var/qmail:/sbin/nologin
qmailq:*:7794:2107::0:0:qmail user:/var/qmail:/sbin/nologin
qmailr:*:7795:2107::0:0:qmail user:/var/qmail:/sbin/nologin
qmails:*:7796:2107::0:0:qmail user:/var/qmail:/sbin/nologin
Ovenstående er i BSD format, hvis du er på Linux er formatet lidt anderledes, se de andre entries i din password fil for formatet.
Lav qmail ' homedir:
# mkdir /var/qmail
Installationen
Compilèr og installer qmail
# tar zxvf qmail-1.03.tar.gz
# cd qmail-1.03
# make setup check
# ./config | tee /var/qmail/doc/config.out
Den sidste kommando finder ud af hvad maskinen hedder og sætter det hele op til det navn den finder i DNS. Hvis du får en fejl her er det sandsynligvis et netværksproblem.
Alternativt kan du bruge ./config-fast således:
./config-fast dit.fulde.hostname | tee /var/qmail/doc/config.out
Under alle omstændigheder vil outputtet blive skrevet til filen /var/qmail/doc/config.out , så kig der hvis der skal debugges.
# cd /etc/skel
# /var/qmail/bin/maildirmake ./Maildir
Derudover skal hver bruger på systemet have et ~/Maildir for at kunne modtage mail. Forudsat at der kun ligger brugeres homedirs i /home kan det f. eks. gøres således i bourne sh :
# cd /home
# for dir in *; do /var/qmail/bin/maildirmake $dir/Maildir; \
chown -R $dir $dir/Maildir; done
Eller i csh :
# cd /home
# foreach dir (*); do /var/qmail/bin/maildirmake $dir/Maildir; \
chown -R $dir $dir/Maildir; end
Husk også at tilføje /var/qmail/man til din $MANPATH , kig i filen /etc/manpath.config og læs den tilhørende manpage.
Dette laver et Maildir i /etc/skel . Uden dette vil qmail ikke levere mail, og alle brugere på systemet som skal kunne modtage mail skal have et Maildir eller en ~/.qmail file der specificerer hvad der skal gøres af mail til brugeren.
Sørg også for at alle eksisterende brugere har et ~/Maildir og/eller en ~/.qmail .
Checkpassword
( Kun hvis du vil køre en POP3 server).
Hent kildekoden her:
http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz .
Pak ud og installèr:
# tar zxvf checkpassword-0.90.tar.gz
# cd checkpassword
# make
# make setup check
Lave en test (som root):
# /var/qmail/bin/qmail-popup blah /bin/checkpassword pwd
+OK <...@blah>
user Frodo
+OK
pass Friend
-ERR authorization failed
Prøv derefter med et user / pass kombination som eksisterer.
Vær opmærksom på at hvis du har installeret chackpassword fra FreeBSDs ports vil checkpassword ligge i /usr/local/bin/checkpassword i stedet for /bin/checkpassword .
Start og supervise scripts
qmail startes med et rc script, /var/qmail/rc :
#!/bin/sh
# Using stdout for logging, deliver to ~username/Maildir/
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/
Fix permissions på rc scriptet:
# chmod 0755 /var/qmail/rc
Lav qmails log-dir:
# mkdir -p /var/log/qmail
# mkdir -p /var/log/smtpd
# mkdir -p /var/log/pop3
# chown -R qmaill.qmail /var/log/qmail /var/log/smtpd /var/log/pop3
Nu skal supervise scripts sættes op:
# mkdir -p /var/qmail/supervise/qmail/log
# mkdir -p /var/qmail/supervise/smtpd/log
# mkdir -p /var/qmail/supervise/pop3/log
Der skal nu laves en række run scripts i det netop oprettede hierarki af kataloger
/var/qmail/supervise/qmail/run
#!/bin/sh
exec /var/qmail/rc
/var/qmail/supervise/qmail/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
n12 s524288 /var/log/qmail
/var/qmail/supervise/smtpd/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=200
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z
"$MAXSMTPD" ]; then
echo QMAILDUID, NOFILESGID, or MAXSMTPD is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb \
-c "$MAXSMTPD" -u "$QMAILDUID" \
-g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1
/var/qmail/supervise/smtpd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
n12 s524288 /var/log/smtpd
/var/qmail/supervise/pop3/run
( Kun hvis du vil køre en POP3 server).
#!/bin/sh
# Fully Qualified Domain Name
FQDN=dit.hostname.dk
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 110 \
/var/qmail/bin/qmail-popup $FQDN /bin/checkpassword \
/var/qmail/bin/qmail-pop3d Maildir 2>&1
/var/qmail/supervise/pop3/log/run
( Kun hvis du vil køre en POP3 server).
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/pop3
Fix permissions på scripts
# chmod -R 755 /var/qmail/supervise
Lidt om multilog
multilog læser linier fra stdin og roterer logfiler.
Du kan køre multilog med følgende argumenter:
+ mønster
Vælger linier der matcher mønster . F. eks. vil " +hej " matche " hej " men ikke " hej med dig ". mønster kan indeholde " * " som wildcard, f. eks. vil " +named
: Cleaned cache * " matche " named[135]: Cleaned cache of 3121 RRs ", og " +* " vil matche enhver linie.- mønster
Ækvivalent med + , filtrerer bare linier fra der matcher " mønster ".
t
Hvis argumentet t gives vil der skrives et timestamp i starten af hver linie i tai64n format. For at læse det skal logfilen pipes igennem /usr/local/bin/tai64nlocal .
n antal
Hvis multilog logger til et dir (kan varmt anbefales) vil multilog gemme " antal " gamle logfiler, default er 10.
s størrelse
" størrelse " er størrelsen (i bytes) af logfiler før de roteres.
Der er yderligere argumenterne ! , e og = , læs om dem på
http://cr.yp.to/daemontools/multilog.html .
Fix adgangs kontrollerne
echo '127.:allow,RELAYCLIENT=""' > /etc/tcp.smtp
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp <
/etc/tcp.smtp
Dette er for at sikre at der ikke kan sendes mail fra andre end localhost , hvis du har brug for andet kan du tilføje dem i /etc/tcp.smtp senere.
Sæt aliaser op
qmail bruger en række filer i /var/qmail/alias i stedet for en /etc/mail/aliases fil. Læs dot-qmail for at se hvad der kan stå i sådan en fil.
Eksempel: Jeg ønsker al mail til root , postmaster og webmaster leveret til en mailbox kontrolleret af den lokale bruger m :
# echo m-admin > /var/qmail/alias/.qmail-root
# echo m-admin > /var/qmail/alias/.qmail-postmaster
# echo m-admin > /var/qmail/alias/.qmail-webmaster
Som bruger m kører jeg kommandoerne:
% echo ~/Mail/Sysmsg/ > ~/.qmail-admin
% /var/qmail/bin/maildirmake ~/Mail/Sysmsg/
Det vil få qmail til at levere til maildiret ~/Mail/Sysmsg/ som skal eksistere for at mailen leveres. /var/qmail/bin/maildirmake er den nemmeste måde at lave maildirs på .
(Hvis den afsluttende " / " udelades leveres der til en almindelig Unix mbox mailfil).
qmail vil nu levere al mail til m-admin i ~m/Mail/Sysmsg/ , og al mail til root , postmaster og webmaster vil ryge i det maildir. Det er muligt som bruger på en host der kører qmail at oprette lige så mange emailadresser man ønsker på formen brugernavn-et-eller-andet uden at bugge sin sysadmin.
Denne elegante features udnyttes til fulde i
http://cr.yp.to/ezmlm.html , som ikke vil blive behandlet yderligere her.
Start qmail
Start qmail via daemontools ' svscan og supervise etc.:
# ln -s /var/qmail/supervise/qmail /service
qmail skulle nu gerne starte op inden for 5 sekunder.
Hvis du får startet en service op via daemontools og vil have den stoppet igen er det bare at køre komandoen ' /usr/local/bin/svc -d /service/qmail ' (hvis det er qmail det drejer sig om).
Læs og følg, og udfør /var/qmail/doc/TEST.deliver . Husk endelig på at al logning foregår til /var/log/qmail/current i denne opsætning, og ikke til syslog . Hvis alt virker er det videre til næste punkt.
Start nu smtpd 'en og test den:
# ln -s /var/qmail/supervise/smtpd /service
Læs og følg /var/qmail/doc/TEST.receive .
( Kun hvis du vil køre en POP3 server).
Start POP3 daemonen, qmail-pop3d :
# ln -s /var/qmail/supervise/pop3 /service
Prøv at connecte med din favorit POP3 klient og se om det virker.
Gør qmail til default mailer
Ændre din /etc/mailer.conf så den ser således ud:
sendmail /var/qmail/bin/sendmail
send-mail /var/qmail/bin/sendmail
mailq /var/qmail/bin/sendmail
newaliases /var/qmail/bin/sendmail
Du skulle nu have en fuldt funktionel qmail server kørende.
Kig igennem al dokumentationen i /var/qmail/doc , særligt er FAQ'en god at få forstand af. En ting man skal vænne sig til med djbware er at dokumentationen er holdt i en meget knap og præcis, men, synes jeg, meget letforståelig form, men skal bare holde hovedet koldt når man læser det. Det er lidt lige som at læse matematik
Tak til Morten Liebach for denne RET gode howto. Den og en del andre kan findes på
http://freesbee.dk