Qmail, un serveur de messagerie securise

dimanche, 5 décembre 2004


(Soyez le premier!) 1 Star2 Stars3 Stars4 Stars5 Stars
Loading...
Catégorie: Faq/Tutos
par Webmaster
Nombre de lectures: 741 views
Commentaires fermés sur Qmail, un serveur de messagerie securise

Qmail est un serveur SMTP réputé pour sa stabilité et sa sécurité, pour n’avoir jamais été hacké ? ce jour.

Je vais décrire ici l’installation a partir des sources sur une Debian.

Création des répertoires/users:

mkdir /var/qmail
groupadd -g 91 nofiles
groupadd -g 92 qmail useradd -u 91 -g 91 -d /var/qmail/alias -s /bin/false alias
useradd -u 92 -g 91 -d /var/qmail -s /bin/false qmaild
useradd -u 93 -g 91 -d /var/qmail -s /bin/false qmaill
useradd -u 94 -g 91 -d /var/qmail -s /bin/false qmailp
useradd -u 95 -g 92 -d /var/qmail -s /bin/false qmailq
useradd -u 96 -g 92 -d /var/qmail -s /bin/false qmailr
useradd -u 97 -g 92 -d /var/qmail -s /bin/false qmails
mkdir /var/log/qmail
mkdir /var/log/qmail/qmail-send
mkdir /var/log/qmail/qmail-smtpd
mkdir /var/log/qmail/qmail-pop3d
chown -R qmaill.root /var/log/qmail
chmod -R 750 /var/log/qmail mkdir ~alias
chown alias.qmail ~alias
echo tech > /var/qmail/alias/.qmail-root
echo tech > /var/qmail/alias/.qmail-postmaster
echo tech > /var/qmail/alias/.qmail-mailer-daemon
chmod 2755 ~alias
chmod 644 ~alias/.qmail
mkdir /service
chmod 755 /service
mkdir /var/qmail/supervise
chmod 755 /var/qmail/supervise
mkdir /var/qmail/supervise/qmail-smtpd
mkdir /var/qmail/supervise/qmail-smtpd/log
chmod +t /var/qmail/supervise/qmail-smtpd
mkdir /var/qmail/supervise/qmail-send
mkdir /var/qmail/supervise/qmail-send/log
chmod +t /var/qmail/supervise/qmail-send
mkdir /var/qmail/supervise/qmail-pop3d
mkdir /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-pop3d
ln -s /var/qmail/supervise/ /service/

Créer /var/qmail/rc:

#!/bin/sh
exec env – PATH= »/var/qmail/bin:/usr/local/bin » \
qmail-start ./Maildir/

puis:

chmod 700 /var/qmail/rc

Téléchargement des principaux packages:

>wget http://megaz.arbuz.com/download/qmail_patches.tar.gz
wget http://www.shupp.org/patches/qmail-toaster-0.6-1.patch.bz2
wget http://shupp.org/software/netqmail-1.05.tar.gz

Allons-y:

tar -zxvf netqmail-1.05.tar.gz
tar zxf qmail_patches.tar.gz
cd netqmail-1.05/
./collate.sh
bunzip2 -c ../qmail-toaster-0.6-1.patch.bz2 | patch -p0
mv ../qmail_patches/ netqmail-1.05/
cd netqmail-1.05
patch < qmail-doublebounce-trim.patch
patch < qmail-bounce.patch
patch < qmail-bouncecontrol-1.03.patch
patch < qmail-nullenvsender.patch

Le patch chkuser: (permet de vérifier si l’utilisateur existe)

– avec vpopmail/cdb (par défaut)

wget http://www.shupp.org/patches/chkuser-0.6.patch
patch -p1 < chkuser-0.6.patch

– avec vpopmail-mysql

wget http://www.shupp.org/patches/chkuser-0.6.mysql.patch
patch -p1 < chkuser-0.6.mysql.patch

Il faut indiquer le chemin exacte de libmysqlclient.a dans conf-mysql

wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch
patch -p1 < ucspi-tcp-0.88.nobase.patch

Compilation et installationde Qmail

make WITH_QMAILQUEUE_PATCH=yes setup check
./config-fast mon-nom-d-hote.com
echo 255 > /var/qmail/control/concurrencyremote
chmod 644 /var/qmail/control/concurrencyremote
echo 1 > /var/qmail/control/mfchec
echo @spam.com > badmailfrom
echo @spam.com > badrcptto
echo mailer-daemon > bouncefrom
echo yourserver.com > bouncehost
echo 50000 > bouncemaxbytes
echo text > bouncemessage
echo failure notice > bouncesubject
cp bouncehost doublebouncehost
cp bouncemessage doublebouncemessage
cp bouncesubject doublebouncesubject

