HomePage » Mail » Qmail » QmailInstall2


All of the files mentioned below can be found within the qmailrocks package.

Pre-req
tcpserver
RPM: http://rpm.pbone.net/index.php3/stat/3/srodzaj/1/search/ucspi-tcp
SRC: http://cr.yp.to/ucspi-tcp/install.html

patch -p1 < ucspi-tcp-0.88.errno.patch
make
make setup check


Daemontools
http://cr.yp.to/daemontools/install.html

tar xzvf daemontools-0.76.tar.gz
rm -f daemontools-0.76.tar.gz
cd admin/daemontools-0.76
wget http://www.qmailrocks.org/downloads/patches/daemontools-0.76.errno.patch
patch < daemontools-0.76.errno.patch
package/install


QMAIL
(download files from qmailrocks)

tar -zxf qmail-1.03.tar.gz
cd qmail-1.03/
patch < ../patches/qmail-1.03.errno.patch
patch < ../patches/qmail-103.\(bigdns\).patch
#patch < ../patches/qmail-103.patch
patch < ../patches/qmailqueue-patch

mkdir /var/qmail
# On FreeBSD
pw groupadd nofiles
pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
pw groupadd qmail
pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
pw useradd qmails -g qmail -d /var/qmail -s /nonexistent

# on Redhat
groupadd nofiles 
useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
groupadd qmail
useradd qmailq -g qmail -d /var/qmail -s /nonexistent
useradd qmailr -g qmail -d /var/qmail -s /nonexistent
useradd qmails -g qmail -d /var/qmail -s /nonexistent

# compile and install
make setup check

mkdir -vp /var/service/{qmail,smtpd}/{log/supervise,supervise}


/var/service/qmail/run
#!/bin/sh
exec /var/qmail/rc


/var/qmail/rc
#!/bin/sh

# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"


/var/service/qmail/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail


/var/service/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 /service/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 4000000 \
#/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /home/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD" \
#-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

exec /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /home/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1


SMTP with RBL
/var/service/smtpd/run
#!/bin/sh
exec envuidgid qmaild tcpserver -x/home/vpopmail/etc/tcp.smtp.cdb -v -U -R 0 smtp rblsmtpd -r bl.spamcop.net /var/qmail/bin/qmail-smtpd 2>&1


/var/service/smtpd/log/run
#!/bin/sh

#exec setuidgid qmaill multilog t n100 s1000000
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd


Now change permissions and a few other things
chmod -v a+rx /var/service/qmail/run
chmod -v a+rx /var/qmail/rc
echo ./Maildir/ > /var/qmail/control/defaultdelivery
chmod -v a+rx /var/service/qmail/log/run
chmod -v a+rx /var/service/smtpd/run
echo 20 > /var/qmail/control/concurrencyincoming
hostname > /var/qmail/control/me
hostname > /var/qmail/control/rcpthosts
chmod -v a+rx /var/service/smtpd/log/run
mkdir -vp /var/log/qmail/smtpd
chown -v qmaill /var/log/qmail /var/log/qmail/smtpd


get rid of sendmail
/etc/init.d/sendmail stop
chkconfig --del sendmail
mv -vi /usr/sbin/sendmail{,_original}
ln -vs /var/qmail/bin/sendmail /usr/sbin/sendmail

up2date-config #Append sendmail*; to pkgSkipList

ln -s /var/service/qmail /var/service/smtpd /service

VPOPMAIL Redhat/mysql5
groupadd vchkpw
useradd -g vchkpw -d /home/vpopmail vpopmail
./configure --prefix=/home/vpopmail --enable-vpopuser=vpopmail \
--enable-vpopgroup=vchkpw --enable-passwd=y --enable-valias=y \
--enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql \
--enable-auth-module=mysql

		   vpopmail 5.4.13
			Current settings
---------------------------------------

