출처
(http://www.digimoon.net/)
소스는 아래 사이트에서 구한다.
# tar xvfz dovecot-1.1.2.tar.gz
# cd dovecot-1.1.2
# ./configure --prefix=/usr --localstatedir=/var --with-pam --with-gssapi --with-mysql
# make
# make install
# cp /usr/etc/dovecot-example.conf /usr/etc/dovecot.conf
# groupadd -g 97 dovecot
# useradd -u 97 -g 97 -d /usr/libexec/dovecot -s /sbin/nologin dovecot
편집기로 환경설정 파일인 dovecot.conf 을 아래와 같이 내용 작성한다.
disable_plaintext_auth = no
ssl_disable = yes
protocol imap {
}
protocol pop3 {
}
auth default {
mechanisms = plain
passdb passwd {
}
passdb shadow {
}
userdb passwd {
}
user = root
}
plugin {
}
mail_privileged_group = mail
실행 커맨드는 아래와 같다.
아래와 같이 출력된다면 dovecot이 잘 올라온 상태이다.
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 18505/xinetd
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 18505/xinetd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 18313/mysqld
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 3523/smbd
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 21245/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 21245/dovecot
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 18505/xinetd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 19307/sendmail: acc
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 3523/smbd
tcp 0 0 :::80 :::* LISTEN 4562/httpd
udp 0 0 192.168.0.100:137 0.0.0.0:* 3528/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 3528/nmbd
udp 0 0 192.168.0.100:138 0.0.0.0:* 3528/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 3528/nmbd
udp 0 0 0.0.0.0:161 0.0.0.0:* 2832/snmpd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 5738801 21245/dovecot /var/run/dovecot/dict-server
unix 2 [ ACC ] STREAM LISTENING 5738803 21245/dovecot /var/run/dovecot/login/default
unix 2 [ ACC ] STREAM LISTENING 5738812 21245/dovecot /var/run/dovecot/auth-worker.21246
unix 2 [ ACC ] STREAM LISTENING 1535445 28839/saslauthd /var/run/saslauthd/mux
unix 2 [ ACC ] STREAM LISTENING 5976316 18313/mysqld /tmp/mysql.sock
[root@digimoon modules]#
실행 스크립트는 아래와 같이 작성 (레드햇 계열)
#
# /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/sbin/dovecot || exit 0
RETVAL=0
prog="Dovecot Imap"
start() {
echo -n $"Starting $prog: "
daemon /usr/sbin/dovecot
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dovecot
echo
}
stop() {
echo -n $"Stopping $prog: "
killproc /usr/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/sbin/dovecot
RETVAL=$?
;;
*)
echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
exit 1
esac
exit $RETVAL
# chkconfig --add dovecot
# chkconfig --level 345 dovecot on
# /etc/init.d/dovecot start|stop|restart
우분투용 init 스크립트는 아래와 같다.
( http://ubuntuforums.org/showthread.php?t=282688 )
#!/bin/sh
# Dovecot IMAP server
PATH=/sbin:/bin:/usr/sbin:/usr/bin
. /lib/lsb/init-functions
DISTRO=$(lsb_release -is 2>/dev/null || echo Debian)
case "$1" in
'start')
log_daemon_msg "Starting Dovecot IMAP server..."
/usr/sbin/dovecot
RETVAL=$?
log_end_msg 0
;;
'stop')
log_daemon_msg "Stopping Dovecot IMAP server..."
kill `cat /var/run/dovecot/master.pid`
RETVAL=$?
log_end_msg 0
;;
'restart')
log_daemon_msg "Restarting Dovecot IMAP server..."
$0 stop && $0 start
RETVAL=$?
log_end_msg 0
;;
*)
echo "Usage: $0 { start | stop | restart }"
RETVAL=1
;;
esac
exit $RETVAL
# update-rc.d dovecot defaults
# /etc/init.d/dovecot start|stop|restart
실제 사용 시 인증 관련 에러를 비롯해서 한 번에 성공 안 되고 답답하다면 구글 검색 밖에 답 없음... ^^
하지만 위 dovecot.conf 샘플 내용을 그대로 적용한다면 분명히 성공할 겁니다. ㅎ
압축풀고... ./configure --prefix=/usr --localstatedir=/var --with-pam --with-gssapi --with-mysql
했는데...
checking for mysql_init in -lmysqlclient... no
configure: error: Can't build with MySQL support: libmysqlclient not found
애러 메시지가 나오면서 멈춥니다. mysql을 /usr/local/server/mysql에 설치했거던요.
혹시 해결방법 알려 주시면 고맙겠습니다.
email: simonbanz@gmail.com
CentOS 리눅스 구축관리실무 책으로 공부하시는 거 같네요.
mysql을 소스로 설치하셨다면 /usr/local/server/mysql/lib/mysql/libmysqlclient.so.15 파일 또는 이와 유사한 파일이 있을 겁니다. dovecot이 설치될 때 쉘 환경변수에 등록된 경로를 뒤져서 libmysqlclient.so.15 파일을 찾는데 이걸 찾지 못해 에러가 난 겁니다.
/etc/ld.so.conf 파일에 아래 한 줄 내용 추가하고
/usr/local/server/mysql/lib/mysql
ldconfig 실행한 뒤 다시 진행해 보세요.
8. 서버 데몬 확인 및 서비스 확인
이렇게 설치 하셨다면, 간단한 메일 서버는 셋팅은 끝입니다. 이제 서비스를 확인해야 합니다.
[root@test mail]# netstat -an | grep LISTEN tcp 0 0 0.0.0.0:32769 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:5335 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 :::110 :::* LISTEN tcp 0 0 :::22 :::* LISTEN |
현재 열려있는 포트입니다. 다른 것들은 서비스에 따라 다를 수 있으니 신경쓰지 마시구요, 110 포트(pop3), 25번 포트(smtp 그러니까 sendmail)입니다. 위와같아야 합니다.
9. 메일큐 내용 확인하기
홈
페이지 운영하다 메일링 리스트에서 메일을 보내게 되면, 정상적인 메일주소로는 메일이 가지만, 정상적인 메일주소가 아닌 경우
가지도 않고 메일큐(/var/spool/mqueue)에 쌓여서 서버의 부하를 주는 경우가 있습니다.. sendmail은
기본설치된 것이 1시간마다 메일큐를 비우게 되어 있고, 한 번 보낸 메일은 7일동안 메일을 보내려고 시도하게 됩니다.. 메일큐에
보내지 못한 메일이 많으면 서버에 부하만 늘어납니다. 이런 경우 mailq라는 명령어로 큐 내용을 확인하여 지워줘야 합니다..
[root@study root]# mailq /var/spool/mqueue is empty Total requests: 0 |
큐를 지우는 방법은
[root@study root]# rm -rf /var/spool/mqueue/* |
10. 도메인 셋팅 스크립트
서
버를 많이 관리하다보면 파일 하나 하나 열어서 셋팅하는 일이 귀찮고도 시간이 많이 걸립니다. 항상 스크립트를 작성해두고 설정하는
것이 실수를 줄이고, 작업 시간도 줄일 수 있습니다. 다음과 같이 간단 한 스크립트를 작성해서 저장합니다.
#!/bin/bash echo "간단한 메일 셋팅 프로그램 by doly엣superuser.co.kr " if [ "$1" == "" -o "$2" == "" ] ; then echo -e "\n ############ 사용법 ############## " echo -e "$0 아이디 도메인 \n" exit 0 fi echo "webmaster@$2 으로 들어오는 메일은 $1@$2 메일계정으로 받습니다." echo -e "$2 \t\t\t RELAY" >> /etc/mail/access echo "$2" >> /etc/mail/local-host-names echo -e "webmaster@$2 \t\t\t $1" >> /etc/mail/virtusertable echo "1. db 생성중.." cd /etc/mail make echo "2. 센드메일 재 시작중 " /etc/rc.d/init.d/sendmail restart |
파일을 만들어서 위 내용을 붙여 넣은 다음에 실행 권한을 줍니다. 그리구 아래와같이 실행하면,
[root@test root]# ./mailsetup.sh 간단한 메일 셋팅 프로그램 by doly엣superuser.co.kr ############ 사용법 ############## ./mailsetup.sh 아이디 도메인 |
위와같이 실행시키면 간단한 사용법이 나옵니다.
[root@test root]# ./mailsetup.sh doly gnux.co.kr 간단하 메일 셋팅 프로그램 by doly엣superuser.co.kr webmaster@gnux.co.kr 으로 들어오는 메일은 doly@gnux.co.kr 메일계정으로 받습니다. 1. db 생성중.. 2. 센드메일 재 시작중 sendmail를 종료하고 있습니다: [ 확인 ] sm-client을 종료하고 있습니다: [ 확인 ] sendmail (을)를 시작합니다: [ 확인 ] sm-client을 시작하고 있습니다: [ 확인 ] |
위와같이 id : doly , gnux.co.kr으로 입력하면 위와같이 자동 셋팅됩니다.
/etc/mail/access 파일, /etc/mail/local-host-names, /etc/mail/virtusertable 파일이 변경되고, db 갱신되며, sendmail 재시작 됩니다.