Jump to content

Qmail LDAP Configuration for Kortek Electronics

From TetraWiki


qmail LDAP Configuration.[edit]

Qmail Downloads[edit]

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

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

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm

yum install gcc*

yum install openldap*

yum install zlib*

yum install glib

yum install gdbm*

yum install openssl-devel

yum install php*

Qmail Users / groups[edit]

mkdir -p /var/qmail

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

Qmail Compilation[edit]

mkdir -p /var/qmail

mkdir /usr/src/qmail

cd /usr/src/qmail

tar xvzf /downloads/qmailrocks/qmail-1.03.tar.gz

cd qmail-1.03

cd /downloads

gzip -d qmail-ldap-1.03-20060201.patch.gz

cd /usr/src/qmail/qmail-1.03

patch -p1 < /downloads/qmail-ldap-1.03-20060201.patch


vim Makefile

-------------------------------------------------------------------------------------------


LDAPFLAGS=-DQLDAP_CLUSTER -DEXTERNAL_TODO -DDASH_EXT -DDATA_COMPRESS -DQMQP_COMPRESS -DSMTPEXECCHECK -DALTQUEUE

ZLIB=-lz

MDIRMAKE=-DAUTOMAILDIRMAKE

HDIRMAKE=-DAUTOHOMEDIRMAKE

SHADOWLIBS=-lcrypt

DEBUG=-DDEBUG

-----------------------------------------------------------------------------------------


vi extra.h

----------------

#ifndef EXTRA_H

#define EXTRA_H


#define QUEUE_EXTRA "Tarch\0"

#define QUEUE_EXTRALEN 6


#endif

----------------

make setup check


Qmail Configration and LDAP controls files[edit]

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


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


cd /var/qmail/control

echo 100 > concurrencyincoming

echo 255 > concurrencyremote

echo ./Maildir/ > defaultdelivery

echo kortekelectronics.com > defaultdomain

echo 10000 > defaultquotacount

echo 10000000 > defaultquotasize

echo /var/qmail/bin/dirmaker > dirmaker

echo dc=kortekelectronics,dc=com > ldapbasedn

echo 0 > ldapcluster

id -g vmail > ldapgid

echo cn=manager,dc=kortekelectronics,dc=com > ldaplogin

echo /home/vmail > ldapmessagestore

echo qmailUser > ldapobjectclass

echo p4mail1server > ldappassword

echo 127.0.0.1 > ldapserver

id -u vmail > ldapuid

echo mail1.kortekelectronics.com > me

echo 127.:allow,NOPBS="" :deny > qmail-pop3d.rules

echo 800000000 > qmail-smtpd-softlimit

echo 3 > qmail-start-loglevel

echo 3 > qmail-pop3d-loglevel

echo 800000000 > qmail-pop3d-softlimit

echo " Your mail quota is overflowing, check it out" > quotawarning

echo kortekelectronics.com >> rcpthosts

echo mail1.kortekelectronics.com >> rcpthosts

ln -s rcpthosts locals


echo admin@kortekelectronics.com > /var/qmail/alias/.qmail-root

echo admin@kortekelectronics.com > /var/qmail/alias/.qmail-postmaster

echo admin@kortekelectronics.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*


cd /var/qmail


vi 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

---------------------------------------------------------------------------------------


vi 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"

--------------------------------------------------------------------------------------------


chmod 755 rc bin/dirmaker


UCSPI-TCP / Daemontools Install[edit]

cd /usr/src/qmail

tar zxvf /downloads/qmailrocks/ucspi-tcp-0.88.tar.gz

cd ucspi-tcp-0.88

patch < /downloads/qmailrocks/patches/ucspi-tcp-0.88.errno.patch

make && make setup check


mkdir -p /package

chmod 1755 /package

cd /package

tar zxvf /downloads/qmailrocks/daemontools-0.76.tar.gz

cd /package/admin/daemontools-0.76/src

patch < /downloads/qmailrocks/patches/daemontools-0.76.errno.patch

cd /package/admin/daemontools-0.76

package/install


Qmail Run Files[edit]

cd /var/qmail/supervise


vi 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


---------------------------------------------------------------------------------------------


vi qmail-smtpd/log/run

---------------------------------------------------------------------------------------------

#!/bin/sh

PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin

export PATH

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s10000000 n20 /var/log/qmail/qmail-smtpd 2>&1

---------------------------------------------------------------------------------------------


vi qmail-send/run

---------------------------------------------------------------------------------------------

#!/bin/sh

exec /var/qmail/rc

---------------------------------------------------------------------------------------------


vi 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

----------------------------------------------------------------------------------------------


vi 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


vi qmail-pop3d/log/run

--------------------------------------------------------------

#!/bin/sh

PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin

export PATH

exec setuidgid qmaill multilog t s10000000 n20 /var/log/qmail/qmail-pop3d 2>&1 --------------------------------------------------------------


vi /etc/tcp.smtp