vpopmail directory = /home/vpopmail
			   uid = 509
			   gid = 505
	 roaming users = OFF --disable-roaming-users (default)
 password learning = OFF --disable-learn-passwords (default)
	 md5 passwords = ON  --enable-md5-passwords (default)
	  file locking = ON  --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
	 make seekable = ON  --enable-make-seekable (default)
	  clear passwd = ON  --enable-clear-passwd (default)
 user dir hashing  = ON  --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
		  ip alias = OFF --disable-ip-alias-domains (default)
	   auth module = mysql --enable-auth-module=mysql
 mysql replication = OFF --disable-mysql-replication (default)
	   sql logging = OFF --disable-sql-logging (default)
	  mysql limits = OFF --disable-mysql-limits (default)
	  MySQL valias = ON  --enable-valias
		  auth inc = -I/usr/include/mysql
		  auth lib = -L/usr/lib/mysql  -lmysqlclient -lz -lm
  system passwords = ON  --enable-passwd
		pop syslog = show only failed attempts
					 --enable-logging=e (default)
	  auth logging = ON  --enable-auth-logging (default)
all domains in one SQL table = --enable-many-domains (default)

make
make install-strip


Mysql database
CREATE DATABASE vpopmail;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON vpopmail.* TO
vpopmail@localhost IDENTIFIED BY '*33&woIm<(';


/home/vpopmail/etc/tcp.smtp
127.0.0.1.:allow,RELAYCLIENT=""


tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
chown -v vpopmail:vchkpw /home/vpopmail/etc/tcp.smtp.cdb

echo "localhost|0|vpopmail|*33&woIm<(|vpopmail" > /home/vpopmail/etc/vpopmail.mysql
chown -v vpopmail:vchkpw /home/vpopmail/etc/vpopmail.mysql

touch /var/qmail/control/locals
touch /var/qmail/users/assign


EXTRA
Create an account for one system user setup on a specific site
/home/vpopmail/bin/vadddomain "domain.com" "blah"
/home/vpopmail/bin/vadduser test@domain.com
/home/vpopmail/bin/valias -i test@domain.com notme@domain.com


Patching chkuser-2.0
Get it from http://www.interazioni.it/opensource/chkuser/
AFTER the above is completed, repeat all the steps. Remember to patch in the chkuser patch before make setup check.
NOTE: To enable chkuser by default to all domains, edit the chkuser_settings.h and uncomment the following:

#define CHKUSER_ALWAYS_ON


If installing to older vpopmail (like 5.2.x), disable these by commenting them out.
#define CHKUSER_MBXQUOTA_VARIABLE "CHKUSER_MBXQUOTA
#define CHKUSER_ENABLE_VGET_REAL_DOMAIN

Checking if chkuser works
$ qmail-smtpd
mail from: valid@domain.com
mail from: invalid@domain.com
rcpt to: valid@domain.com
rcpt to: invalid@domain.com


Testing
debian:~# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.domain.com ESMTP
HELO TEST
250 mail.domain.com
EHLO
250-mail.domain.com
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
AUTH LOGIN
334 VXNlcm5hbWU6
cG9zdG1hc3RlckB0ZXN0LmJvZ3Vz
334 UGFzc3dvcmQ6
dGVzdA==
235 ok, postmaster@test.bogus, go ahead (#2.0.0)
mail from: test@nonexact.from
511 sorry, can't find a valid MX for sender domain (#5.1.1 - chkuser)
mail from: test@test.com
250 ok
RCPT TO: notexist@test.bogus
511 sorry, no mailbox here by that name (#5.1.1 - chkuser)
RCPT TO: postmaster@test.bogus
250 ok
quit
221 mail.domain.com
Connection closed by foreign host.


Testing with mail client
When sending to an non-existent address, you should get this error in smtp log
CHKUSER rejected rcpt: from <kf@xx.com::> remote <[192.168.18.11]:xx.yy.com:1.2.3.4> rcpt <somedude@kaukei.info> : not existing recipient


and your mail client will give you 5.1.1 sorry, no mailbox here by that name (chkuser)...

Now it's time to get imap and pop to work and start real testing.

There is one comment on this page. [Display comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki