Instalace mailserveru
Z Dragon's Wiki
Server qmail
Před instalací
Nejprve stáhneme potřebné zdrojáky a patche:
- qmail-1.03.tar.gz
- qmail-1.03-aio-patch-lastest.gz
- ucspi-tcp-0.88.tar.gz
- stunnel-4.20.tar.gz
- daemontools-0.76.tar.gz
- vpopmail-5.4.17.tar.gz
- courier-authlib-vchkpw_0.58-4.dotdeb.1_i386.deb
- qmail-scanner-2.01.tgz
- q-s-2.01st-20070204.patch.gz
- autorespond-2.0.2.tar.gz
- ezmlm-0.53-idx-0.41.tar.gz
- qmailadmin-1.2.9.tar.gz
- roundcubemail-0.1-rc2.tar.gz
- squirrelmail-1.4.9a.tar.gz
- qmhandle-1.2.3.tar.gz
Poté nainstalujeme balíky potřebné ke kompilaci a pozdějšímu běhu serveru:
apt-get install make gcc g++ patch openssl libssl-dev courier-pop courier-pop-ssl courier-imap \ courier-imap-ssl courier-maildrop clamav-daemon spamassassin spamc unzip perl-suid psmisc
Kompilace
qmail-1.03.tar.gz
- Vytvoříme potřebné uživatelské skupiny a účty:
groupadd nofiles useradd -g nofiles -d /var/qmail/alias -s /bin/false alias useradd -g nofiles -d /var/qmail -s /bin/false qmaild useradd -g nofiles -d /var/qmail -s /bin/false qmaill useradd -g nofiles -d /var/qmail -s /bin/false qmailp groupadd qmail useradd -g qmail -d /var/qmail -s /bin/false qmailq useradd -g qmail -d /var/qmail -s /bin/false qmailr useradd -g qmail -d /var/qmail -s /bin/false qmails
- Poté opatchujeme a zkompilujeme:
~/src# gzip -d qmail-1.03-aio-patch-lastest.gz ~/src/qmail-1.03# patch < ../qmail-1.03-aio-patch-lastest ~/src/qmail-1.03# make setup check
- Nakonec vytvoříme certifikát:
~/src/qmail-1.03# make cert
ucspi-tcp-0.88.tar.gz
- Je třeba opravit soubor
error.hpřidáním řádku:
#include <errno.h>- Následně zkompilujeme:
~/src/ucspi-tcp-0.88# make setup check
stunnel-4.20.tar.gz
- Spustíme
./configures debianími parametry a zkompilujeme:
~/src/stunnel-4.20# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var ~/src/stunnel-4.20# make && make install
- Poté vyplníme parametry cerfitikátu
daemontools-0.76.tar.gz
- Opravíme soubor
src/error.hpřidáním řádku:
#include <errno.h>- Nainstalujeme a instalaci předěláme:
~/src/admin/daemontools-0.76# package/install ~/src/admin/daemontools-0.76# cp command/* /usr/bin ~/src/admin/daemontools-0.76# rm -r /command /service
- Ze souboru
/etc/inittabodstraníme nově přidaný řádek:
SV:123456:respawn:/command/svscanboot
vpopmail-5.4.17.tar.gz
- Přidáme potřebného uživatele a skupinu:
groupadd -g 89 vchkpw useradd -g vchkpw -u 89 -d /var/spool/vpopmail vpopmail
- A zkompilujeme:
~/src/vpopmail-5.4.17# ./configure && make && make install
courier-authlib-vchkpw_0.58-4.dotdeb.1_i386.deb
- Balíček je určen pro Debian Etch 4.0 a nainstalujeme standardním příkazem:
dpkg -i ./courier-authlib-vchkpw_0.58-4.dotdeb.1_i386.deb
qmail-scanner-2.01.tgz
- Upravíme konfiguraci spamassassina v
/etc/default/spamassassina spustíme ho:
ENABLED=1 OPTIONS="--create-prefs --max-children 5 --helper-home-dir -v -u vpopmail --nouser-config"
/etc/init.d/spamassassin start
- Přidáme potřebného uživatele a skupinu:
groupadd qscand useradd -c "Qmail-Scanner Account" -g qscand -d /var/spool/qmailscan -s /bin/false qscand
- Opatchujeme qmail-scanner:
~/src# gzip -d q-s-2.01st-20070204.patch.gz ~/src/qmail-scanner-2.01# patch -p1 < ../q-s-2.01st-20070204.patch
- Spustíme instalační skript s obdobnými parametry:
~/src/qmail-scanner-2.01# ./configure --qs-user qscand --spooldir /var/spool/qmailscan \ --admin trash --domain kraja.cz --admin-description "KRAJA.CZ Trash" --notify sender,recips \ --local-domains kraja.cz --silent-viruses auto --virus-to-delete 0 --skip-text-msgs 1 --lang cs_CZ \ --debug 0 --minidebug 1 --add-dscr-hdrs 1 --dscr-hdrs-text "X-Qmail-Scanner" --normalize yes \ --archive 0 --settings-per-domain 0 --max-scan-size 100000000 --unzip 1 --max-zip-size 1000000000 \ --max-unpacked-files 10000 --redundant 1 --log-details syslog --log-crypto 0 --fix-mime 2 \ --ignore-eol-check 0 --sa-subject "[SPAM]" --sa-delta 0 --sa-alt 0 --sa-debug 0 --sa-report 0 \ --sa-quarantine 0 --sa-delete 5 --sa-reject 1 --scanners "fast_spamassassin,clamdscan" --install 1
- Spustíme finální test:
usermod -s /bin/bash qscand su qscand -c '/var/qmail/bin/qmail-scanner-queue.pl -g'
autorespond-2.0.2.tar.gz
- Obyčejná kompilace:
~/src/autorespond-2.0.2# make && make install
ezmlm-0.53-idx-0.41.tar.gz
- Opět obyčejná kompilace:
~/src/ezmlm-0.53-idx-0.41# make && make setup
qmailadmin-1.2.9.tar.gz
- Spustíme instalační skript a následně kompilaci:
~/src/qmailadmin-1.2.9# ./configure --enable-htmldir=/home/www --enable-cgibindir=/usr/lib/cgi-bin ~/src/qmailadmin-1.2.9# make && make install-strip
qmhandle-1.2.3.tar.gz
- Pouze zkopírujeme na patřičné místo:
~/src# cp qmHandle /var/qmail/bin/qmhandle
Konfigurace
Init skript
- V
/etc/init.dvytvoříme souborqmail, do něj vložíme následující skript a případně změníme proměnnoumailhost:
#! /bin/sh # # Qmail-init-script # # description: Qmail, the low-impact mail server. # qmail ENV settings PATH="/var/qmail/bin:/usr/local/sbin:/usr/local/bin:$PATH"; export PATH QMAILQUEUE="/var/qmail/bin/check-client"; export QMAILQUEUE AUTH=1; export AUTH ALLOW_INSECURE_AUTH=1; export ALLOW_INSECURE_AUTH MFCHECK=1; export MFCHECK # local variables mailhost=mail.kraja.cz qmaild=`id -u qmaild` nofiles=`id -g qmaild` smtpconf=/etc/stunnel/smtp.conf cdb=/var/spool/vpopmail/etc/smtp.cdb pop3=yes pop3ssl=yes smtpssl=yes maxcon=`head -1 /var/qmail/control/concurrencysmtpd` memlimit=16000000 [ -n "$mailhost" ] || mailhost=`hostname -f` case "$1" in restart) $0 stop sleep 1 $0 start ;; start) if test -f /var/run/qmail.pid ; then echo Qmail is already running. exit 1 fi echo "Starting Qmail MTA:" echo -n " sender: " qmail-start ./Maildir/ splogger qmail >/dev/null 2>&1 & sleep 0.5 pid=`ps ax | grep qmail-send | grep -v grep | \ sed -e 's/^ *//' | cut -d' ' -f1` if [ -n "$pid" ] ; then echo $pid >/var/run/qmail.pid echo "ok." else echo "failed!" exit 1 fi echo -n " receiver: " softlimit -m $memlimit \ tcpserver -R -x $cdb -c $maxcon -u vpopmail -g vchkpw 0 smtp qmail-smtpd $mailhost \ /var/spool/vpopmail/bin/vchkpw /bin/true 2>&1 \ | splogger smtp & if [ "$?" != "0" ] ; then exit "failed!" fi if [ "$?" != "0" ] ; then exit "failed!" exit 1 else echo "ok." fi echo -n " Auth-daemon: " /etc/init.d/courier-authdaemon start echo -n " IMAP-server: " /etc/init.d/courier-imap start if [ -n "$pop3" ] ; then echo -n " POP3-server: " /etc/init.d/courier-pop start fi if [ -n "$smtpssl" ] ; then echo -n " SMTP/SSL-wrapper: " softlimit -m $memlimit \ tcpserver -R -x $cdb -c $maxcon -u vpopmail -g vchkpw 0 465 \ stunnel $smtpconf 2>&1 | splogger smtp & if [ "$?" != "0" ] ; then exit "failed!" exit 1 else echo "ok." fi fi if [ -n "$pop3ssl" ] ; then echo -n " POP3/SSL-wrapper: " /etc/init.d/courier-pop-ssl start fi echo -n " IMAP/SSL-wrapper: " /etc/init.d/courier-imap-ssl start echo "done." ;; stop) test -f /var/run/qmail.pid || exit 0 echo "Stopping Qmail MTA: " killall tcpserver kill `cat /var/run/qmail.pid` /etc/init.d/courier-authdaemon stop /etc/init.d/courier-pop stop /etc/init.d/courier-pop-ssl stop /etc/init.d/courier-imap stop /etc/init.d/courier-pop-ssl stop /etc/init.d/courier-imap stop /etc/init.d/courier-imap-ssl stop if [ "$?" = "0" ] ; then rm -f /var/run/qmail.pid echo "done." else echo "failed!" exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac
- Vlezeme do
/var/spool/vpopmail/etca provedeme příkazy:
echo ':allow,QMAILQUEUE="/var/qmail/bin/check-client"' > smtp tcprules smtp.cdb smtp.tmp < smtp
- Díky cdb databázi můžeme jednodušše ovlivňovat různé ENV proměnné podle IP adresy odesílatele.
- Ve
/var/qmail/binvytvoříme souborcheck-client, jehož obsah bude následující:
#!/bin/sh if [ -n "$SMTP_AUTH_USER" ]; then /var/qmail/bin/qmail-queue else /var/qmail/bin/qmail-scanner-queue.pl fi
- Odebereme základní balík stávajícího MTA exim4, zastavíme jeho činnost a upravíme init:
apt-get remove exim4 /etc/init.d/exim4 stop mv /etc/rc2.d/S20exim4 /etc/rc2.d/s20exim4 mv /etc/rc0.d/K20exim4 /etc/rc0.d/k20exim4 ln -s ../init.d/qmail /etc/rc2.d/S20qmail ln -s ../init.d/qmail /etc/rc0.d/K20qmail
- Upravíme sendmail:
mv /usr/sbin/sendmail /usr/sbin/sendmail.old ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
Cron
- Upravíme
/etc/crontab, vložíme:
# qmail */5 * * * * root if [ `ps -e | grep -c qmail-lspawn` = '0' ]; then /etc/init.d/qmail restart; fi 0 0 * * * root /var/qmail/bin/update_tmprsadh > /dev/null
stunnel
- Vytvoříme soubor
/etc/stunnel/smtp.confa do něj vložíme (opět třeba přepsat hosta vexecargs):
# /etc/stunnel/smtp.conf exec = /var/qmail/bin/qmail-smtpd execargs = qmail-smtpd mail.kraja.cz /var/spool/vpopmail/bin/vchkpw /bin/true
- Nastavíme stunnel:
cd /etc/stunnel cp stunnel.conf-sample stunnel.conf
- A v souboru
stunnel.confpřepíšeme tyto řádky:
cert = /etc/stunnel/stunnel.pem sslVersion = all chroot = /var setuid = vpopmail setgid = vchkpw pid = /run/stunnel.pid
Courier POP3 & IMAP
- V souboru
/etc/courier/authdaemonrczměníme řádek:
authmodulelist="authvchkpw"
- Editujeme soubory
imapd.cnfapop3d.cnfve složce/etc/courier/, nastavíme certifikáty a spustíme:
rm imapd.pem pop3d.pem dpkg-reconfigure courier-imap-ssl courier-pop-ssl
- Nyní máme opět vygenerované potřebné certifikáty.
ClamAV
- Přenastavíme práva složek pro clamd:
chown -R qscand:qscand /var/spool/qmailscan /var/spool/qscan /var/run/clamav /var/log/clamav chown qscand:qscand /var/log/clamav/clamav.log rm /var/run/clamav/clamav.ctl
- Upravíme
/etc/clamav/clamd.confnásledovně:
User qscand ScanMail true DetectBrokenExecutables true
- A nezapomeneme upravit
/etc/logrotate.d/clamav-daemon, aby nám nepřepisoval práva:
create 640 qscand adm
Qmail
- Vlezeme do složky
/var/qmail/controla začneme vytvářet potřebné soubory:
echo "mail.kraja.cz" > _server echo "kraja.cz" > defaultdomain ln -s _server locals ln -s _server me ln -s _server plusdomain echo "86400" > queuelifetime echo "40" > concurrencylocal echo "20" > concurrencyremote echo "40" > concurrencysmtpd openssl ciphers > tlsserverciphers openssl ciphers > tlsclientciphers
- Pozn.: poslední 3 hodnoty závisí na výkonu serveru, pravděpodobně bude nutno je změnit.
- Nyní je potřeba správně definovat aliasy ve
/var/qmail/alias:
echo "#" > .qmail-doublebounce echo "&trash@kraja.cz" > .trash ln -s .trash .qmail-root ln -s .trash .qmail-postmaster ln -s .trash .qmail-mailer-daemon chown alias .*
Webmaily
Jako webmail klient je možno použít výborný RoundCube, SquirrelMail, IlohaMail, Horde webmail nebo Uebimiau. Jejich instalace je velice jednoduchá a nevyžaduje odborný návod.

