Jump to content

Qmail-Ldap installation2 + dovecot: Difference between revisions

From TetraWiki
Raunaq (talk | contribs)
Created page with " '''''Qmail-LDAP installation on RedHat and CentOS v5.x.x''''' Ensure rpmforge and epel repos are enabled. Switch off SELinux. Flush Iptables rules Create directory for dow..."
 
No edit summary
 
(33 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''''Qmail-LDAP installation on RedHat and CentOS v5.x.x'''''
 
[[Category:Installation]]
[[Category:Qmail]]
 
 
== '''Qmail-LDAP installation on RedHat and CentOS v5.x.x''' ==
 
 


Ensure rpmforge and epel repos are enabled.
Ensure rpmforge and epel repos are enabled.
Switch off SELinux.
Switch off SELinux.
Flush Iptables rules
Flush Iptables rules




Create directory for downloading required packages
Create directory for downloading required packages:
mkdir /downloads
 
cd /downloads
mkdir /downloads
cd /downloads
 
 
Download all required packages for qmail-ldap installation:
 
wget http://www.qmailrocks.org/downloads/qmailrocks.tar.gz
wget http://cr.yp.to/software/qmail-1.03.tar.gz
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://www.qmailrocks.org/downloads/patches/ucspi-tcp-0.88.errno.patch
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
wget http://www.nrg4u.com/qmail/qmail-ldap-1.03-20060201.patch.gz
wget http://lifewithqmail.org/inst_check
wget http://sourceforge.net/projects/courier/files/maildrop/2.5.4/maildrop-2.5.4.tar.bz2/download --no-check-certificate
 
wget http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-2.08.tgz?download
wget http://www.qmailrocks.org/downloads/scripts/finalize/qmailctl
 
wget http://sourceforge.net/projects/phpldapadmin/files/latest/download
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
 
 
Extract packages:
 
tar -xvzf qmailrocks.tar.gz
tar -xvzf phpldapadmin-1.2.2.tgz
tar -xvzf squirrelmail-webmail-1.4.22.tar.gz
tar -xvjf maildrop-2.5.4.tar.bz2
tar -xvzf qmail-scanner-2.08.tgz
tar -xvzf qmailrocks/autorespond-2.0.5.tar.gz
 
 
 
'''Install all required packages before qmail-ldap installation:'''
--------------------------------------------------------------------------------------------------------------
 
yum install vim-enhanced httpd php* php-ldap perl gcc* gcc-c++ gcc44* openssl openssl-devel kernel-headers openssl-devel
kernel-headers patch pcre* db4* openldap* glibc* zlib* glib* gdbm* php
 




####### Download all required packages for qmail-ldap installation ########
'''Create initial qmail directories:'''
wget http://www.qmailrocks.org/downloads/qmailrocks.tar.gz
-------------------------------------------------------------------------------------------------------------
wget http://cr.yp.to/software/qmail-1.03.tar.gz
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://www.qmailrocks.org/downloads/patches/ucspi-tcp-0.88.errno.patch
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget
http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
wget http://www.nrg4u.com/qmail/qmail-ldap-1.03-20060201.patch.gz
wget http://lifewithqmail.org/inst_check
wget
https://sourceforge.net/projects/courier/files/maildrop/2.5.4/maildrop-2.5.4.tar.bz2/download
--no-check-certificate
wget
http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-2.08.tgz?download
wget http://www.qmailrocks.org/downloads/scripts/finalize/qmailctl
wget http://sourceforge.net/projects/phpldapadmin/files/latest/download
wget
http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
tar -xvzf qmailrocks.tar.gz
tar -xvzf phpldapadmin-1.2.2.tgz
tar -xvzf squirrelmail-webmail-1.4.22.tar.gz
tar -xvjf maildrop-2.5.4.tar.bz2
tar -xvzf qmail-scanner-2.08.tgz
tar -xvzf qmailrocks/autorespond-2.0.5.tar.gz


mkdir -p /var/qmail
mkdir /usr/src/qmail


###########################################################################
###### Install all required packages before qmail-ldap installation #######
###########################################################################
yum install vim-enhanced httpd php* php-ldap perl gcc* gcc-c++ gcc44*
openssl openssl-devel kernel-headers openssl-devel kernel-headers patch
pcre* db4* openldap* glibc* zlib* glib* gdbm* php




###########################################################################
'''Creating all needed users and groups:'''
#################### Create initial qmail directories #####################
------------------------------------------------------------------------------------------------------------
###########################################################################
mkdir -p /var/qmail
mkdir /usr/src/qmail




###########################################################################
################## Creating all needed users and groups ###################
###########################################################################
groupadd nofiles
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias -s /sbin/nologin -p'*' alias
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmaild
useradd -g nofiles -d /var/qmail/alias -s /sbin/nologin -p'*' alias
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmaill
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmaild
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmailp
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmaill
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmailp
 
groupadd qmail
groupadd qmail
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmailq
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmailr
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmailq
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmails
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmailr
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmails
groupadd vmail
groupadd vmail
useradd -g vmail -s /bin/true vmail
 
###########################################################################
useradd -g vmail -s /bin/true vmail
 
 
 
'''Unpack qmail and apply the qmail-ldap patch:'''
-----------------------------------------------------------------------------------------------------------
 
 
cd /usr/src/qmail
tar -xvzf /downloads/qmail-1.03.tar.gz
gunzip /downloads/qmail-ldap-1.03-20060201.patch.gz
cd qmail-1.03
patch -p1 < /downloads/qmail-ldap-1.03-20060201.patch
 
 
 
Make changes on "Makefile" to qmail work properly with ldap:
 
 
LDAPFLAGS=-DQLDAP_CLUSTER -DEXTERNAL_TODO -DDASH_EXT -DDATA_COMPRESS-DQMQP_COMPRESS -DSMTPEXECCHECK -DALTQUEUE -DBIGBROTHER
# ZLIB needed for -DDATA_COMPRESS and -DQMQP_COMPRESS
ZLIB=-lz
# to enable the auto-maildir-make feature
MDIRMAKE=-DAUTOMAILDIRMAKE
# to enable the auto-homedir-make feature
HDIRMAKE=-DAUTOHOMEDIRMAKE
# on most systems we need this to make auth_pop and auth_imap
SHADOWLIBS=-lcrypt
# to enable the possibility to log and debug imap and pop
DEBUG=-DDEBUG
 
After that, setup qmail
 
make man
make setup check




###########################################################################
################ Unpack qmail and apply the qmail-ldap patch ##############
###########################################################################
cd /usr/src/qmail
tar -xvzf /downloads/qmail-1.03.tar.gz
gunzip /downloads/qmail-ldap-1.03-20060201.patch.gz
cd qmail-1.03
patch -p1 < /downloads/qmail-ldap-1.03-20060201.patch


'''Creating qmail control files:'''
-----------------------------------------------------------------------------------------------------------


####### Make changes on "Makefile" to qmail work properly with ldap #######
cd /var/qmail/control
---------------------------------------------------------------------------
echo 100 > concurrencyincoming
LDAPFLAGS=-DQLDAP_CLUSTER -DEXTERNAL_TODO -DDASH_EXT -DDATA_COMPRESS
echo 255 > concurrencyremote
-DQMQP_COMPRESS -DSMTPEXECCHECK -DALTQUEUE -DBIGBROTHER
echo ./Maildir/ > defaultdelivery
echo 10000 > defaultquotacount
echo 10000000 > defaultquotasize
echo /var/qmail/bin/dirmaker > dirmaker
echo 0 > ldapcluster
id -g vmail > ldapgid
echo /home/vmail > ldapmessagestore
echo qmailUser > ldapobjectclass
echo secret > ldappassword
echo 127.0.0.1 > ldapserver
id -u vmail > ldapuid
echo 80000000 > qmail-smtpd-softlimit
echo 80000000 > qmail-pop3d-softlimit
echo 3 > qmail-pop3d-loglevel
echo 3 > qmail-start-loglevel
echo MYDOMAIN.com > defaultdomain
echo dc=MYDOMAIN,dc=com > ldapbasedn
echo cn=manager,dc=MYDOMAIN,dc=com > ldaplogin
echo mail.MYDOMAIN.com > me
echo MYDOMAIN.com > rcpthosts
ln -s rcpthosts locals


# ZLIB needed for -DDATA_COMPRESS and -DQMQP_COMPRESS
ZLIB=-lz


# to enable the auto-maildir-make feature
MDIRMAKE=-DAUTOMAILDIRMAKE


# to enable the auto-homedir-make feature
HDIRMAKE=-DAUTOHOMEDIRMAKE


# on most systems we need this to make auth_pop and auth_imap
'''Unpacking ucspi-tcpi and apply the error patch:'''
SHADOWLIBS=-lcrypt
-----------------------------------------------------------------------------------------------------------


# to enable the possibility to log and debug imap and pop
cd /usr/src/qmail
DEBUG=-DDEBUG
tar -xvzf /downloads/ucspi-tcp-0.88.tar.gz
---------------------------------------------------------------------------
cd ucspi-tcp-0.88
patch < /downloads/ucspi-tcp-0.88.errno.patch


make man
make setup check


make && make setup check


###########################################################################
##################### Creating qmail control files ########################
###########################################################################
cd /var/qmail/control
echo 100 > concurrencyincoming
echo 255 > concurrencyremote
echo ./Maildir/ > defaultdelivery
echo 10000 > defaultquotacount
echo 10000000 > defaultquotasize
echo /var/qmail/bin/dirmaker > dirmaker
echo 0 > ldapcluster
id -g vmail > ldapgid
echo /home/vmail > ldapmessagestore
echo qmailUser > ldapobjectclass
echo secret > ldappassword
echo 127.0.0.1 > ldapserver
id -u vmail > ldapuid
echo 80000000 > qmail-smtpd-softlimit
echo 80000000 > qmail-pop3d-softlimit
echo 3 > qmail-pop3d-loglevel
echo 3 > qmail-start-loglevel
echo MYDOMAIN.com > defaultdomain
echo dc=MYDOMAIN,dc=com > ldapbasedn
echo cn=manager,dc=MYDOMAIN,dc=com > ldaplogin
echo mail.MYDOMAIN.com > me
echo MYDOMAIN.com > rcpthosts
ln -s rcpthosts locals
###########################################################################




'''Unpacking daemontools and apply daemontools-error patch:'''
------------------------------------------------------------------------------------------------------------


###########################################################################
############ Unpacking ucspi-tcpi and apply the error patch ###############
###########################################################################
cd /usr/src/qmail
tar -xvzf /downloads/ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch < /downloads/ucspi-tcp-0.88.errno.patch
make && make setup check
###########################################################################


mkdir -p /package
chmod 1755 /package
cd /package
tar -xvzf /downloads/daemontools-0.76.tar.gz
cd /package/admin/daemontools-0.76/src
patch < /downloads/daemontools-0.76.errno.patch
cd /package/admin/daemontools-0.76
package/install


--------------------------------------------------------------------------------------------------------------
Optional


###########################################################################
######### Unpacking daemontools and apply daemontools-error patch #########
###########################################################################
mkdir -p /package
chmod 1755 /package
cd /package
tar -xvzf /downloads/daemontools-0.76.tar.gz
cd /package/admin/daemontools-0.76/src
patch < /downloads/daemontools-0.76.errno.patch
cd /package/admin/daemontools-0.76
package/install
######### Optional ##########
# /command/svscanboot &    #
# /command/svscanboot &    #
# chmod 755 /etc/rc.local  #
# chmod 755 /etc/rc.local  #
#############################
--------------------------------------------------------------------------------------------------------------
###########################################################################
 
 
 
 
'''Creating the supervise script directories:'''
----------------------------------------------------------------------------------------------------------
 
mkdir /var/qmail/supervise
cd /var/qmail/supervise
mkdir -p qmail-smtpd/log qmail-send/log qmail-pop3d/log
chmod +t qmail-smtpd qmail-send qmail-pop3d






###########################################################################
 
################ Creating the supervise script directories ################
'''Creating qmail-smtpd run supervise script:'''
###########################################################################
-----------------------------------------------------------------------------------------------------------
mkdir /var/qmail/supervise
cd /var/qmail/supervise
mkdir -p qmail-smtpd/log qmail-send/log qmail-pop3d/log
chmod +t qmail-smtpd qmail-send qmail-pop3d
###########################################################################




############## Creating qmail-smtpd run supervise script ##################
vim qmail-smtpd/run
vim qmail-smtpd/run
###########################################################################
#!/bin/sh
QUID=`id -u qmaild`
QGID=`id -g qmaild`
MAXD=`head -1 /var/qmail/control/concurrencyincoming`
HOST=`head -1 /var/qmail/control/me`
SOFT=`head -1 /var/qmail/control/qmail-smtpd-softlimit`
CDBF="/etc/tcp.smtp.cdb"


if [ -z "$QUID" -o -z "$QGID" -o -z "$MAXD" -o -z "$HOST" ]; then
#!/bin/sh
QUID=`id -u qmaild`
QGID=`id -g qmaild`
MAXD=`head -1 /var/qmail/control/concurrencyincoming`
HOST=`head -1 /var/qmail/control/me`
SOFT=`head -1 /var/qmail/control/qmail-smtpd-softlimit`
CDBF="/etc/tcp.smtp.cdb"
if [ -z "$QUID" -o -z "$QGID" -o -z "$MAXD" -o -z "$HOST" ]; then
     echo QUID, QGID, MAXD, or HOST is unset in
     echo QUID, QGID, MAXD, or HOST is unset in
     echo /var/qmail/supervise/qmail-smtpd/run
     echo /var/qmail/supervise/qmail-smtpd/run
     exit 1
     exit 1
fi
fi
 
exec            /usr/local/bin/softlimit                -m $SOFT        \
exec            /usr/local/bin/softlimit                -m $SOFT        \
                 /usr/local/bin/tcpserver                -v              \
                 /usr/local/bin/tcpserver                -v              \
                                                         -H              \
                                                         -H              \
Line 207: Line 251:
                               /var/qmail/bin/qmail-smtpd                \
                               /var/qmail/bin/qmail-smtpd                \
             /var/qmail/bin/auth_smtp /usr/bin/true 2>&1
             /var/qmail/bin/auth_smtp /usr/bin/true 2>&1
###########################################################################


############# Creating qmail-smtpd log run supervise script ###############
 
 
 
'''Creating qmail-smtpd log run supervise script:'''
--------------------------------------------------------------------------------------------------------------
 
 
vim qmail-smtpd/log/run
vim qmail-smtpd/log/run
###########################################################################
 
#!/bin/sh
#!/bin/sh
export PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 n20 /var/log/qmail/qmail-smtpd 2>&1
n20 /var/log/qmail/qmail-smtpd 2>&1
 
###########################################################################
 
 
 
'''Creating qmail rc supervise script:'''
--------------------------------------------------------------------------------------------------------




################### Creating qmail rc supervise script ####################
vim /var/qmail/rc
vim /var/qmail/rc
###########################################################################
 
#!/bin/sh
#!/bin/sh
QLOG="`cat /var/qmail/control/qmail-start-loglevel`"
QLOG="`cat /var/qmail/control/qmail-start-loglevel`"
DEFD="`cat /var/qmail/control/defaultdelivery`"
DEFD="`cat /var/qmail/control/defaultdelivery`"
exec env - PATH="/var/qmail/bin:$PATH" LOGLEVEL="$QLOG" qmail-start "$DEFD"
exec env - PATH="/var/qmail/bin:$PATH" LOGLEVEL="$QLOG" qmail-start "$DEFD"
###########################################################################
 
 
 
 
 
'''Creating qmail-send run supervise script:'''
------------------------------------------------------------------------------------------------------------




################ Creating qmail-send run supervise script #################
vim qmail-send/run
vim qmail-send/run
###########################################################################
 
#!/bin/sh
#!/bin/sh
exec /var/qmail/rc
exec /var/qmail/rc
###########################################################################
 
 
 
 
'''Creating qmail-send log run supervise script:'''
----------------------------------------------------------------------------------------------------------




############## Creating qmail-send log run supervise script ###############
vim qmail-send/log/run
vim qmail-send/log/run
###########################################################################
 
#!/bin/sh
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 n20 /var/log/qmail/qmail-send 2>&1
n20 /var/log/qmail/qmail-send 2>&1
 
###########################################################################
 
 
'''Creating qmail-pop3d run supervise script:'''
---------------------------------------------------------------------------------------------------------




################# Creating qmail-pop3d run supervise script ###############
vim qmail-pop3d/run
vim qmail-pop3d/run
###########################################################################
 
#!/bin/sh
#!/bin/sh
IP=`head -1 /var/qmail/control/me`
IP=`head -1 /var/qmail/control/me`
LL=`head -1 /var/qmail/control/qmail-pop3d-loglevel`
LL=`head -1 /var/qmail/control/qmail-pop3d-loglevel`
SL=`head -1 /var/qmail/control/qmail-pop3d-softlimit`
SL=`head -1 /var/qmail/control/qmail-pop3d-softlimit`
exec                                                                    
exec \
    \
         env LOGLEVEL=$LL \
         env LOGLEVEL=$LL                                                
         softlimit -m $SL \
    \
         /usr/local/bin/tcpserver -v -R -H -l 0 0  pop3 \
         softlimit -m $SL                                                
         /var/qmail/bin/qmail-popup $IP \
    \
         /var/qmail/bin/tcp-env \
         /usr/local/bin/tcpserver -v -R -H -l 0 0  pop3                  
         /var/qmail/bin/auth_pop \
    \
         /var/qmail/bin/qmail-popup $IP                                  
    \
         /var/qmail/bin/tcp-env                                          
    \
         /var/qmail/bin/auth_pop                                          
    \
         /var/qmail/bin/qmail-pop3d Maildir 2>&1
         /var/qmail/bin/qmail-pop3d Maildir 2>&1
###########################################################################




############## Creating qmail-pop3d log run supervise script ##############
'''Creating qmail-pop3d log run supervise script:'''
------------------------------------------------------------------------------------------------------
 
 
vim qmail-pop3d/log/run
vim qmail-pop3d/log/run
###########################################################################
 
#!/bin/sh
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 n20 /var/log/qmail/qmail-pop3d 2>&1
n20 /var/log/qmail/qmail-pop3d 2>&1
 
###########################################################################
 
 
 
'''Creating auto directory maker script:'''
------------------------------------------------------------------------------------------------------------




################### Creating auto directory maker script ##################
vim /var/qmail/bin/dirmaker
vim /var/qmail/bin/dirmaker
###########################################################################
#!/bin/sh
echo '----------------------------------------------' >> /tmp/dirmaker
date >> /tmp/dirmaker
echo $1 >> /tmp/dirmaker
id >> /tmp/dirmaker
mkdir --parents -m 700 -p $1/Maildir
mkdir --parents -m 700 -p $1/Maildir/tmp
mkdir --parents -m 700 -p $1/Maildir/cur
mkdir --parents -m 700 -p $1/Maildir/new
chown -R vmail:vmail $1
###########################################################################


#!/bin/sh
echo '----------------------------------------------' >> /tmp/dirmaker
date >> /tmp/dirmaker
echo $1 >> /tmp/dirmaker
id >> /tmp/dirmaker
mkdir --parents -m 700 -p $1/Maildir
mkdir --parents -m 700 -p $1/Maildir/tmp
mkdir --parents -m 700 -p $1/Maildir/cur
mkdir --parents -m 700 -p $1/Maildir/new
chown -R vmail:vmail $1


############ Set permissions of all qmail supervise run scripts ###########
chmod 755 qmail-pop3d/run qmail-smtpd/run qmail-send/run
chmod 755 qmail-pop3d/log/run qmail-smtpd/log/run qmail-send/log/run
chmod 755 /var/qmail/rc /var/qmail/bin/dirmaker
###########################################################################




################## Create tcp.smtp file to appy tcprules #################
'''Set permissions of all qmail supervise run scripts:'''
---------------------------------------------------------------------------------------------------------
   
chmod 755 qmail-pop3d/run qmail-smtpd/run qmail-send/run
chmod 755 qmail-pop3d/log/run qmail-smtpd/log/run qmail-send/log/run
chmod 755 /var/qmail/rc /var/qmail/bin/dirmaker
 
 
 
 
 
'''Create tcp.smtp file to appy tcprules:'''
-----------------------------------------------------------------------------------------------------
 
 
vim /etc/tcp.smtp
vim /etc/tcp.smtp
###########################################################################
127.:allow,RELAYCLIENT="",MAXRCPTCOUNT="200"
192.168.:allow,BLOCKRELAYPROBE="",RCPTCHECK="",SENDERCHECK="",AUTHPREPEND="Authenticated
user:",SANITYCHECK="",SMTPAUTH="",LOGLEVEL="3",AUTHREQUIRED="",MAXRCPTCOUNT="100"
:allow,BLOCKRELAYPROBE="",RCPTCHECK="",SANITYCHECK="",RETURNMXCHECK="STRICT",RBL="",REJECTEXEC="",LOGLEVEL="3",TARPITCOUNT="10",TARPITDELAY="10",SMTPAUTH="",MAXRCPTCOUNT="25"
###########################################################################


127.:allow,RELAYCLIENT="",MAXRCPTCOUNT="200"
192.168.:allow,BLOCKRELAYPROBE="",RCPTCHECK="",SENDERCHECK="",AUTHPREPEND="Authenticated
user:",SANITYCHECK="",SMTPAUTH="",LOGLEVEL="3",AUTHREQUIRED="",MAXRCPTCOUNT="100"
:allow,BLOCKRELAYPROBE="",RCPTCHECK="",SANITYCHECK="",RETURNMXCHECK="STRICT",RBL="",REJECTEXEC="",LOGLEVEL="3",TARPITCOUNT="10",TARPITDELAY="10",SMTPAUTH="",MAXRCPTCOUNT="25"
'''Creating qmail logging directories and set permissions:'''
----------------------------------------------------------------------------------------------------
mkdir /var/log/qmail
cd /var/log/qmail
mkdir qmail-send qmail-smtpd qmail-pop3d
chown -R qmaill:root /var/log/qmail
chmod -R 750 /var/log/qmail
'''Creating qmail alias users, links and set permissions:'''
---------------------------------------------------------------------------------------------------------
cd /var/qmail
cp -p /downloads/qmailctl /var/qmail/bin/.
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin/
qmailctl cdb
mkdir -p /service
cd /service/
ln -s /var/qmail/supervise/qmail-* .
echo admin@prime-pci.com > /var/qmail/alias/.qmail-root
echo admin@prime-pci.com > /var/qmail/alias/.qmail-postmaster
echo admin@prime-pci.com > /var/qmail/alias/.qmail-mailer-daemon
ln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
chmod 644 /var/qmail/alias/.qmail*
'''Stop sendmail and remove all related files:'''
------------------------------------------------------------------------------------------------------------
/etc/init.d/sendmail stop


########### Creating qmail logging directories and set permissions ########
chkconfig sendmail off
mkdir /var/log/qmail
cd /var/log/qmail
mkdir qmail-send qmail-smtpd qmail-pop3d
chown -R qmaill:root /var/log/qmail
chmod -R 750 /var/log/qmail
###########################################################################


mv /usr/lib/sendmail /usr/lib/sendmail.org


########### Creating qmail alias users, links and set permissions #########
mv /usr/sbin/sendmail /usr/sbin/sendmail.org
cd /var/qmail
cp -p /downloads/qmailctl /var/qmail/bin/.
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin/
qmailctl cdb


mkdir -p /service
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
cd /service/
ln -s /var/qmail/supervise/qmail-* .


echo admin@prime-pci.com > /var/qmail/alias/.qmail-root
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
echo admin@prime-pci.com > /var/qmail/alias/.qmail-postmaster
echo admin@prime-pci.com > /var/qmail/alias/.qmail-mailer-daemon
ln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
chmod 644 /var/qmail/alias/.qmail*
###########################################################################




################# Stop sendmail and remove all related files ##############
/etc/init.d/sendmail stop
chkconfig sendmail off
mv /usr/lib/sendmail /usr/lib/sendmail.org
mv /usr/sbin/sendmail /usr/sbin/sendmail.org
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
###########################################################################




############################ Configure OpenLDAP ###########################
'''Configure OpenLDAP:'''
cd /etc/openldap
---------------------------------------------------------------------------------------------------
cp /usr/src/qmail/qmail-1.03/qmail.schema schema/.
 
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
cd /etc/openldap
cp /usr/src/qmail/qmail-1.03/qmail.schema schema/.
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
 


vim /etc/openldap/slapd.conf
vim /etc/openldap/slapd.conf
---------------------------------------------------------------------------
include        /etc/openldap/schema/qmail.schema


database        bdb
include        /etc/openldap/schema/qmail.schema
suffix          "dc=prime-pci,dc=com"
database        bdb
rootdn          "cn=Manager,dc=prime-pci,dc=com"
suffix          "dc=prime-pci,dc=com"
# Cleartext passwords, especially for the rootdn, should
rootdn          "cn=Manager,dc=prime-pci,dc=com"
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Cleartext passwords, especially for the rootdn, should
# Use of strong authentication encouraged.
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# rootpw                secret
# Use of strong authentication encouraged.
# rootpw                {crypt}ijFYNcSNctBYg
# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg
rootpw          secret


rootpw          secret
---------------------------------------------------------------------------




vim /etc/openldap/ldap.conf
vim /etc/openldap/ldap.conf
---------------------------------------------------------------------------
HOST 127.0.0.1
BASE dc=prime-pci,dc=com
---------------------------------------------------------------------------


/etc/init.d/ldap restart
HOST 127.0.0.1
BASE dc=prime-pci,dc=com
 
 
 
/etc/init.d/ldap restart
 
 
 
 
'''Create Domain.ldif file for Base and OU:'''
-----------------------------------------------------------------------------------------------------


mkdir -p /downloads/ldap_ldif
cd /downloads/ldap_ldif


###########################################################################
################ Create Domain.ldif file for Base and OU ##################
###########################################################################
mkdir -p /downloads/ldap_ldif
cd /downloads/ldap_ldif




vim domain.ldif
vim domain.ldif
###########################################################################
# base dn
dn: dc=prime-pci,dc=com
objectClass: dcObject
objectClass: organization
o: prime-pci
dc: prime-pci


# ou, prime-pci.com
# base dn
dn: ou=prime-pci.com,dc=prime-pci,dc=com
dn: dc=prime-pci,dc=com
objectClass: top
objectClass: dcObject
objectClass: organizationalUnit
objectClass: organization
ou: prime-pci.com
o: prime-pci
###########################################################################
dc: prime-pci
# ou, prime-pci.com
dn: ou=prime-pci.com,dc=prime-pci,dc=com
objectClass: top
objectClass: organizationalUnit
ou: prime-pci.com




Line 409: Line 497:
vim admin.ldif
vim admin.ldif
[password=postmaster]
[password=postmaster]
###########################################################################
 
# admin, prime-pci.com
# admin, prime-pci.com
dn: uid=admin,ou=prime-pci.com,dc=prime-pci,dc=com
dn: uid=admin,ou=prime-pci.com,dc=prime-pci,dc=com
objectClass: top
objectClass: top
objectClass: inetOrgPerson
objectClass: inetOrgPerson
objectClass: qmailUser
objectClass: qmailUser
cn: admin admin
cn: admin admin
sn: admin admin
sn: admin admin
mail: admin@prime-pci.com
mail: admin@prime-pci.com
accountStatus: active
accountStatus: active
mailMessageStore: prime-pci.com/admin
mailMessageStore: prime-pci.com/admin
uid: admin
uid: admin
mailHost: node1.prime-pci.com
mailHost: node1.prime-pci.com
deliveryMode: noforward
deliveryMode: noforward
userPassword:: e0NSWVBUfU9XY3dPTS9IekVBT2s=
userPassword:: e0NSWVBUfU9XY3dPTS9IekVBT2s=
###########################################################################
 
 
 
Add domain and admin user's data on LDAP
 
ldapadd -x -D "cn=manager,dc=prime-pci,dc=com" -w secret -f domain.ldif
ldapadd -x -D "cn=manager,dc=prime-pci,dc=com" -w secret -f admin.ldif
 




############### Add domain and admin user's data on LDAP ##################
ldapadd -x -D "cn=manager,dc=prime-pci,dc=com" -w secret -f domain.ldif
ldapadd -x -D "cn=manager,dc=prime-pci,dc=com" -w secret -f admin.ldif
###########################################################################


'''Dovecot installation'''
-------------------------------------------------------------------------------------------------------------




###########################################################################
cd /root/downloads/shashankQmail
################## Compile courier-authlib and install ####################
###########################################################################
cd /downloads/qmailrocks/
tar jxvf courier-authlib-0.55.tar.bz2
cd courier-authlib-0.55
./configure --prefix=/usr/local --exec-prefix=/usr/local --with-authldap
--without-authmysql --disable-root-check --with-ssl
--with-authchangepwdir=/usr/local/libexec/authlib --with-redhat
make && make check
make install-strip && make install-configure


################# Make auth-daemon auto start on startup ##################
tar xvzf dovecot-2.0.14.tar.gz
echo "/usr/local/sbin/authdaemond start" >> /etc/rc.local
###########################################################################


cd dovecot-2.0.14


./configure --without-shadow --without-pam  --without-bsdauth \
--without-gssapi --without-sia --without-vpopmail \
  --without-sql --without-pgsql --without-mysql --without-sqlite \
--with-ssl=openssl --with-libwrap --with-ldap --without-shadow --prefix=/usr


###########################################################################
#################### Compile courier-imap and install #####################
###########################################################################
cd /downloads/qmailrocks/
tar jxvf courier-imap-4.0.2.tar.bz2
useradd bsmith
chown -R bsmith:wheel courier-imap-4.0.2
cd /downloads/qmailrocks/courier-imap-4.0.2
su bsmith
./configure --prefix=/usr/local --exec-prefix=/usr/local
--without-authvchkpw --with-authldap --without-authmysql
--disable-root-check --with-ssl
--with-authchangepwdir=/usr/local/libexec/authlib --with-redhat
make && make check
exit
make install-strip && make install-configure


###########################################################################
make && make install
##### Create IMAP certificate and make changes on configuration files #####
###########################################################################


/usr/local/sbin/mkimapdcert
useradd -d /nonexistent -s /bin/false -c 'Dovecot user' dovecot
vim /usr/local/etc/imapd.cnf  (Change postmaser@example.com an
administrative email address )
---------------------------------------------------------------------------
emailAddress=admin@prime-pci.com
---------------------------------------------------------------------------


mkdir -p /etc/ssl/private/


vim /usr/local/etc/imapd
mkdir -p /etc/ssl/certs/
---------------------------------------------------------------------------
IMAPDSTART=YES
---------------------------------------------------------------------------


cp -pv /usr/share/doc/dovecot/example-config/dovecot.conf
/usr/etc/dovecot/dovecot.conf


vim /usr/local/etc/imapd-ssl
cp -pv /usr/share/doc/dovecot/example-config/dovecot-ldap.conf.ext
---------------------------------------------------------------------------
/usr/etc/dovecot/dovecot-ldap.conf
IMAPDSSLSTART=YES
TLS_CERTFILE=/usr/local/share/imapd.pem
---------------------------------------------------------------------------


ln -s /usr/etc/dovecot/dovecot-ldap.conf
/usr/etc/dovecot/dovecot-ldap-userdb.conf


vim /usr/local/etc/authlib/authdaemonrc
---------------------------------------------------------------------------
authmodulelist="authldap"
authmodulelistorig="authldap"
---------------------------------------------------------------------------


Update slapd.conf by placing this line 'by:


vim /usr/local/etc/authlib/authldaprc
dn="uid=dovecot,ou=mail,dc=example2,dc=com" read' below 'access to attrs=userPassword'.
---------------------------------------------------------------------------
LDAP_SERVER            127.0.0.1
LDAP_PORT              389


LDAP_BASEDN            dc=prime-pci,dc=com
Eg:
LDAP_BINDDN            cn=manager,dc=prime-pci,dc=com
LDAP_BINDPW            secret


LDAP_TIMEOUT            5
access to * by dn="uid=admin,ou=mail,dc=example2,dc=com" write
LDAP_AUTHBIND          1
              by * read
access to attrs=userPassword
              by dn="uid=dovecot,ou=mail,dc=example2,dc=com" read
              by dn="uid=admin,ou=mail,dc=example2,dc=com" write
              by anonymous auth


LDAP_MAIL              uid


LDAP_GLOB_UID          vmail
LDAP_GLOB_GID          vmail


LDAP_HOMEDIR            mailMessageStore
Example dovecot-ldap.conf file (You can copy+paste it):
LDAP_MAILROOT          /home/vmail
----------------------------------------------------------------------------------------------------------
LDAP_MAILDIR            mailbox
LDAP_DEFAULTDELIVERY    defaultDelivery


LDAP_FULLNAME          cn


LDAP_CLEARPW            clearPassword
hosts = localhost
LDAP_CRYPTPW            userPassword
dn =  uid=dovecot,ou=mail,dc=example2,dc=com
dnpass = asdf1234
auth_bind = no
ldap_version = 3
base = dc=example2,dc=com
scope = subtree
#user_attrs = mailMessageStore=home
user_attrs = mailMessageStore=home=/home/vmail/%$
#user_attrs = mail=home:/home/vmail/%d/%n
#user_attrs = mail=maildir:/home/vmail/%d/%n/Maildir
user_filter = (&(objectClass=qmailUser)(uid=%u))
pass_attrs = uid=user,userPassword=password
pass_filter =
(&(objectClass=qmailUser)(uid=%u)(!(accountStatus=disabled))(!(accountStatus=noaccess)))
default_pass_scheme = SSHA


LDAP_DEREF              never


LDAP_TLS                0
---------------------------------------------------------------------------


############ Copy imap and imaps script in init.d directory ###############
Example dovecot.conf file (You can copy+paste it):
cp /usr/local/libexec/imapd.rc /etc/rc.d/init.d/imap
-------------------------------------------------------------------------------------------------------------
cp /usr/local/libexec/imapd-ssl.rc /etc/rc.d/init.d/imaps


############# Make imap and imaps services start on boot ##################
vim /etc/rc.local
----------------------------
/etc/rc.d/init.d/imap  start
/etc/rc.d/init.d/imaps start
----------------------------


################## Restart authdaemon and imap services ###################
auth_verbose = yes
/usr/local/sbin/authdaemond stop
disable_plaintext_auth = no
/usr/local/sbin/authdaemond start
debug_log_path = /var/log/dovecot-debug.log
/etc/rc.d/init.d/imap stop
default_login_user = dovecot
/etc/rc.d/init.d/imaps stop
first_valid_uid = 89
/etc/rc.d/init.d/imap start
info_log_path = /var/log/dovecot-info.log
/etc/rc.d/init.d/imaps start
last_valid_uid = 2000
###########################################################################
log_path = /var/log/dovecot
login_greeting = Shashank's custom qmail!
mail_gid = vmail
mail_location = maildir:~/Maildir
mail_uid = vmail
namespace {
  inbox = yes
  location = maildir:~/Maildir
  prefix = INBOX.
  separator = .
}
passdb {
  args = /usr/etc/dovecot/dovecot-ldap.conf
  driver = ldap
}
protocols = imap
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
  args = /usr/etc/dovecot/dovecot-ldap-userdb.conf
  driver = ldap
}
verbose_proctitle = yes
verbose_ssl = yes
protocol lda {
  postmaster_address = admin@example2.com
}






