All of the files mentioned below can be found within the qmailrocks package.
Pre-req
tcpserverRPM: 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
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`"
# 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
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
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
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
#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
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/sendmailup2date-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<(';
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 logCHKUSER 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]