위파일을 받아서 /home 디렉토리에 풀어놓는다.
> cd /home/haru
> tar zxvf qmail.tar.gz
> cd qmail
> ll
-rwxrwxrwx 1 1000 1000 7300 2017-08-24 15:55 autorespond-2.0.2.tar.gz*
-rwxrwxrwx 1 1000 1000 355 2017-08-24 15:55 daemontools-0.76.errno.patch*
-rwxrwxrwx 1 1000 1000 36975 2017-08-24 15:55 daemontools-0.76.tar.gz*
-rwxrwxrwx 1 1000 1000 357893 2017-08-24 15:55 knetqmail-1.06-20110908.tar.gz*
-rwxrwxrwx 1 1000 1000 37973 2017-08-24 15:55 libdomainkeys-0.68.tar.gz*
-rwxrwxrwx 1 1000 1000 1684 2017-08-24 15:55 qmail-dk-0.54-auth.patch*
-rwxrwxrwx 1 1000 1000 710 2017-08-24 15:55 qmail.sh*
-rwxrwxrwx 1 1000 1000 4432 2017-08-24 15:55 qmaild*
-rwxrwxrwx 1 1000 1000 83 2017-08-24 15:55 svscan.conf*
-rwxrwxrwx 1 1000 1000 330 2017-08-24 15:55 ucspi-tcp-0.88.errno.patch*
-rwxrwxrwx 1 1000 1000 60359 2017-08-24 15:55 ucspi-tcp-0.88.tar.gz*
-rwxrwxrwx 1 1000 1000 612271 2017-08-24 15:55 vpopmail-5.4.33.tar.gz*
1.Qmail 설치
1-1) Qmail 설치전 라이브러리설치
#yum install -y patch wget openssl-devel libtool-ltdl-devel libxml2-devel ncurses-devel
imap-devel
1-2) Ucspi-tcp 설치 ( TCP client-server 구축)
> cd /usr/local/src
> cp -arp /home/haru/qmail/ucspi-tcp-0.88.* ./
> tar zxvf ucspi-tcp-0.88.tar.gz
> cd ucspi-tcp-0.88
> patch -p1 < ../ucspi-tcp-0.88.errno.patch
> echo "/usr/local" > conf-home
> make
> make setup check
1-3) Daemontools 설치
(Qmail의 모듈을 관리하며 특정 모듈이 제기능을 동작 못할시 모듈을 재시작하는 용도로 사용되어짐)
> cd /usr/local/src
> cp -arp /home/haru/qmail/daemontools-0.76.* ./
> tar zxvf daemontools-0.76.tar.gz
> cd admin/daemontools-0.76
> patch -p1 < ../../daemontools-0.76.errno.patch
> echo "/usr/local" > src/home
> make -C src
> mkdir /service /command
> for i in `cat package/commands`; do cp -a src/$i /usr/local/bin/$i; done
> for i in `cat package/commands`; do ln -sfv /usr/local/bin/$i /command/$i; done
※ CentOS 5 버전과 CentOS 6 버전의 실행 방법이 변경되었습니다.
CentOS 5.x
> echo "SV:345:respawn:/command/svscanboot" >> /etc/inittab
> pkill -1 init
CentOS 6.x
> cd /etc/init/
> cp -arp /home/haru/qmail/svscan.conf ./
> initctl start svscan
CentOS 7.x
> vi /etc/systemd/system/daemontools.service
[Unit]
Description=daemontools Start supervise
After=getty.target
[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0
[Install]
WantedBy=multi-user.target
> systemctl start daemontools.service
> systemctl status daemontools.service
> systemctl enable daemontools.service
cp -arp /etc/yum.repos.d /etc/yum.repos.d_org
rm -rf /etc/yum.repos.d/*
echo '[base]
name=CentOS-$releasever - Base
baseurl=http://ftp.daum.net/centos/$releasever/os/$basearch/
gpgcheck=0
[updates]
name=CentOS-$releasever - Updates
baseurl=http://ftp.daum.net/centos/$releasever/updates/$basearch/
gpgcheck=0
[extras]
name=CentOS-$releasever - Extras
baseurl=http://ftp.daum.net/centos/$releasever/extras/$basearch/
gpgcheck=0' > /etc/yum.repos.d/Daum.repo
rpm -Uvh $SOURCE_ADDR/epel-release-7-1.noarch.rpm
yum repolist
yum -y install \
gcc* \
make \
libtool-ltdl-devel \
openssl-devel \
pcre-devel \
ncurses-devel \
libxml2-devel \
bzip2-devel \
curl-devel \
gdbm-devel \
libjpeg-devel \
libpng-devel \
freetype-devel \
libc-client-devel \
krb5-devel \
libmcrypt-devel \
pam-devel \
flex
----------------------------------------------------------------------------------------------------------------------
# ps -ef | grep -E 'svscan|errors'
root 734 1 0 Aug26 ? 00:00:00 /bin/sh /command/svscanboot
root 745 734 0 Aug26 ? 00:00:06 svscan /service
root 746 734 0 Aug26 ? 00:00:00 readproctitle service errors: .............................................................................................................................................................................................................................................................................................................................................................................hostname: Host name lookup failure?
root 10732 10636 0 13:26 pts/0 00:00:00 grep --color=auto -E svscan|errors
----------------------------------------------------------------------------------------------------------------------
위와같이 나와야 정상적으로 실행이된것임
1-4) Qmail, vpopmail을 위한 계정 및 그룹 생성
> cd /usr/local/src
> cp -arp /home/haru/qmail/qmail.sh ./
> sh qmail.sh
1-5) vpopmail 설치
※ Qmail 버전이 변경되면서 vpopmail을 우선적으로 설치하여야 정상적으로 설치가 가능합니다.
> mkdir -p /var/qmail/bin
> touch /var/qmail/bin/qmail-newu
> touch /var/qmail/bin/qmail-inject
> touch /var/qmail/bin/qmail-newmrh
※ vpopmail은 cdb(Sendmail처럼 자체적으로 관리)와 MySQL을 이용한 도메인 및 관리를 합니다
MySQL 관리 형태 (MySQL 설치는 이 문서에서는 생략 하였습니다.)
> cd /usr/local/src
> cp -arp /home/haru/qmail/vpopmail-5.4.33.tar.gz ./
> tar zxvf vpopmail-5.4.33.tar.gz
> cd vpopmail-5.4.33
> ./configure \
--prefix=/home/vpopmail \
--enable-vpopuser=vpopmail \
--enable-vpopgroup=vchkpw \
--enable-tcprules-prog=/usr/local/bin/tcprules \
--enable-tcpserver-file=/etc/tcprules.d/tcp.smtp \
--disable-users-big-dir \
--enable-qmail-ext \
--enable-domainquotas \
--enable-logging=v \
--enable-log-name=vpopmail \
--enable-valias \
--disable-many-domains \
--enable-auth-module=mysql \
--enable-incdir=/usr/local/mysql/include/mysql \
--enable-libdir=/usr/local/mysql/lib/mysql
*Centos7의 경우 –enable-incdir=/usr/local/mysql/include/myslq →
--enable-incdir=/usr/local/mysql/include/ 로변경
--enable-libdir=/usr/local/mysql/lib/mysql → --enable-libdir=/usr/local/mysql/lib/ 로 변경
> make
> make install-strip
MySQL DB 연동을 위한 설정 파일 생성
> vi /home/vpopmail/etc/vpopmail.mysql
localhost|0|DB_USER|PASSWORD|DB_NAME (서버의 MYSQL 접속정보에 맞도록 수정한뒤 저장)
> rm -rf /var/qmail
- mysql db 추가
create database vpopmail;
grant all privileges on vpopmail.* to vpopmail@localhost identified by 'password' with grant option;
flush privileges;
CDB 관리 형태 (Sendmail처럼 자체적 관리)
> cd /usr/local/src
> cp -arp /home/haru/qmail/vpopmail-5.4.33.tar.gz ./
> tar zxvf vpopmail-5.4.33.tar.gz
> cd vpopmail-5.4.33
> ./configure \
--prefix=/home/vpopmail \
--enable-vpopuser=vpopmail \
--enable-vpopgroup=vchkpw \
--enable-tcprules-prog=/usr/local/bin/tcprules \
--enable-tcpserver-file=/etc/tcprules.d/tcp.smtp \
--disable-users-big-dir \
--enable-qmail-ext \
--enable-domainquotas \
--enable-logging=v \
--enable-log-name=vpopmail \
--enable-valias \
--disable-many-domains \
> make
> make install-strip
> rm -rf /var/qmail
자체적으로 관리하므로 별도의 설정 파일은 없습니다.
1-6) Libdomainkeys 설치
( Yahoo에서 주도하여 개발된 인증 방법이며 발신지 변조 방지 기술입니다.)
> cd /usr/local/src
> cp -arp /home/haru/qmail/libdomainkeys-0.68.tar.gz ./
> tar xfz libdomainkeys-0.68.tar.gz
> mv libdomainkeys-0.68 libdomainkeys
> cd libdomainkeys
> echo "-lresolv" > dns.lib
> make
1-7) Qmail 설치
> Qmail은 1.03버전에서 릴리즈가 더이상 없으며 (1998년도에 배포된 버전이 최신) kldp.net에서 knetQmail의 이름으로 1.06 버전이 배포가 되고 있습니다.
> ※ knetqmail 의 경우 설치 파일은 qmail.kldp.net 에서 받는것이 원칙 입니다 .
> cd /usr/local/src
> cp -arp /home/haru/qmail/knetqmail-1.06-20110908.tar.gz ./
> cp -arp /home/haru/qmail/qmail-dk-0.54-auth.patch ./
> tar zxvf knetqmail-1.06-20110908.tar.gz
> cd knetqmail-1.06-20110908
> patch -p0 < ../qmail-dk-0.54-auth.patch
> echo "gcc -O2 -g -DTLS=20070408 -I/usr/include/openssl -I/home/vpopmail/include" > conf-cc
> echo "gcc -s -O2 -g" > conf-ld
> make
> make setup check
> cp -a spfquery /var/qmail/bin
> cp -a /var/tmp/libdomainkeys/dknewkey /var/qmail/bin 또 는
cp -a /usr/local/src/qmail/libdomainkeys/dknewkey /var/qmail/bin
> chown root:qmail /var/qmail/bin/spfquery /var/qmail/bin/dknewkey
> chmod 755 /var/qmail/bin/spfquery /var/qmail/bin/dknewkey
※ 설치 도중 OPEN-SSL이 필요한부분이 있으며 이부분은 yum을 통해 설치를 하면 해결 됩니다.
설정 파일 생성
> cd /var/qmail/control
> touch rcpthosts smtproutes
> echo "localhost"
> locals
> echo "your-domain.com" > me
> echo "your-domain.com" > defaultdomain
> echo "your-domain.com" > defaulthost
> echo "your-domain.com" > plusdomain
> echo "60" > concurrencyremote
> echo "100"> concurrencyincoming
> echo "86400" > queuelifetime
> echo "1" > spfbehavior
> echo "Welcome to Qmail SMTP Server" > smtpgreeting
> echo "./Maildir/" > defaultdelivery
> chmod 644 *
> cd /var/qmail/users
> touch cdb
> echo "." > assign
> chmod 644 *
1-8) Qmail 데몬을 위한 디렉토리 생성 및 설정파일 생성
> mkdir -p /var/qmail/supervise
> for i in send smtp pop3 submission; do mkdir -p /var/qmail/supervise/$i/log; done
> vi /var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"
> vi /var/qmail/supervise/send/run
#!/bin/sh
exec /var/qmail/rc
> vi /var/qmail/supervise/send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/send 2>&1
> vi /var/qmail/supervise/smtp/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 64000000 \
/usr/local/bin/tcpserver -vRHl0 \
-x /etc/tcprules.d/tcp.smtp.cdb \
-c ${MAXSMTPD} \
-u ${VPOP_UID} -g ${VPOP_GID} 0 25 \
/var/qmail/bin/qmail-smtpd \
/home/vpopmail/bin/vchkpw /bin/true 2>&1
> vi /var/qmail/supervise/smtp/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtp 2>&1
> vi /var/qmail/supervise/pop3/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
HOSTNAME=`hostname -f`
exec /usr/local/bin/softlimit -m 48000000 \
/usr/local/bin/tcpserver -vRHl0 \
-u ${VPOP_UID} -g ${VPOP_GID} 0 110 \
/var/qmail/bin/qmail-popup ${HOSTNAME} \
/home/vpopmail/bin/vchkpw \
/var/qmail/bin/qmail-pop3d Maildir 2>&1
> vi /var/qmail/supervise/pop3/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/pop3 2>&1
> vi /var/qmail/supervise/submission/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 48000000 \
/usr/local/bin/tcpserver -vRHl0 \
-x /etc/tcprules.d/tcp.smtp.cdb \
-c ${MAXSMTPD} \
-u ${VPOP_UID} -g ${VPOP_GID} 0 587 \
/var/qmail/bin/qmail-smtpd \
/home/vpopmail/bin/vchkpw /bin/true 2>&1
> vi /var/qmail/supervise/submission/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/submission 2>&1
1-9) Qmail 디렉토리 및 파일 권한 설정
> chmod 755 /var/qmail/rc
> chown root:qmail /var/qmail/rc
> chmod 700 /var/qmail/supervise
> chown -R qmaill:qmail /var/qmail/supervise
> for i in send smtp pop3 submission; do chmod 1700 /var/qmail/supervise/$i; done
> for i in send smtp pop3 submission; do chmod 700 /var/qmail/supervise/$i/log; done
> for i in send smtp pop3 submission; do chmod 751 /var/qmail/supervise/$i/run; done
> for i in send smtp pop3 submission; do chmod 751 /var/qmail/supervise/$i/log/run; done
1-10) tcp.smtp 설정
> mkdir -p /etc/tcprules.d
> vi /etc/tcprules.d/tcp.smtp
127.0.0.1:allow,RELAYCLIENT="",CHKUSER_RCPTLIMIT="50",CHKUSER_WRONGRCPTLIMIT="10"
:allow,CHKUSER_RCPTLIMIT="50",CHKUSER_WRONGRCPTLIMIT="10"
> tcprules /etc/tcprules.d/tcp.smtp.cdb /etc/tcprules.d/tcp.smtp.tmp < /etc/tcprules.d/tcp.smtp
1-11) Qmail Log 디렉토리 생성 및 권한 설정
> for i in send smtp pop3 submission; do mkdir -p /var/log/qmail/$i; done
> chmod -R 750 /var/log/qmail
> chown -R qmaill:qmail /var/log/qmail
1-12) Qmail 실행 스크립트 생성 및 권한 설정
> cd /etc/init.d/
> cp -arp /home/haru/qmail/qmaild ./
> chmod 755 /etc/init.d/qmaild
> chkconfig --add qmaild
> chkconfig --level 345 qmaild
1-13) Qmail 시작 및 데몬리스트와 pstree 구조 확인
> /etc/init.d/qmaild start
※ 아래와 같이 25 번 포트와 110 번 포트를 점유하는 tcpserver 데몬이 올라와야 정상 입니다.
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 772/tcpserver
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 769/tcpserver
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 762/tcpserver
※ pstree에서 아래와 같이 tree를 이루어지는 경우 정상 실행 입니다.
├─svscanboot─┬─readproctitle
│ └─svscan─┬─3*[supervise───tcpserver]
│ ├─4*[supervise───multilog]
│ └─supervise───qmail-send─┬─qmail-clean
│ ├─qmail-lspawn
│ └─qmail-rspawn
2. dovecot 설치 (소스)
2-1) openssl openssl-devel 패키지 설치 (ssl 기반의 imap 이용시 요구됨. 필요 없다면 생략 가능)
# yum -y install openssl openssl-devel
2-2) RPM으로 설치된 Dovecot 제거
# yum -y remove dovecot
2-3) 소스로 설치될 Dovecot 사용자, 그룹 생성
# groupadd -g 97 dovecot
# useradd -g 97 -u 97 -d /usr/local/libexec/dovecot -s /sbin/nologin dovecot
2-4) Dovecot 소스 최신 버전 다운로드 (현재 최신 버전은 dovecot-1.1.3.tar.gz 이었음)
http://www.dovecot.org/download.html
# wget http://www.dovecot.org/releases/1.1/dovecot-1.1.3.tar.gz
2-5) 압축 해제
# tar zxvf dovecot-1.1.3.tar.gz
2-6) Configure (필수 옵션 : --with-vpopmail)
# ./configure --with-vpopmail --with-ssl=openssl
2-7) 컴파일 & 설치
# make
# make install
2-8) "vpopmail" 유저 uid 번호 확인
# id -u vpopmail
2-9) Dovecot 설정파일 생성
아래 내용에서, [first_valid_uid = 508] 부분의 숫자를 (8)번 과정에서 확인한 번호로 수정한 후, /usr/local/etc/dovecot.conf 파일로 저장
(필요한 경우, protocols 부분은 적당히 수정)
# vi /usr/local/etc/dovecot.conf
## Ex) protocols = imap imaps pop3 pop3s
protocols = imap
listen = *
ssl_disable = yes
disable_plaintext_auth = no
login_process_per_connection = no
login_greeting = Ready
mail_debug = yes
first_valid_uid = 508
protocol imap {
}
auth_verbose = yes
auth_debug = yes
auth default {
mechanisms = plain
passdb vpopmail {
}
userdb vpopmail {
}
user = vpopmail
}
편의상 /usr/local/etc/dovecot.conf파일을 /etc/dovecot.conf로 심볼릭링크를 건다.
ln -s /usr/local/etc/dovecot.conf /etc/dovecot.conf
2-10) Dovecot init 스크립트 생성
# vi /etc/init.d/dovecot
#!/bin/bash
#
# /etc/rc.d/init.d/dovecot
#
# Starts the dovecot daemon
#
# chkconfig: - 65 35
# description: Dovecot Imap Server
# processname: dovecot
# Source function library.
. /etc/init.d/functions
test -x /usr/local/sbin/dovecot || exit 0
RETVAL=0
prog="Dovecot Imap"
start() {
echo -n $"Starting $prog: "
daemon /usr/local/sbin/dovecot
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dovecot
echo
}
stop() {
echo -n $"Stopping $prog: "
killproc /usr/local/sbin/dovecot
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dovecot
echo
}
#
# See how we were called.
#
case "$1" in
start)
start
;;
stop)
stop
;;
reload|restart)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/dovecot ]; then
stop
start
fi
;;
status)
status /usr/local/sbin/dovecot
RETVAL=$?
;;
*)
echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
exit 1
esac
exit $RETVAL
2-11) Dovecot init스크립트 권한 조정
# chmod 700 /etc/init.d/dovecot
# chown root:root /etc/init.d/dovecot
2-12) ntsysv 등록
# chkconfig --add dovecot
# chkconfig --level 345 dovecot on
2-13) dovecot 실행
#/etc/init.d/dovecot start
2-14) /var/log/message에 Dovecot 작동 로그에 특별한 에러가 보이지 않는다면, 정상 설치 된 것임.
3.Roundcube 설치
> cd /usr/local/src
> https://github.com/roundcube/roundcubemail/releases/download/1.3.0/roundcubemail-1.3.0-complete.tar.gz
> tar zxvf roundcubemail-1.3.0-complete.tar.gz
> mv roundcubemail-1.3.0 /home/haru/webmail
logs와 temp 디렉토리의 접근권한을 변경합니다.
# cd /home/haru/webmail
# chmod 707 logs temp
>>vhost 설정
>vi /usr/local/apache/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot “/home/haru/webmail”
ServerName mail.harulife.co.kr
ErrorLog “logs/mail.harulife.co.kr-error_log”
CustomLog “logs/mail.harulife.co.kr-access_log” combined
</VirtualHost>
apache 재시작후 mail.harulife.co.kr/installer 로 접근한다.
위부분에서 not ok 부분을 다 해결해준뒤 next로 넘어간다.
위부분을 복사하거나 다운로드하여 /home/haru/webmail/config/config.inc.php 파일로 저장한다.
위와같은부분에 빈칸을 채워준뒤 test로 넘어오며
test단계에서 mime.types 관련 오류가발견되면
config.inc.php 파일에
$config['mime_types'] = '/usr/local/apache/conf/mime.types';
위구문을 추가해준다.
roundcube 와 vpopmail 연동이 잘안될시에는 db연결부분을 확인해준다.
'리눅스 > mail' 카테고리의 다른 글
sendmail 큐 삭제 (0) | 2014.11.23 |
---|---|
sendmail 계정 추가 (0) | 2014.11.23 |
메일 전송 테스트 (0) | 2014.11.23 |
서버에서 외부로 메일 전송이 되지 않을때 확인. (0) | 2014.11.23 |
mail 발송 테스트 (0) | 2014.11.23 |