###########################################################################
Now simply type 'dovecot' at the terminal to start.
################## Install autoresponder and maildrop #####################
###########################################################################
'dovecot stop' stops it.
cd /downloads/autorespond-2.0.5/
'dovecot -n' checks config file.
make && make install


cd /downloads/maildrop-2.5.4
./configure --prefix=/usr/local --exec-prefix=/usr/local
--enable-maildrop-uid=root
make && make install-strip && make install-man




######################## Reload tcp.smtp rules ############################
qmailctl cdb
  OR
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
###########################################################################


'''Install autoresponder and maildrop:'''
---------------------------------------------------------------------------------------------------------


cd /downloads/autorespond-2.0.5/
make && make install
cd /downloads/maildrop-2.5.4
./configure --prefix=/usr/local --exec-prefix=/usr/local --enable-maildrop-uid=root
make && make install-strip && make install-man


###########################################################################
########## Unpack Phpldapadmin and configure to access from Web ###########
###########################################################################
mv /downloads/phpldapadmin-1.2.2 /var/www/html/phpldapadmin
cd /var/www/html/phpldapadmin
mkdir templates/creation.old templates/modification.old
mv templates/creation/* templates/creation.old/
mv templates/modification/* templates/modification.old/
###########################################################################


######################## Increase PHP memory limit ########################
Reload tcp.smtp rules
 
 
 
 
'''Unpack Phpldapadmin and configure to access from Web:'''
---------------------------------------------------------------------------------------------------------
 
 
mv /downloads/phpldapadmin-1.2.2 /var/www/html/phpldapadmin
cd /var/www/html/phpldapadmin
mkdir templates/creation.old templates/modification.old
mv templates/creation/* templates/creation.old/
mv templates/modification/* templates/modification.old/
 
 
 
 
'''Increase PHP memory limit:'''
-------------------------------------------------------------------------------------------------------------
 
vim /etc/php.ini
vim /etc/php.ini
---------------------------------------------------------------------------
memory_limit = 128M
---------------------------------------------------------------------------
###########################################################################


memory_limit = 128M
'''Unpack Squirrelmail and configure to Web access:'''
---------------------------------------------------------------------------------------------------------
mv /downloads/squirrelmail-webmail-1.4.22 /var/www/html/webmail
cd /var/www/html/webmail
mkdir attachements
chown -R apache:apache attachements
chown -R apache:apache data
cd config
./conf.pl
'''Install all required packages for Qmail-Scanner:'''
---------------------------------------------------------------------------------------------------------


yum perl-suidperl perl-Digest-SHA1 perl-Digest-HMAC perl-Net-DNS
perl-Time-HiRes* perl-HTML-Tagset perl-HTML-Parser perl-Pod-Usage*
perl-Parse-Syslog perl-Statistics-Distributions spamassassin clamav clamd


###########################################################################
Add user "qscand" for scanning:
############ Unpack Squirrelmail and configure to Web access ##############
###########################################################################
useradd -c "Qmail-Scanner Account" -s /bin/false -m qscand
mv /downloads/squirrelmail-webmail-1.4.22 /var/www/html/webmail
cd /var/www/html/webmail
mkdir attachements
chown -R apache:apache attachements
chown -R apache:apache data
cd config
./conf.pl
###########################################################################






###########################################################################
########### Install all required packages for Qmail-Scanner ###############
###########################################################################
yum perl-suidperl perl-Digest-SHA1 perl-Digest-HMAC perl-Net-DNS
perl-Time-HiRes* perl-HTML-Tagset perl-HTML-Parser perl-Pod-Usage*
perl-Parse-Syslog perl-Statistics-Distributions spamassassin clamav clamd


###################### Add user "qscand" for scanning #####################
'''Change user clamav to qscand:'''
useradd -c "Qmail-Scanner Account" -s /bin/false -m qscand
-----------------------------------------------------------------------------------------------------------


###################### Change user clamav to qscand #######################
vim /etc/logrotate.d/clamav [Change clamav to qscand]
vim /etc/logrotate.d/clamav [Change clamav to qscand]
---------------------------------------------------------------------------
 
/var/log/clamav/clamd.log {
/var/log/clamav/clamd.log {
    missingok
    missingok
    notifempty
    notifempty
    create 644 qscand qscand
    create 644 qscand qscand
    postrotate
    postrotate
        killall -HUP clamd 2>/dev/null || :
        killall -HUP clamd 2>/dev/null || :
    endscript
    endscript
}
}
---------------------------------------------------------------------------
 
 


vim /etc/logrotate.d/freshclam [Change clamav to qscand]
vim /etc/logrotate.d/freshclam [Change clamav to qscand]
---------------------------------------------------------------------------
 
/var/log/clamav/freshclam.log {
/var/log/clamav/freshclam.log {
    missingok
    missingok
    notifempty
    notifempty
    create 644 qscand qscand
    create 644 qscand qscand
}
}
---------------------------------------------------------------------------
 


vim /etc/clamd.conf
vim /etc/clamd.conf
---------------------------------------------------------------------------
 
User qscand
User qscand
---------------------------------------------------------------------------
 
 


vim /etc/freshclam.conf
vim /etc/freshclam.conf
---------------------------------------------------------------------------
DatabaseOwner qscand
---------------------------------------------------------------------------


chown qscand.qscand /var/log/clamav/ -R
DatabaseOwner qscand
chown -R qscand.qscand /var/run/clamav/
 
/etc/init.d/clamd restart
 
/etc/init.d/spamassassin restart
chown qscand.qscand /var/log/clamav/ -R
###########################################################################
chown -R qscand.qscand /var/run/clamav/
/etc/init.d/clamd restart
/etc/init.d/spamassassin restart






###########################################################################
######################## Install Qmail-Scanner  ###########################
###########################################################################
cd /downloads/qmail-scanner-2.08
./configure --admin admin --domain prime-pci.com
mkdir -p /var/spool/qscan
mkdir -p /var/spool/qscan/quarantine/viruses/tmp
/var/spool/qscan/quarantine/viruses/cur
/var/spool/qscan/quarantine/viruses/new
mkdir -p /var/spool/qscan/quarantine/spam/tmp
/var/spool/qscan/quarantine/spam/cur /var/spool/qscan/quarantine/spam/new
mkdir -p /var/spool/qscan/quarantine/policy/tmp
/var/spool/qscan/quarantine/policy/cur
/var/spool/qscan/quarantine/policy/new
mkdir -p /var/spool/qscan/working/tmp /var/spool/qscan/working/cur
/var/spool/qscan/working/new
mkdir -p /var/spool/qscan/archive/tmp /var/spool/qscan/archive/cur
/var/spool/qscan/archive/new
cp /downloads/qmail-scanner-2.08/quarantine-events.txt /var/spool/qscan/
chown -R qscand:qscand /var/spool/qscan/
cp -pv /downloads/qmail-scanner-2.08/qmail-scanner-queue.pl /var/qmail/bin/
chown qscand.qscand /var/qmail/bin/qmail-scanner-queue.pl
chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
/var/qmail/bin/qmail-scanner-queue.pl -z
/var/qmail/bin/qmail-scanner-queue.pl -g
cp -v /downloads/qmail-scanner-2.08/contrib/logrotate.qmail-scanner
/etc/logrotate.d/qmail-scanner
/etc/init.d/syslog restart


'''Install Qmail-Scanner:'''
------------------------------------------------------------------------------------------------------------
cd /downloads/qmail-scanner-2.08
./configure --admin admin --domain prime-pci.com
mkdir -p /var/spool/qscan
mkdir -p /var/spool/qscan/quarantine/viruses/tmp
/var/spool/qscan/quarantine/viruses/cur
/var/spool/qscan/quarantine/viruses/new
mkdir -p /var/spool/qscan/quarantine/spam/tmp
/var/spool/qscan/quarantine/spam/cur /var/spool/qscan/quarantine/spam/new
mkdir -p /var/spool/qscan/quarantine/policy/tmp
/var/spool/qscan/quarantine/policy/cur
/var/spool/qscan/quarantine/policy/new
mkdir -p /var/spool/qscan/working/tmp /var/spool/qscan/working/cur
/var/spool/qscan/working/new
mkdir -p /var/spool/qscan/archive/tmp /var/spool/qscan/archive/cur
/var/spool/qscan/archive/new
cp /downloads/qmail-scanner-2.08/quarantine-events.txt /var/spool/qscan/
chown -R qscand:qscand /var/spool/qscan/
cp -pv /downloads/qmail-scanner-2.08/qmail-scanner-queue.pl /var/qmail/bin/
chown qscand.qscand /var/qmail/bin/qmail-scanner-queue.pl
chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
/var/qmail/bin/qmail-scanner-queue.pl -z
/var/qmail/bin/qmail-scanner-queue.pl -g
cp -v /downloads/qmail-scanner-2.08/contrib/logrotate.qmail-scanner
/etc/logrotate.d/qmail-scanner
/etc/init.d/syslog restart
'''Integrate Qmail-scanner with qmail queue:'''
----------------------------------------------------------------------------------------------------------------


################# Integrate Qmail-scanner with qmail queue ################
vim /var/qmail/supervise/qmail-smtpd/run
vim /var/qmail/supervise/qmail-smtpd/run
---------------------------------------------------------------------------
 
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" ; export QMAILQUEUE
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" ; export QMAILQUEUE
---------------------------------------------------------------------------
 
 
 
 
'''Check Qmail-scanner Installation:'''
--------------------------------------------------------------------------------------------------------
 
su - tetra
/var/qmail/bin/qmail-scanner-queue.pl -g
/root/downloads/qmail-scanner-2.08/contrib/test_installation.sh -doit
###[ This step generate 2 spam mails and send to the admin e-mail account]###
 




#################### Check Qmail-scanner Installation  ####################
su - tetra
/var/qmail/bin/qmail-scanner-queue.pl -g
/root/downloads/qmail-scanner-2.08/contrib/test_installation.sh -doit
##[ This step generate 2 spam mails and send to the admin e-mail account]##




'''LDAP address book settings on Thunderbird:'''
--------------------------------------------------------------------------------------------------------------


############### LDAP address book settings on Thunderbird #################
Name: LDAP Address Book
Name: LDAP Address Book
Hostname: node1.prime-pci.com
Hostname: node1.prime-pci.com
Base DN: ou=prime-pci.com,dc=prime-pci,dc=com
Base DN: ou=prime-pci.com,dc=prime-pci,dc=com
Port Number: 389
Port Number: 389
###########################################################################

Latest revision as of 04:07, 27 November 2012


Qmail-LDAP installation on RedHat and CentOS v5.x.x[edit]

Ensure rpmforge and epel repos are enabled.

Switch off SELinux.

Flush Iptables rules


Create directory for downloading required packages:

mkdir /downloads
cd /downloads


Download all required packages for qmail-ldap installation:

wget http://www.qmailrocks.org/downloads/qmailrocks.tar.gz

wget http://cr.yp.to/software/qmail-1.03.tar.gz

wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz 

wget http://www.qmailrocks.org/downloads/patches/ucspi-tcp-0.88.errno.patch

wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch

wget http://www.nrg4u.com/qmail/qmail-ldap-1.03-20060201.patch.gz

wget http://lifewithqmail.org/inst_check

wget http://sourceforge.net/projects/courier/files/maildrop/2.5.4/maildrop-2.5.4.tar.bz2/download --no-check-certificate
wget http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-2.08.tgz?download

wget http://www.qmailrocks.org/downloads/scripts/finalize/qmailctl
wget http://sourceforge.net/projects/phpldapadmin/files/latest/download

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm


Extract packages:

tar -xvzf qmailrocks.tar.gz

tar -xvzf phpldapadmin-1.2.2.tgz

tar -xvzf squirrelmail-webmail-1.4.22.tar.gz

tar -xvjf maildrop-2.5.4.tar.bz2

tar -xvzf qmail-scanner-2.08.tgz

tar -xvzf qmailrocks/autorespond-2.0.5.tar.gz


Install all required packages before qmail-ldap installation:


yum install vim-enhanced httpd php* php-ldap perl gcc* gcc-c++ gcc44* openssl openssl-devel kernel-headers openssl-devel 
kernel-headers patch pcre* db4* openldap* glibc* zlib* glib* gdbm* php


Create initial qmail directories:


mkdir -p /var/qmail
mkdir /usr/src/qmail


Creating all needed users and groups:



groupadd nofiles

useradd -g nofiles -d /var/qmail/alias -s /sbin/nologin -p'*' alias
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmaild
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmaill
useradd -g nofiles -d /var/qmail -s /sbin/nologin -p'*' qmailp

groupadd qmail

useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmailq
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmailr
useradd -g qmail -d /var/qmail -s /sbin/nologin -p'*' qmails

groupadd vmail

useradd -g vmail -s /bin/true vmail


Unpack qmail and apply the qmail-ldap patch:



cd /usr/src/qmail
tar -xvzf /downloads/qmail-1.03.tar.gz
gunzip /downloads/qmail-ldap-1.03-20060201.patch.gz
cd qmail-1.03
patch -p1 < /downloads/qmail-ldap-1.03-20060201.patch


Make changes on "Makefile" to qmail work properly with ldap:


LDAPFLAGS=-DQLDAP_CLUSTER -DEXTERNAL_TODO -DDASH_EXT -DDATA_COMPRESS-DQMQP_COMPRESS -DSMTPEXECCHECK -DALTQUEUE -DBIGBROTHER
# ZLIB needed for -DDATA_COMPRESS and -DQMQP_COMPRESS
ZLIB=-lz
# to enable the auto-maildir-make feature
MDIRMAKE=-DAUTOMAILDIRMAKE
# to enable the auto-homedir-make feature
HDIRMAKE=-DAUTOHOMEDIRMAKE
# on most systems we need this to make auth_pop and auth_imap
SHADOWLIBS=-lcrypt
# to enable the possibility to log and debug imap and pop
DEBUG=-DDEBUG

After that, setup qmail

make man

make setup check


Creating qmail control files:


cd /var/qmail/control
echo 100 > concurrencyincoming
echo 255 > concurrencyremote
echo ./Maildir/ > defaultdelivery
echo 10000 > defaultquotacount
echo 10000000 > defaultquotasize
echo /var/qmail/bin/dirmaker > dirmaker
echo 0 > ldapcluster
id -g vmail > ldapgid
echo /home/vmail > ldapmessagestore
echo qmailUser > ldapobjectclass
echo secret > ldappassword
echo 127.0.0.1 > ldapserver
id -u vmail > ldapuid
echo 80000000 > qmail-smtpd-softlimit
echo 80000000 > qmail-pop3d-softlimit
echo 3 > qmail-pop3d-loglevel
echo 3 > qmail-start-loglevel
echo MYDOMAIN.com > defaultdomain
echo dc=MYDOMAIN,dc=com > ldapbasedn
echo cn=manager,dc=MYDOMAIN,dc=com > ldaplogin
echo mail.MYDOMAIN.com > me
echo MYDOMAIN.com > rcpthosts
ln -s rcpthosts locals



Unpacking ucspi-tcpi and apply the error patch:


cd /usr/src/qmail
tar -xvzf /downloads/ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch < /downloads/ucspi-tcp-0.88.errno.patch


make && make setup check


Unpacking daemontools and apply daemontools-error patch:



mkdir -p /package
chmod 1755 /package
cd /package
tar -xvzf /downloads/daemontools-0.76.tar.gz
cd /package/admin/daemontools-0.76/src
patch < /downloads/daemontools-0.76.errno.patch
cd /package/admin/daemontools-0.76
package/install


Optional

# /command/svscanboot & #

# chmod 755 /etc/rc.local #




Creating the supervise script directories:


mkdir /var/qmail/supervise
cd /var/qmail/supervise
mkdir -p qmail-smtpd/log qmail-send/log qmail-pop3d/log
chmod +t qmail-smtpd qmail-send qmail-pop3d



Creating qmail-smtpd run supervise script:



vim qmail-smtpd/run

#!/bin/sh
QUID=`id -u qmaild`
QGID=`id -g qmaild`
MAXD=`head -1 /var/qmail/control/concurrencyincoming`
HOST=`head -1 /var/qmail/control/me`
SOFT=`head -1 /var/qmail/control/qmail-smtpd-softlimit`
CDBF="/etc/tcp.smtp.cdb"
if [ -z "$QUID" -o -z "$QGID" -o -z "$MAXD" -o -z "$HOST" ]; then
   echo QUID, QGID, MAXD, or HOST is unset in
   echo /var/qmail/supervise/qmail-smtpd/run
   exit 1
fi
exec            /usr/local/bin/softlimit                -m $SOFT        \
               /usr/local/bin/tcpserver                -v              \
                                                       -H              \
                                                       -R              \
                                                       -l $HOST        \
                                                       -x $CDBF        \
                                                       -c $MAXD        \
                                                       -u $QUID        \
                                                       -g $QGID        \
                                                       0               \
                                               smtp                    \
                             /var/qmail/bin/qmail-smtpd                \
            /var/qmail/bin/auth_smtp /usr/bin/true 2>&1



Creating qmail-smtpd log run supervise script:



vim qmail-smtpd/log/run

#!/bin/sh
export PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 n20 /var/log/qmail/qmail-smtpd 2>&1



Creating qmail rc supervise script:



vim /var/qmail/rc

#!/bin/sh
QLOG="`cat /var/qmail/control/qmail-start-loglevel`"
DEFD="`cat /var/qmail/control/defaultdelivery`"
exec env - PATH="/var/qmail/bin:$PATH" LOGLEVEL="$QLOG" qmail-start "$DEFD"



Creating qmail-send run supervise script:



vim qmail-send/run

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



Creating qmail-send log run supervise script:



vim qmail-send/log/run

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 n20 /var/log/qmail/qmail-send 2>&1



Creating qmail-pop3d run supervise script:



vim qmail-pop3d/run

#!/bin/sh
IP=`head -1 /var/qmail/control/me`
LL=`head -1 /var/qmail/control/qmail-pop3d-loglevel`
SL=`head -1 /var/qmail/control/qmail-pop3d-softlimit`
exec  \
       env LOGLEVEL=$LL \
       softlimit -m $SL  \
       /usr/local/bin/tcpserver -v -R -H -l 0 0  pop3 \
       /var/qmail/bin/qmail-popup $IP \
       /var/qmail/bin/tcp-env \
       /var/qmail/bin/auth_pop  \
       /var/qmail/bin/qmail-pop3d Maildir 2>&1


Creating qmail-pop3d log run supervise script:



vim qmail-pop3d/log/run

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



Creating auto directory maker script:



vim /var/qmail/bin/dirmaker

#!/bin/sh
echo '----------------------------------------------' >> /tmp/dirmaker
date >> /tmp/dirmaker
echo $1 >> /tmp/dirmaker
id >> /tmp/dirmaker
mkdir --parents -m 700 -p $1/Maildir
mkdir --parents -m 700 -p $1/Maildir/tmp
mkdir --parents -m 700 -p $1/Maildir/cur
mkdir --parents -m 700 -p $1/Maildir/new
chown -R vmail:vmail $1


Set permissions of all qmail supervise run scripts:


chmod 755 qmail-pop3d/run qmail-smtpd/run qmail-send/run
chmod 755 qmail-pop3d/log/run qmail-smtpd/log/run qmail-send/log/run
chmod 755 /var/qmail/rc /var/qmail/bin/dirmaker



Create tcp.smtp file to appy tcprules:



vim /etc/tcp.smtp

127.:allow,RELAYCLIENT="",MAXRCPTCOUNT="200"
192.168.:allow,BLOCKRELAYPROBE="",RCPTCHECK="",SENDERCHECK="",AUTHPREPEND="Authenticated
user:",SANITYCHECK="",SMTPAUTH="",LOGLEVEL="3",AUTHREQUIRED="",MAXRCPTCOUNT="100"
:allow,BLOCKRELAYPROBE="",RCPTCHECK="",SANITYCHECK="",RETURNMXCHECK="STRICT",RBL="",REJECTEXEC="",LOGLEVEL="3",TARPITCOUNT="10",TARPITDELAY="10",SMTPAUTH="",MAXRCPTCOUNT="25"



Creating qmail logging directories and set permissions:



mkdir /var/log/qmail
cd /var/log/qmail
mkdir qmail-send qmail-smtpd qmail-pop3d
chown -R qmaill:root /var/log/qmail
chmod -R 750 /var/log/qmail



Creating qmail alias users, links and set permissions:



cd /var/qmail
cp -p /downloads/qmailctl /var/qmail/bin/.
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin/
qmailctl cdb
mkdir -p /service
cd /service/
ln -s /var/qmail/supervise/qmail-* .
echo admin@prime-pci.com > /var/qmail/alias/.qmail-root
echo admin@prime-pci.com > /var/qmail/alias/.qmail-postmaster
echo admin@prime-pci.com > /var/qmail/alias/.qmail-mailer-daemon
ln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
chmod 644 /var/qmail/alias/.qmail*



Stop sendmail and remove all related files:



/etc/init.d/sendmail stop
chkconfig sendmail off
mv /usr/lib/sendmail /usr/lib/sendmail.org
mv /usr/sbin/sendmail /usr/sbin/sendmail.org
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail



Configure OpenLDAP:


cd /etc/openldap
cp /usr/src/qmail/qmail-1.03/qmail.schema schema/.
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG


vim /etc/openldap/slapd.conf

include         /etc/openldap/schema/qmail.schema
database        bdb
suffix          "dc=prime-pci,dc=com"
rootdn          "cn=Manager,dc=prime-pci,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg
rootpw          secret


vim /etc/openldap/ldap.conf

HOST 127.0.0.1
BASE dc=prime-pci,dc=com


/etc/init.d/ldap restart



Create Domain.ldif file for Base and OU:


mkdir -p /downloads/ldap_ldif
cd /downloads/ldap_ldif


vim domain.ldif

# base dn
dn: dc=prime-pci,dc=com
objectClass: dcObject
objectClass: organization
o: prime-pci
dc: prime-pci
# ou, prime-pci.com
dn: ou=prime-pci.com,dc=prime-pci,dc=com
objectClass: top
objectClass: organizationalUnit
ou: prime-pci.com


vim admin.ldif [password=postmaster]

# admin, prime-pci.com
dn: uid=admin,ou=prime-pci.com,dc=prime-pci,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: qmailUser
cn: admin admin
sn: admin admin
mail: admin@prime-pci.com
accountStatus: active
mailMessageStore: prime-pci.com/admin
uid: admin
mailHost: node1.prime-pci.com
deliveryMode: noforward
userPassword:: e0NSWVBUfU9XY3dPTS9IekVBT2s=


Add domain and admin user's data on LDAP

ldapadd -x -D "cn=manager,dc=prime-pci,dc=com" -w secret -f domain.ldif
ldapadd -x -D "cn=manager,dc=prime-pci,dc=com" -w secret -f admin.ldif



Dovecot installation



cd /root/downloads/shashankQmail
tar xvzf dovecot-2.0.14.tar.gz
cd dovecot-2.0.14
./configure --without-shadow --without-pam  --without-bsdauth \
--without-gssapi --without-sia --without-vpopmail \
 --without-sql --without-pgsql --without-mysql --without-sqlite \
--with-ssl=openssl --with-libwrap --with-ldap --without-shadow --prefix=/usr


make && make install
useradd -d /nonexistent -s /bin/false -c 'Dovecot user' dovecot
mkdir -p /etc/ssl/private/
mkdir -p /etc/ssl/certs/
cp -pv /usr/share/doc/dovecot/example-config/dovecot.conf
/usr/etc/dovecot/dovecot.conf
cp -pv /usr/share/doc/dovecot/example-config/dovecot-ldap.conf.ext
/usr/etc/dovecot/dovecot-ldap.conf
ln -s /usr/etc/dovecot/dovecot-ldap.conf
/usr/etc/dovecot/dovecot-ldap-userdb.conf


Update slapd.conf by placing this line 'by:

dn="uid=dovecot,ou=mail,dc=example2,dc=com" read' below 'access to attrs=userPassword'.

Eg:

access to * by dn="uid=admin,ou=mail,dc=example2,dc=com" write
              by * read
access to attrs=userPassword
              by dn="uid=dovecot,ou=mail,dc=example2,dc=com" read
              by dn="uid=admin,ou=mail,dc=example2,dc=com" write
              by anonymous auth


Example dovecot-ldap.conf file (You can copy+paste it):



hosts = localhost
dn =  uid=dovecot,ou=mail,dc=example2,dc=com
dnpass = asdf1234
auth_bind = no
ldap_version = 3
base = dc=example2,dc=com
scope = subtree
#user_attrs = mailMessageStore=home
user_attrs = mailMessageStore=home=/home/vmail/%$
#user_attrs = mail=home:/home/vmail/%d/%n
#user_attrs = mail=maildir:/home/vmail/%d/%n/Maildir
user_filter = (&(objectClass=qmailUser)(uid=%u))
pass_attrs = uid=user,userPassword=password
pass_filter =
(&(objectClass=qmailUser)(uid=%u)(!(accountStatus=disabled))(!(accountStatus=noaccess)))
default_pass_scheme = SSHA


Example dovecot.conf file (You can copy+paste it):



auth_verbose = yes
disable_plaintext_auth = no
debug_log_path = /var/log/dovecot-debug.log
default_login_user = dovecot
first_valid_uid = 89
info_log_path = /var/log/dovecot-info.log
last_valid_uid = 2000
log_path = /var/log/dovecot
login_greeting = Shashank's custom qmail!
mail_gid = vmail
mail_location = maildir:~/Maildir
mail_uid = vmail
namespace {
 inbox = yes
 location = maildir:~/Maildir
 prefix = INBOX.
 separator = .
}
passdb {
 args = /usr/etc/dovecot/dovecot-ldap.conf
 driver = ldap
}
protocols = imap
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
 args = /usr/etc/dovecot/dovecot-ldap-userdb.conf
 driver = ldap
}
verbose_proctitle = yes
verbose_ssl = yes
protocol lda {
 postmaster_address = admin@example2.com
}


Now simply type 'dovecot' at the terminal to start.

'dovecot stop' stops it.
'dovecot -n' checks config file.



Install autoresponder and maildrop:


cd /downloads/autorespond-2.0.5/
make && make install
cd /downloads/maildrop-2.5.4
./configure --prefix=/usr/local --exec-prefix=/usr/local --enable-maildrop-uid=root
make && make install-strip && make install-man


Reload tcp.smtp rules



Unpack Phpldapadmin and configure to access from Web:



mv /downloads/phpldapadmin-1.2.2 /var/www/html/phpldapadmin
cd /var/www/html/phpldapadmin
mkdir templates/creation.old templates/modification.old
mv templates/creation/* templates/creation.old/
mv templates/modification/* templates/modification.old/



Increase PHP memory limit:


vim /etc/php.ini

memory_limit = 128M



Unpack Squirrelmail and configure to Web access:


mv /downloads/squirrelmail-webmail-1.4.22 /var/www/html/webmail
cd /var/www/html/webmail
mkdir attachements
chown -R apache:apache attachements
chown -R apache:apache data
cd config
./conf.pl



Install all required packages for Qmail-Scanner:


yum perl-suidperl perl-Digest-SHA1 perl-Digest-HMAC perl-Net-DNS
perl-Time-HiRes* perl-HTML-Tagset perl-HTML-Parser perl-Pod-Usage*
perl-Parse-Syslog perl-Statistics-Distributions spamassassin clamav clamd

Add user "qscand" for scanning:

useradd -c "Qmail-Scanner Account" -s /bin/false -m qscand



Change user clamav to qscand:



vim /etc/logrotate.d/clamav [Change clamav to qscand]

/var/log/clamav/clamd.log {
    missingok
    notifempty
    create 644 qscand qscand
    postrotate
        killall -HUP clamd 2>/dev/null || :
    endscript
}


vim /etc/logrotate.d/freshclam [Change clamav to qscand]

/var/log/clamav/freshclam.log {
    missingok
    notifempty
    create 644 qscand qscand
}


vim /etc/clamd.conf

User qscand


vim /etc/freshclam.conf

DatabaseOwner qscand


chown qscand.qscand /var/log/clamav/ -R
chown -R qscand.qscand /var/run/clamav/
/etc/init.d/clamd restart
/etc/init.d/spamassassin restart



Install Qmail-Scanner:



cd /downloads/qmail-scanner-2.08
./configure --admin admin --domain prime-pci.com
mkdir -p /var/spool/qscan
mkdir -p /var/spool/qscan/quarantine/viruses/tmp
/var/spool/qscan/quarantine/viruses/cur
/var/spool/qscan/quarantine/viruses/new
mkdir -p /var/spool/qscan/quarantine/spam/tmp
/var/spool/qscan/quarantine/spam/cur /var/spool/qscan/quarantine/spam/new
mkdir -p /var/spool/qscan/quarantine/policy/tmp
/var/spool/qscan/quarantine/policy/cur
/var/spool/qscan/quarantine/policy/new
mkdir -p /var/spool/qscan/working/tmp /var/spool/qscan/working/cur
/var/spool/qscan/working/new
mkdir -p /var/spool/qscan/archive/tmp /var/spool/qscan/archive/cur
/var/spool/qscan/archive/new
cp /downloads/qmail-scanner-2.08/quarantine-events.txt /var/spool/qscan/
chown -R qscand:qscand /var/spool/qscan/
cp -pv /downloads/qmail-scanner-2.08/qmail-scanner-queue.pl /var/qmail/bin/
chown qscand.qscand /var/qmail/bin/qmail-scanner-queue.pl
chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
/var/qmail/bin/qmail-scanner-queue.pl -z 
/var/qmail/bin/qmail-scanner-queue.pl -g
cp -v /downloads/qmail-scanner-2.08/contrib/logrotate.qmail-scanner
/etc/logrotate.d/qmail-scanner
/etc/init.d/syslog restart 



Integrate Qmail-scanner with qmail queue:


vim /var/qmail/supervise/qmail-smtpd/run

QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" ; export QMAILQUEUE



Check Qmail-scanner Installation:


su - tetra
/var/qmail/bin/qmail-scanner-queue.pl -g
/root/downloads/qmail-scanner-2.08/contrib/test_installation.sh -doit
###[ This step generate 2 spam mails and send to the admin e-mail account]###



LDAP address book settings on Thunderbird:


Name: LDAP Address Book
Hostname: node1.prime-pci.com
Base DN: ou=prime-pci.com,dc=prime-pci,dc=com
Port Number: 389