Daemon tools

mkdir /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -zxvf daemontools-0.76.tar.gz
mv admin/daemontools-0.76/ daemontools-0.76
rmdir admin/
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
patch -p0 < daemontools-0.76.errno.patch
cd daemontools-0.76/
./package/install
cd ..
rm daemontools-0.76.tar.gz daemontools-0.76.errno.patch

TCPServer

wget 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
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.a_record.patch
patch -p1 < ucspi-tcp-0.88.a_record.patch
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
patch -p1 < ucspi-tcp-0.88.errno.patch
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch
patch -p1 < ucspi-tcp-0.88.nobase.patch
make
make setup check
mkdir -p /var/vpopmail/etc/

— autorisation de relay

editer /var/vpopmail/etc/tcp.smtp

127.0.0.1:allow,RELAYCLIENT= » »
198.168.1.:allow,RELAYCLIENT= » »
:allow,QMAILQUEUE= »/var/qmail/bin/qmail-scanner-queue.pl »

puis:

/usr/local/bin/tcprules /var/vpopmail/etc/tcp.smtp.cdb /var/vpopmail/etc/tcp.smtp.tmp < /var/vpopmail/etc/tcp.smtp

chmod 644 /var/vpopmail/etc/tcp.smtp.cdb

Les scripts

/var/qmail/supervise/qmail-pop3d/run
#!/bin/sh
exec /usr/local/bin/tcpserver -H -R -v -c100 0 110 /var/qmail/bin/qmail-popup \
mon-nom-d-hote.com \
/var/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

/var/qmail/supervise/qmail-pop3d/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s100000 \ n20 /var/log/qmail/qmail-pop3d 2>&1

/var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
QMAILQUEUE= »/var/qmail/bin/qmail-scanner-queue.pl » export QMAILQUEUE
exec /usr/local/bin/tcpserver -p -R -x /var/vpopmail/etc/tcp.smtp.cdb \
-u98 -g98 -v -c100 0 smtp rblsmtpd -r relays.ordb.org \
/var/qmail/bin/qmail-smtpd /var/vpopmail/bin/vchkpw /bin/true 2>&1

/var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000 \ n20 /var/log/qmail/qmail-smtpd 2>&1

/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 s5000000 \ n20 /var/log/qmail/qmail-send 2>&1

/etc/init.d/qmail
######################### Debut
#! /bin/sh

case « $1 » in
start)
echo -n « Starting qmail: svscan »
if cd /var/qmail/supervise; then
env – PATH= »/var/qmail/bin:/usr/local/bin:/usr/bin:/bin » svscan &
echo $! > /var/run/svscan.pid
fi
echo « . »
;;
stop)
echo -n « Stopping qmail: svscan »
kill `cat /var/run/svscan.pid`
echo -n  » qmail »
svc -dx /var/qmail/supervise/
echo -n  » logging »
svc -dx /var/qmail/supervise/ /log
echo « . »
;;
stat)
cd /var/qmail/supervise
svstat /log
;;
doqueue|alrm)
echo « Sending ALRM signal to qmail-send. »
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo « Sending HUP signal to qmail-send. »
svc -h /var/qmail/supervise/qmail-send
echo « Sending HUP signal to qmail-pop3d. »
svc -h /var/qmail/supervise/qmail-pop3d
;;
pause)
echo « Pausing qmail-send »
svc -p /var/qmail/supervise/qmail-send
echo « Pausing qmail-smtpd »
svc -p /var/qmail/supervise/qmail-smtpd
echo « Pausing qmail-pop3d »
svc -p /var/qmail/supervise/qmail-pop3d
;;
cont)
echo « Continuing qmail-send »
svc -c /var/qmail/supervise/qmail-send
echo « Continuing qmail-smtpd »
svc -c /var/qmail/supervise/qmail-smtpd
echo « Continuing qmail-pop3d »
svc -c /var/qmail/supervise/qmail-pop3d
;;
restart)
echo « Restarting qmail: »
echo  » Stopping qmail-smtpd. »
svc -d /var/qmail/supervise/qmail-smtpd
echo  » Sending qmail-send SIGTERM and restarting. »
svc -t /var/qmail/supervise/qmail-send
echo  » Restarting qmail-smtpd. »
svc -u /var/qmail/supervise/qmail-smtpd
echo  » Sending qmail-pop3d SIGTERM and restarting. »
svc -t /var/qmail/supervise/qmail-pop3d
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp
echo « Reloaded /etc/tcp.smtp. »
;;
)
echo « Usage: $0
{start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue} »
exit 1
esac
exit 0
######################### FIN

Pour démarrer les services: /etc/init.d/qmail start

Les commentaires sont fermes.