작성자 : 김용복 (ruo91@yongbok.net) - 2010/03/16 PM 8:39
원제목 : FreeBSD - Qmail 메일 서버 구축
환 경 : FreeBSD 8.0
설치순 : mysql - > ucspi-tcp -> daemontools - > qmail -> vpopmail
준비물 : ucspi-tcp, daemontools, mysql, qmail, autorespond, vpopmail
0. Ports 목록 업데이트
cvsup 으로 최신의 Ports 목록을 갱신 해줍니다. 이미 업데이트 하신 분이라면 넘어 가셔도 무방합니다.
Ports 목록을 업데이트 하기 위한 설정 파일을 복사합니다.
한국 cvsup 서버로 모두 문자 치환하고
Ports 목록을 업데이트 해줍니다.
1. MySQL 설치
MySQL 시작
루트 비밀번호 설정
vpopmail 에 사용할 사용자 및 데이터베이스 생성
MySQL 데이터베이스 생성
2. ucspi-tcp 설치
3. daemontools 설치
MAN, S_NORMAL, TESTS 3가지 옵션이 기본으로 선택 되어 있으므로 그냥 설치 해줍니다.
/etc/rc.conf 파일에 svscan 을 활성화 시켜 줍니다.
4. Qmail 설치
필자는 ports 설치시 오류가나 바이너리로 설치 했습니다.
qmail 활성화
5. Sendmail 비활성화
FreeBSD 에서는 기본으로 Sendmail 을 사용하도록 되어 있기 때문에 실행 되지 않도록 설정 해줍니다.
("NONE" 으로 준 이유는 "NO" 로 해도 Sendmail 이 실행 되기 때문에...)
기본 sendmail 을 old 로 변경 후 qmail 에 있는 sendmail 로 대체
6. autorespond 설치
7. Qmail 설정
- Qmail 로그 디렉토리 생성
- Qmail 기본 도메인 설정
- supervise 디렉토리 설정
- 도메인 설정 파일 생성
방송통신위원회/KISA 에서 스팸과 좀비 공격을 줄이기 위해 ISP의 25번 포트 차단으로 인해 587 포트로 사용하도록 설정 해줬습니다. (필자는 25 열려 있다능.. ~ㅅ~)
위에서 만든 설정 파일들의 실행 권한 반영
서비스할 디렉토리 생성 및 링크
8. vpopmail 설치
9. vpopmail 설정
- vpopmail 에 사용할 기본 도메인 설정
- MySQL 연동 설정
기본 예제
실제 사용예
- tcp.smtp 설정 (Relay 하기 위한 설정임)
가상 사용자를 생성
pop3 데몬을 서비스 링크
svscan 실행
Qmail 프로세스 확인
DNS 서버의 MX 레코드 추가
MX 레코드는 Bind 기준으로 설명 드리며 아래 처럼 Zone 파일마다 MX 레코드를 추가 해준 후 네임서버를 재시작 해주면 됩니다.
이후 외부에서 메일이 보내지는지 확인 해보면 됩니다.
참고
http://qmail.kldp.net
http://hbesthee.tistory.com/8
http://logicsquad.net/freebsd/qmail-how-to.html
원제목 : FreeBSD - Qmail 메일 서버 구축
환 경 : FreeBSD 8.0
설치순 : mysql - > ucspi-tcp -> daemontools - > qmail -> vpopmail
준비물 : ucspi-tcp, daemontools, mysql, qmail, autorespond, vpopmail
0. Ports 목록 업데이트
cvsup 으로 최신의 Ports 목록을 갱신 해줍니다. 이미 업데이트 하신 분이라면 넘어 가셔도 무방합니다.
[root@yongbok ~]# cd /usr/ports/net/cvsup-without-gui && make install clean
Ports 목록을 업데이트 하기 위한 설정 파일을 복사합니다.
[root@yongbok ~]# cp /usr/share/examples/cvsup/ports-supfile /etc
한국 cvsup 서버로 모두 문자 치환하고
[root@yongbok ~]# sed 's/CHANGE_THIS/cvsup.kr/g' /etc/ports-supfile
Ports 목록을 업데이트 해줍니다.
[root@yongbok ~]# cvsup -L2 /etc/ports-supfile
1. MySQL 설치
[root@yongbok ~]# cd /usr/ports/databases/mysql51-server
[root@yongbok ~]# make WITH_CHARSET=euckr BUILD_OPTIMIZED=yes BUILD_STATIC=yes install clean
MySQL 시작
[root@yongbok ~]# echp 'mysql_enable="YES"' >> /etc/rc.conf
[root@yongbok ~]# /usr/local/etc/rc.d/mysql-server start
루트 비밀번호 설정
[root@yongbok ~]# mysqladmin -u root password '123456'
vpopmail 에 사용할 사용자 및 데이터베이스 생성
[root@ruo91 ~]# mysql -u root -p
mysql> GRANT ALL ON vpopmail.* TO 'vpopmaill'@'localhost' IDENTIFIED BY '123456 WITH GRANT OPTION;
MySQL 데이터베이스 생성
mysql> CREATE DATABASE vpopmail;
mysql> flush privileges;
mysql> exit
2. ucspi-tcp 설치
[root@yongbok ~]# cd /usr/ports/sysutils/ucspi-tcp && make install clean
3. daemontools 설치
MAN, S_NORMAL, TESTS 3가지 옵션이 기본으로 선택 되어 있으므로 그냥 설치 해줍니다.
[root@yongbok ~]# cd /usr/ports/sysutils/daemontools && make install clean
/etc/rc.conf 파일에 svscan 을 활성화 시켜 줍니다.
[root@yongbok ~]# echo 'svscan_enable="YES"' >>/etc/rc.conf
4. Qmail 설치
필자는 ports 설치시 오류가나 바이너리로 설치 했습니다.
[root@yongbok ~]# cd /usr/ports/mail/qmail && make install clean
또는
[root@yongbok ~]# pkg_add -r qmail
qmail 활성화
[root@yongbok ~]# echo 'qmail_smtp_enable="YES"' >> /etc/rc.conf
[root@yongbok ~]# echo 'qmail_pop_enable="YES"' >> /etc/rc.conf
[root@yongbok ~]# echo 'qmail_enable="YES"' >> /etc/rc.conf
5. Sendmail 비활성화
FreeBSD 에서는 기본으로 Sendmail 을 사용하도록 되어 있기 때문에 실행 되지 않도록 설정 해줍니다.
("NONE" 으로 준 이유는 "NO" 로 해도 Sendmail 이 실행 되기 때문에...)
[root@yongbok ~]# echo 'sendmail_enable="NONE"' >> /etc/rc.conf
기본 sendmail 을 old 로 변경 후 qmail 에 있는 sendmail 로 대체
[root@yongbok ~]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
[root@yongbok ~]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
[root@yongbok ~]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
6. autorespond 설치
[root@yongbok ~]# cd /usr/ports/mail/autorespond && make install clean
7. Qmail 설정
- Qmail 로그 디렉토리 생성
[root@yongbok ~]# mkdir /var/log/qmail
[root@yongbok ~]# cd /var/log/qmail
[root@yongbok ~]# mkdir qmail-send qmail-smtpd qmail-pop3d
[root@yongbok ~]# chown -R qmaill:wheel /var/log/qmail
[root@yongbok ~]# chmod -R 750 /var/log/qmail
- Qmail 기본 도메인 설정
[root@yongbok ~]# /var/qmail/configure/config-fast yongbok.net
- supervise 디렉토리 설정
[root@yongbok ~]# mkdir /var/qmail/supervise
[root@yongbok ~]# cd /var/qmail/supervise
[root@yongbok ~]# mkdir -p qmail-smtpd/log qmail-send/log qmail-pop3d/log
[root@yongbok ~]# chmod +t qmail-smtpd qmail-send qmail-pop3d
- 도메인 설정 파일 생성
[root@yongbok ~]# ee /var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"
[root@yongbok ~]# ee /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc
[root@yongbok ~]# ee /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec setuidgid qmaill multilog t s100000 n20 /var/log/qmail/qmail-send 2>&1
[root@yongbok ~]# ee /var/qmail/supervise/qmail-pop3d/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec tcpserver -H -R -v -c100 0 110 qmail-popup yongbok.net \
/usr/local/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1
[root@yongbok ~]# ee /var/qmail/supervise/qmail-pop3d/log/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec setuidgid qmaill multilog t s100000 n20 /var/log/qmail/qmail-pop3d 2>&1
방송통신위원회/KISA 에서 스팸과 좀비 공격을 줄이기 위해 ISP의 25번 포트 차단으로 인해 587 포트로 사용하도록 설정 해줬습니다. (필자는 25 열려 있다능.. ~ㅅ~)
[root@yongbok ~]# cat /etc/services | grep 587
submission 587/tcp
submission 587/udp
[root@yongbok ~]# ee /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/bin/softlimit -m 30000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /usr/local/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 submission \
/var/qmail/bin/qmail-smtpd yongbok.net \
/usr/local/vpopmail/bin/vchkpw /usr/bin/true 2>&1
[root@yongbok ~]# echo "20" > /var/qmail/control/concurrencyincoming
[root@yongbok ~]# ee /var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec setuidgid qmaill multilog t s100000 n20 /var/log/qmail/qmail-smtpd 2>&1
위에서 만든 설정 파일들의 실행 권한 반영
[root@yongbok ~]# chmod 755 /var/qmail/rc
[root@yongbok ~]# chmod 755 /var/qmail/supervise/qmail-send/run
[root@yongbok ~]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[root@yongbok ~]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
[root@yongbok ~]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
[root@yongbok ~]# chmod 755 /var/qmail/supervise/qmail-pop3d/run
[root@yongbok ~]# chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
서비스할 디렉토리 생성 및 링크
[root@yongbok ~]# mkdir /var/service
[root@yongbok ~]# ln -s /var/qmail/supervise/qmail-send /var/service/
[root@yongbok ~]# ln -s /var/qmail/supervise/qmail-smtpd /var/service/
8. vpopmail 설치
[root@yongbok ~]# cd /usr/ports/mail/vpopmail
[root@yongbok ~]# make WITH_MYSQL=yes QMAIL_PREFIX=/var/qmail install clean
9. vpopmail 설정
- vpopmail 에 사용할 기본 도메인 설정
[root@yongbok ~]# cd /usr/local/vpopmail/etc
[root@yongbok ~]# echo 'yongbok.net' > defaultdomain
[root@yongbok ~]# chown vpopmail defaultdomain
[root@yongbok ~]# chgrp vchkpw defaultdomain
[root@yongbok ~]# cp vpopmail.mysql-dist vpopmail.mysql
[root@yongbok ~]# chmod 640 vpopmail.mysql
- MySQL 연동 설정
기본 예제
[root@yongbok ~]# echo 'localhost|0|사용자ID|비밀번호|DB이름' >> vpopmail.mysql
실제 사용예
[root@yongbok ~]# echo 'localhost|0|vpopmail|123456|vpopmail' >> vpopmail.mysql
- tcp.smtp 설정 (Relay 하기 위한 설정임)
[root@yongbok ~]# chmod 640 tcp.smtptcp.smtp.cdb 파일 생성
[root@yongbok ~]# echo '124.51.213.50.:allow,RELAYCLIENT=""' >> tcp.smtp
[root@yongbok ~]# ../bin/clearopensmtp- 가상 도메인 설정
[root@yongbok ~]# ../bin/vadddomain yongbok.net
Please enter password for postmaster:
enter password again:
가상 사용자를 생성
[root@yongbok ~]# ../bin/vadduser ruo91@yongbok.net 123456
pop3 데몬을 서비스 링크
[root@yongbok ~]# ln -s /var/qmail/supervise/qmail-pop3d /var/service/
svscan 실행
[root@yongbok ~]# /usr/local/etc/rc.d/svscan start
Starting svscan.
Qmail 프로세스 확인
[root@yongbok ~]# ps -x | grep qmail
34662 ?? I 0:00.00 supervise qmail-send
34664 ?? I 0:00.00 supervise qmail-smtpd
34666 ?? I 0:00.00 supervise qmail-pop3d
34673 ?? I 0:00.01 tcpserver -H -R -v -c100 0 110 qmail-popup yongbok.net /usr/local/vpopmail/bin/vchkpw qmail-pop3d Maildir
34678 ?? I 0:00.00 qmail-lspawn
DNS 서버의 MX 레코드 추가
MX 레코드는 Bind 기준으로 설명 드리며 아래 처럼 Zone 파일마다 MX 레코드를 추가 해준 후 네임서버를 재시작 해주면 됩니다.
$TTL 10
@ IN SOA ns.yongbok.net. ruo91.yongbok.net.
(
2010031215 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ; Minimum
)
@ IN NS ns.yongbok.net.
MX 10 yongbok.net.
[root@yongbok ~]# /etc/rc.d/named restart
Stopping named.
Starting named.
이후 외부에서 메일이 보내지는지 확인 해보면 됩니다.
참고
http://qmail.kldp.net
http://hbesthee.tistory.com/8
http://logicsquad.net/freebsd/qmail-how-to.html
Tag // FreeBSD,
FreeBSD Qmail 구축,
FreeBSD Qmail 설치,
FreeBSD 메일,
FreeBSD 메일 서버,
FreeBSD 큐메일,
Mail,
Mail Server,
Qmail,
Qmail 구축,
Qmail 설치,
메일,
메일 서버