---------------------------------------------------------------------------------------------------

127.:allow,RELAYCLIENT="",MAXRCPTCOUNT="25"

10.:allow,RELAYCLIENT="",MAXRCPTCOUNT="25"

deny


#10.:allow,RELAYCLIENT="",SMTPAUTH="",AUTHREQUIRED="",SENDERCHECK="",LOGLEVEL="3",RCPTCHECK="",NOPBS="",SANITYCHECK="",BLCKRELAYPRBE=""

---------------------------------------------------------------------------------------------------


cd /var/qmail

rsync -avur /downloads/qmailrocks/scripts/finalize/qmailctl bin/.

ln -s /var/qmail/bin/qmailctl /usr/bin


Qmail others configuration[edit]

/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


cd /var/qmail/supervise/

chmod +x */run

chmod +x */log/run


mkdir -p /service

ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /var/qmail/supervise/qmail-pop3d /service


OPENLDAP Integration with QMAIL-LDAP[edit]

Configuration[edit]

cd /downloads

wget http://phpqladmin.com/phpQLAdmin-2.2.7.tar.gz

tar zxvf /downloads/phpQLAdmin-2.2.7.tar.gz


cd /etc/openldap

cp /usr/src/qmail/qmail-1.03/qmail.schema schema/.

cp /downloads/phpQLAdmin-2.2.7/schemas/phpQLAdmin.schema schema/.


vim slapd.conf

-----------------------------------------------------------------------------------------------------

include /etc/openldap/schema/core.schema

include /etc/openldap/schema/cosine.schema

include /etc/openldap/schema/inetorgperson.schema

include /etc/openldap/schema/nis.schema

include /etc/openldap/schema/qmail.schema

include /etc/openldap/schema/phpQLAdmin.schema


# Directives needed to implement policy:


database bdb

suffix "dc=kortekelectronics,dc=com"

rootdn "cn=Manager,dc=kortekelectronics,dc=com"


rootpw p4mail1server


-------------------------------------------------------------------------------------------------


vi ldap.conf

------------------------------------------------------------------------------------------------

HOST 127.0.0.1

BASE dc=kortekelectronics,dc=com

------------------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------------------


vim schema/phpQLAdmin.schema

--------------------------------------------------------------------------------------------------

( Uncomment the following line )


# This is also availible in krb5-kdc.schema (from OpenLDAP.org)

attributetype ( 1.3.6.1.4.1.5322.10.1.12

NAME 'krb5RealmName'

EQUALITY octetStringMatch

SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )

#

attributetype ( 1.3.6.1.4.1.5322.10.1.1

NAME 'krb5PrincipalName'

DESC 'The unparsed Kerberos principal name'

EQUALITY caseExactIA5Match

SINGLE-VALUE

SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )


# PQL_ATTR_KRB5_ADMIN_SERVER

attributetype ( 1.3.6.1.4.1.8767.3.2.2.15 NAME 'krb5AdminServer'

DESC 'Fully Qualified Host Name of the Kerberos admin server'

EQUALITY caseExactIA5Match

SYNTAX 1.3.6.1.4.1.1466.115.121.1.26

SINGLE-VALUE )


attributetype ( 1.3.6.1.4.1.8767.3.2.4.1 NAME 'defaultDomain'

DESC 'Default domain name for the branch'

EQUALITY caseIgnoreMatch

SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}

SINGLE-VALUE )


------------------------------------------------------------------------------------------------


/etc/init.d/ldap start


Creation of LDAP datbase and LDIF FILES.[edit]

  1. ldif for creating base

vi base.ldif

------------------------------------------------------------------------

#kortekelectronics.com

dn: dc=kortekelectronics,dc=com

objectClass: top

objectClass: domain

dc: kortekelectronics

---------------------------------------------------------------------------------------


  1. ldif for creating organizational unit

vi ou.ldif

------------------------------------------------------------------------------------------

#kortekelectronics.com

dn: ou=users,dc=kortekelectronics,dc=com

objectClass: top

objectClass: organizationalUnit

ou: users

description: users

------------------------------------------------------------------------------------------


c. ldif file for creating Admin User.


(Note: Password is postmaster )


vi admin.ldif

-----------------------------------------------------------------------------------------

# admin, kortekelectronics.com

dn: uid=admin,ou=users,dc=kortekelectronics,dc=com

objectClass: top

objectClass: inetOrgPerson

objectClass: qmailuser

cn: admin admin

sn: admin admin

mail: admin@kortekelectronics.com

accountStatus: active

userPassword:: e0NSWVBUfU9XY3dPTS9IekVBT2s=

mailMessageStore: kortekelectronics.com/admin

uid: admin

deliveryMode: noforward

------------------------------------------------------------------------------------------


Commnad to create user/ database[edit]

ldapadd -acvx -D"cn=Manager,dc=kortekelectronics,dc=com" -w p4mail1server -f base.ldif

