Instalace mailserveru

Z Dragon's Wiki

Přejít na: navigace, hledání

Obsah

Server qmail

Před instalací

Nejprve stáhneme potřebné zdrojáky a patche:

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.h př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 ./configure s 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.h př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/inittab odstraní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/spamassassin a 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.d vytvoříme soubor qmail, do něj vložíme následující skript a případně změníme proměnnou mailhost:
#! /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/etc a 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/bin vytvoříme soubor check-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.conf a do něj vložíme (opět třeba přepsat hosta v execargs):
# /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.conf př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/authdaemonrc změníme řádek:
 authmodulelist="authvchkpw"
  • Editujeme soubory imapd.cnf a pop3d.cnf ve 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.conf ná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/control a 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.

soukromý prostor