Installasjon av qmail
av Hans Sandsdalen
—
sist endret
30.11.2010 - 13:41
Dette fins på nettet ellers, men er greit å ha samlet sammen likevel.
Angående qmail, se også:
Installasjon
qmail krever daemontools og ucspi-tcp.daemontools og ucspi-tcp
- daemontools
Se http://cr.yp.to/daemontools/install.html.
Create a /package directory:
mkdir -p /package chmod 1755 /package cd /package
Unpack the daemontools package:
gunzip daemontools-0.76.tar tar -xpf daemontools-0.76.tar rm daemontools-0.76.tar cd admin/daemontools-0.76
En liten endring:
cd src cp conf-cc conf-cc.orig echo gcc -O2 -include /usr/include/errno.h > conf-cc cd ..
Compile and set up the daemontools programs:
package/install
- ucspi-tcp
Se http://cr.yp.to/ucspi-tcp/install.html
Unpack the ucspi-tcp package:
gunzip ucspi-tcp-0.88.tar tar -xf ucspi-tcp-0.88.tar cd ucspi-tcp-0.88
En liten endring:
cp conf-cc conf-cc.orig echo gcc -O2 -include /usr/include/errno.h > conf-cc
Compile the ucspi-tcp programs:
make
As root, install the ucspi-tcp programs under /usr/local:
make setup check
qmail
- hent source:
wget http://www.netqmail.org/netqmail-1.05.tar.gz
- Opprett brukere og grupper:
groupadd nofiles useradd -g nofiles -d /var/qmail/alias alias useradd -g nofiles -d /var/qmail qmaild -s /nonexistent useradd -g nofiles -d /var/qmail qmaill -s /nonexistent useradd -g nofiles -d /var/qmail qmailp -s /nonexistent groupadd qmail useradd -g qmail -d /var/qmail qmailq -s /nonexistent useradd -g qmail -d /var/qmail qmailr -s /nonexistent useradd -g qmail -d /var/qmail qmails -s /nonexistent
- Opprett kataloger og linker:
mkdir /var/qmail if [ -d /usr/man ]; then ln -s /usr/man /var/qmail/man elif [ -d /usr/local/man ]; then ln -s /usr/local/man /var/qmail/man fi mkdir /etc/qmail ln -s /etc/qmail /var/qmail/control ln -s /usr/sbin /var/qmail/bin mkdir -p /var/qmail/supervise/qmail-send/log mkdir -p /var/qmail/supervise/qmail-smtpd/log chmod +t /var/qmail/supervise/qmail-send chmod +t /var/qmail/supervise/qmail-smtpd mkdir -p /var/log/qmail/smtpd chown -R qmaill /var/log/qmail
- Pakk ut kildekode og kompiler:(endret med netqmail-1.06)
cd /usr/local/src tar zvxf <DOWNLOADDIR>/netqmail-1.05.tar.gz cd netqmail-1.05 ./collate.sh cd /usr/local/src/netqmail-1.05/netqmail-1.05 make setup check ./config-fast <hostname>
- Lag boot-script, /var/qmail/rc:
#! /bin/sh # Using stdout for logging # Using control/defaultdelivery from qmail-local to deliver message by default DELIVERY=`cat /etc/qmail/defaultdelivery` if [ -z "$DELIVERY" ]; then echo "/etc/qmail/defaultdelivery is empty or does not exist" 1>&2 exit 1 fi exec env - PATH="/var/qmail/bin:$PATH" qmail-start "$DELIVERY"
Fila kan også hentes her.Så:
echo "./Mailbox" > /etc/qmail/defaultdelivery chmod 644 /etc/qmail/defaultdelivery chmod 755 /var/qmail/rc
./Mailbox kan også være ./Maildir/ - Lag oppstartscript
Lag ei fil /var/qmail/bin/qmailctl:
#!/bin/sh # For Red Hat chkconfig # chkconfig: - 80 30 # description: the qmail MTA PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin export PATH QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` case "$1" in start) echo "Starting qmail" if svok /service/qmail-send ; then svc -u /service/qmail-send else echo qmail-send supervise not running fi if svok /service/qmail-smtpd ; then svc -u /service/qmail-smtpd else echo qmail-smtpd supervise not running fi if [ -d /var/lock/subsys ]; then touch /var/lock/subsys/qmail fi ;; stop) echo "Stopping qmail..." echo " qmail-smtpd" svc -d /service/qmail-smtpd echo " qmail-send" svc -d /service/qmail-send if [ -f /var/lock/subsys/qmail ]; then rm /var/lock/subsys/qmail fi ;; stat) svstat /service/qmail-send svstat /service/qmail-send/log svstat /service/qmail-smtpd svstat /service/qmail-smtpd/log qmail-qstat ;; doqueue|alrm|flush) echo "Flushing timeout table and sending ALRM signal to qmail-send." /var/qmail/bin/qmail-tcpok svc -a /service/qmail-send ;; queue) qmail-qstat qmail-qread ;; reload|hup) echo "Sending HUP signal to qmail-send." svc -h /service/qmail-send ;; pause) echo "Pausing qmail-send" svc -p /service/qmail-send echo "Pausing qmail-smtpd" svc -p /service/qmail-smtpd ;; cont) echo "Continuing qmail-send" svc -c /service/qmail-send echo "Continuing qmail-smtpd" svc -c /service/qmail-smtpd ;; restart) echo "Restarting qmail:" echo "* Stopping qmail-smtpd." svc -d /service/qmail-smtpd echo "* Sending qmail-send SIGTERM and restarting." svc -t /service/qmail-send echo "* Restarting qmail-smtpd." svc -u /service/qmail-smtpd ;; cdb) tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp chmod 644 /etc/tcp.smtp.cdb echo "Reloaded /etc/tcp.smtp." ;; help) cat <<HELP stop -- stops mail service (smtp connections refused, nothing goes out) start -- starts mail service (smtp connection accepted, mail can go out) pause -- temporarily stops mail service (connections accepted, nothing leaves) cont -- continues paused mail service stat -- displays status of mail service cdb -- rebuild the tcpserver cdb file for smtp restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it doqueue -- schedules queued messages for immediate delivery reload -- sends qmail-send HUP, rereading locals and virtualdomains queue -- shows status of queue alrm -- same as doqueue flush -- same as doqueue hup -- same as reload HELP ;; *) echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}" exit 1 ;; esac exit 0Fila kan også hentes her.Lag link og gjør scriptet eksekverbart:
chmod +x /var/qmail/bin/qmailctl ln -s /var/qmail/bin/qmailctl /usr/local/sbin ln -s /var/qmail/bin/qmailctl /etc/init.d/qmail chkconfig --add qmail
- /var/qmail/supervise/qmail-send/run:
#!/bin/sh exec /var/qmail/rc
- /var/qmail/supervise/qmail-send/log/run:
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
- /var/qmail/supervise/qmail-smtpd/run:
#!/bin/sh QMAILDUID=`id -u qmaild` NOFILESGID=`id -g qmaild` MAXSMTPD=`cat /var/qmail/control/concurrencyincoming` LOCAL=`head -1 /var/qmail/control/me` if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll create an open relay" exit 1 fi exec /usr/local/bin/softlimit -m 2000000 \ /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1Fila kan også hentes her.
OBS: Verdien spesifisert (max minne) til softlimit kommandoen må muligens økes avhengig av operativsystem og hardware. Dersom forsøk på å koble seg til port 25 feiler, eller andre maskiner ikke klarer å sende mail kan de t være at du ser meldinger som:/usr/local/bin/tcpserver: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory
prøv å øke verdien til 3000000 eller 4000000 - Lag fila concurrencyincoming:
echo 20 > /etc/qmail/concurrencyincoming chmod 644 /etc/qmail/concurrencyincoming
- /var/qmail/supervise/qmail-smtpd/log/run:
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
- Gjør filene eksekverbare:
chmod 755 /var/qmail/supervise/qmail-send/run chmod 755 /var/qmail/supervise/qmail-send/log/run chmod 755 /var/qmail/supervise/qmail-smtpd/run chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
- link supervise katalogene i /service:
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
qmail starter så etter kort tid. dersom du ikke vil ha qmail kjørende ennå:qmailctl stop
- La localhost få sende via SMTP:
echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp qmailctl cdb
- Filer som må/bør endres:
- /etc/qmail/me (vanligvis navn som skal vises utad)
- /etc/qmail/locals (f.eks localhost og gjeldene domene)
- /etc/qmail/smtproutes (spesiell ruting av mail, sjekker ikke MX)
- /etc/qmail/rcpthosts (domener som mottar mail her)