ldapadd -acvx -D"cn=Manager,dc=kortekelectronics,dc=com" -w p4mail1server -f ou.ldif

ldapadd -acvx -D"cn=Manager,dc=kortekelectronics,dc=com" -w p4mail1server -f admin.ldif


Courier IMAP Integration.[edit]

Compilation and its parameters[edit]

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


vi /etc/rc.local

( Add following line )

----------------------------------------------------------------------------------------------------

/usr/local/sbin/authdaemond start

-----------------------------------------------------------------------------------------------------


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


/usr/local/sbin/mkimapdcert


vi /usr/local/etc/imapd.cnf

(Change postmaser@example.com an administrative email address )

------------------------------------------------------------------------------------------------------

…………………………..

………………………….

emailAddress=admin@kortekelectronics.com

……………………………

-------------------------------------------------------------------------------------------------------


Configuration changes[edit]

vi /usr/local/etc/imapd

-------------------------------------------------------------------------------------------------------

IMAPDSTART=YES

-------------------------------------------------------------------------------------------------------


vi /usr/local/etc/imapd-ssl

-------------------------------------------------------------------------------------------------------

IMAPDSSLSTART=YES

TLS_CERTFILE=/usr/local/share/imapd.pem

-------------------------------------------------------------------------------------------------------


vi /usr/local/etc/authlib/authdaemonrc

-------------------------------------------------------------------------------------------------------

authmodulelist="authldap"

authmodulelistorig="authldap"

-------------------------------------------------------------------------------------------------------


vi /usr/local/etc/authlib/authldaprc

-------------------------------------------------------------------------------------------------------

LDAP_SERVER localhost

LDAP_PORT 389

LDAP_PROTOCOL_VERSION 3

LDAP_BASEDN dc=kortekelectronics,dc=com

LDAP_BINDDN cn=manager, dc=kortekelectronics,dc=com

LDAP_BINDPW p4mail1server

LDAP_TIMEOUT 5

LDAP_AUTHBIND 1

LDAP_MAIL uid

LDAP_GLOB_UID vmail

LDAP_GLOB_GID vmail

LDAP_HOMEDIR mailMessageStore

LDAP_MAILROOT /home/vmail

LDAP_DEFAULTDELIVERY defaultDelivery

LDAP_FULLNAME cnmail.kortekelectronics.com

LDAP_CLEARPW clearPassword

LDAP_CRYPTPW userPassword

#LDAP_CRYPTPW sambaLMPassword

LDAP_DEREF never

LDAP_TLS 0


---------------------------------------------------------------------------------------------------


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


vi /etc/rc.local

( Add following line )

----------------------------------------------------------------------------------------------------

/etc/rc.d/init.d/imap start

/etc/rc.d/init.d/imaps start

-----------------------------------------------------------------------------------------------------


/usr/local/sbin/authdaemond stop

/usr/local/sbin/authdaemond start

/etc/rc.d/init.d/imap stop

/etc/rc.d/init.d/imaps stop

/etc/rc.d/init.d/imap start

/etc/rc.d/init.d/imaps start

qmailctl cdb


phpldapadmin

yum install php -y

yum install php-ldap -y

cd /downloads

wget http://downloads.sourceforge.net/project/phpldapadmin/phpldapadmin-php5/1.2.0.5/phpldapadmin-1.2.0.5.tgz?use_mirror=nchc


tar zxvf phpldapadmin-1.2.0.5.tgz

mv phpldapadmin-1.2.0.5 /var/www/html/phpldapadmin

cd /var/www/html/phpldapadmin

mv config/config.php.example config/config.php

mkdir templates/creation/old templates/modification/old

mv templates/creation/* templates/creation/old/

mv templates/modification/* templates/modification/old/


vi /etc/php.ini

memory_limit = 128M


Webmail

cd /downloads

wget http://downloads.sourceforge.net/project/squirrelmail/stable/1.4.20/squirrelmail-1.4.20.tar.gz?use_mirror=space

tar zxvf squirrelmail-1.4.20.tar.gz

mv squirrelmail-1.4.20 /var/www/html/webmail

cd /var/www/html/webmail

mkdir /var/sqattachements

chown -R apache:apache /var/sqattachements

chown -R apache:apache data

cd config

./conf.pl


Clam Antivirus & SpamAssassin


install these perl modules using cpan

Digest::SHA1Digest::HMACNet::DNSTime::HiResHTML::TagsetHTML::ParserPod::UsageParse::SyslogStatistics::Distributions

yum install perl-suidperl

yum install unzip

cd /downloads/qmailrocks/

rpm -Uvh clamav-0.87-1.i386.rpm

rpm -Uvh clamav-devel-0.87-1.i386.rpm


vi /etc/clamd.conf

change User clamav to

--------------------

User qscand

--------------------


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


chown qscand.qscand /var/log/clamav/

/etc/init.d/clamd stop

/etc/init.d/clamd start