2008. 12. 2. 13:28

OpenWebmail on FreeBSD 설치가이드

openWebmail 설치가이드

SMTP (Mail) 서버 오픈소스 진영에서 메일 서버는 sendmail, qmail, postfix의 삼각구도라고 볼 수 있습니다.
sendmail은 처음부터 있었다는 점과 다양한 설정이 가능하다는 장점을 지니고 있지만 그만큼 많은 보안 문제가 발생하고 있습니다.

그 대안으로 djbdns의 제작자가 만든 qmail과 IBM에서 공개한 소스로 개발되고 있는 postfix가 있습니다.

여기서는 간편하게 설정이 가능한 postfix를 이용토록 하겠습니다.

 

공식버젼인 postfix 포트를 설치하고 웹메일을 위해 vm-pop3d와 OpenWebmail을 설치하겠습니다.

FreeBSD에는 Port라는 설치 개념이 있기에, 아주 편리하게 OpenWebmail을 설치할수 있습니다.

 

# cd /usr/ports/mail/postfix

 

# make install clean

 

PHP에서와 같이 모듈을 선택하는 목록이 나옵니다.

 

대부분 선택없이 설치하면 되지만, 선택없이 설치하게 되면,
웹메일만 사용하는 경우가 되겠다..

(여기서 잠깐, 만약 메일 사용자들에게 인증을 통한
SMTP 기능을 부여하고 싶다면, 아래를 따라 한다.
cd /usr/ports/mail/postfix
에서 make 하여 SASL2, TLS 를 선택하고 엔터 한다.
그리고 나서 다시 make install clean 해준다.
설치가 끝나고 나면,
cd /usr/local/lib/sasl2

echo "pwcheck_method: saslauthd" > smtpd.conf
mkdir deactivated
mv *ntml* deactivated

ldd /usr/local/libexec/postfix/smtpd

/usr/local/libexec/postfix/smtpd:

libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x280a0000)        
libpam.so.2 => /usr/lib/libpam.so.2 (0x280b2000)        
libcrypt.so.2 => /lib/libcrypt.so.2 (0x280b9000)        
libssl.so.3 => /usr/lib/libssl.so.3 (0x280d1000)        
libcrypto.so.3 => /lib/libcrypto.so.3 (0x280fe000)        
libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x281f0000)        
libc.so.5 => /lib/libc.so.5 (0x281fc000)

sasl2 에 ssl 들어가 있으니 됫고~

cd /usr/local/etc/postfix
mkdir ssl ; cd ssl
openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650
정보 대강 적어주고~

vi /usr/local/etc/postfix/main.cf
myhostname 이랑 mydomain, mydestination 적어주고 맨 밑으로 가서

# sasl config
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =      #여긴비워두기
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
#smtpd_tls_auth_only = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

다음을 추가.

cd /usr/local/etc/rc.d
./saslauthd.sh start

(saslauthd.sh가 없었습니다. 그래서 검색해본 결과 saslauthd.sh 는 cyrus-sasl2-saslauthd 패키지를 설치해야 나타납니다. (/usr/port/security)

sasl 은 sasldb2.db를 이용하느냐 아니면 pwcheck를 이용하느냐에 따라 달라지는데 후자의 경우에는 cyrus-sasl2-saslauthd를 설치해야 합니다. 그리고 위의 Xandy님의 말씀데로 하면 sasl-auth가 구현됩니다.

아..saslauthd.sh도 조금 수정해야 합니다.
-a pam 을 -a getpwent로 수정해줍니다...
saslauthd_flags=${saslauthd_flags:-"-a pam"}    # Flags to saslauthd program

saslauthd_flags=${saslauthd_flags:-"-a getpwent"}       # Flags to saslauthd program

)

ln -s /usr/local/sbin/postfix postfix.sh
./postfix.sh start
자 일단 postfix 떳으니 테스트만 남았구려

telnet localhost smtp

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 zr.to ESMTP Postfix
EHLO foobar.com
250-zr.to
250-PIPELINING
250-SIZE 10240000250-VRFY
250-ETRN250-STARTTLS
250-AUTH LOGIN PLAIN OTP DIGEST-MD5 CRAM-MD
5250-AUTH=LOGIN PLAIN OTP DIGEST-MD5 CRAM-MD5
250-XVERP
250 8BITMIME

저대로 나오믄 대충 끝! 윈도에서 아웃룩 같은걸로 이제 테스트해보고 별일없으면 계속쓰기

postfix 설정에 관한건 몇가지 건너 뛰었으니 그부분은
자신이 알아서 하시오 ㅡ,.ㅡ (aliases, access 기타 이딴 파일들)



)

설치 도중 두번 사용자의 입력을 묻습니다.

설치 스크립트가 postfix란 유저와 mail이란 그룹을 추가하길 원하는가와 Postfix를 기본 메일러로 활성화할 것인가 하는 것이므로 둘다 y라고 하십시오.

그리고 직접 작업해줘야하는 사항이 나오는데 이것은 FreeBSD 시스템이 기본으로 sendmail을 시스템로그 등에서 사용하기 때문에 이것을 postfix로 대체하기 위한 사항입니다.

 

(postfix나 qmail에서는 sendmail의 이름을 가진 sendmail 대체 툴을 지원합니다.)

 

다음을 /etc/rc.conf 에 추가합니다.

 

# vi /etc/rc.conf

 

*** /etc/rc.conf ***

sendmail_enable="YES"

sendmail_flags="-bd"

sendmail_outbound_enable="NO"

sendmail_submit_enable="NO"

sendmail_msp_queue_enable="NO"

*****************

 

그리고 다음을 실행해줍니다.

 

# cd /usr/local/etc/rc.d

# ln -s /usr/local/sbin/postfix postfix.sh

 

이번엔 /etc/periodic.conf 에 다음을 추가해줍니다.

기본으로는 /etc 안에 periodic.conf 라는 파일이 없습니다.

이는 FreeBSD가 일일 관리 사항(daily maintenance)을 sendmail 전용으로 보고하기 때문입니다.

이를 비활성하는 것입니다.

 

# vi /etc/periodic.conf

 

*** /etc/periodic.conf ***

daily_clean_hoststat_enable="NO"

daily_status_mail_rejects_enable="NO"

daily_status_include_submit_mailq="NO"

daily_submit_queuerun="NO"

**********************

 

이제 드디어 postfix 설정을 합니다.

/usr/local/etc/postfix 안에 설정파일들이 있으며 여러 샘플 파일들이 있으므로 필요에 따라 참고하시면 됩니다.

# cd /usr/local/etc/postfix

# vi main.cf

 

*** /usr/local/etc/postfix ***

mydomain = mydomain.com

myorigin = $mydomain

alias_maps = hash:/etc/mail/aliases

 

************************

alias_maps 의 경우는 main.cf의 기본 설정과 FreeBSD 시스템과 차이가 있어서 적어줍니다.

aliases 파일을 수정 한 후에는 항상 다음 명령으로 aliases 데이터베이스를 업데이트해줍니다.

 

# /usr/local/sbin/postalias /etc/mail/aliases

 

여기까지처럼만하면 도메인을 하나만 가진 서버에 대한 설정으로 충분합니다.

가상 호스팅으로 다중 도메인을 써야할 경우에는 http://www.freebsddiary.org/postfix.php 를 참조하시기 바랍니다.

 

이제 vm-pop3d를 설치합니다.

 

# cd /usr/ports/mail/vm-pop3d

# make install clean

# cd /usr/local/etc/rc.d

# cp vm-pop3d.sh.example vm-pop3d.sh

 

웹메일을 위한 OpenWebmail가 Postfix와 vm-pop3d와 함께 유자가 같아야 하기 때문에 vm-pop3d의 구동시 유저 아이디를 지정해주어야 합니다.

 

# vi vm-pop3d.sh [ -x /usr/local/sbin/vm-pop3d ] && /usr/local/sbin/vm-pop3d -d && echo -n " vm-pop3d"

 

위의 부분을 다음과 같이 고쳐줍니다.

 

[ -x /usr/local/sbin/vm-pop3d ] && /usr/local/sbin/vm-pop3d -d -u postfix && echo -n " vm-pop3d"

 

이번엔 마지막으로 OpenWebmail을 설치합니다.

 

# cd /usr/ports/mail/openwebmail

# make install clean

 

이제 http://서버 주소/cgi-bin/openwebmail/openwebmail.pl

 

로 접속을 하고 로그인을 하면 처음 로그인을 했다며 설정을 하라는 화면이 나옵니다.

 

Continue 버튼을 누르면 설정 화면이 나옵니다. 윗부분의 Charset은 euc-kr 로 선택해주고 나머지는 읽어보고 구미에 맞춰 설정해줍니다.

 

혹시 윗부분의 From: 에 이메일 주소가 도메인명.도메인명.com 과 같은 식으로 제대로 나오지 않는다면 다음과 같이 해주십시오.

 

# cd /usr/local/www/cgi-bin/openwebmail/etc/

 

# vi openwebmail.conf domainnames auto

 

를 찾아서 domainnames mydomain.com 로 고쳐주면 됩니다.

 

이것은 좋은 해결책은 되지 못하겠지만 도메인을 하나만으로 운영할 경우에는 간편한 편법이 될 수 있겠습니다.

좋은 방법을 알고 계시면 알려주시기 바랍니다.

(기본설정으로 해서 메일을 보낼때 메일이 주고 받지 못하게 되면,

 

vi /usr/local/etc/postfix/main.cf 의 아래부분에서
한 부분을 주석을 제거한다.

# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
#mydestination = $myhostname, localhost.$mydomain
mydestination = $myhostname, localhost.$mydomain $mydomain
#mydestination = $myhostname, localhost.$mydomain, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain


vi /usr/local/www/cgi-bin/openwebmail/etc/openwebmail.conf 의

domainnames를 세팅해준다. 

오픈웹메일을 사용하면서
계정사용자의 메일 용량 문제와 대용량(10메가이상) 메일을
수신하지 못하는 경우에는
vi /usr/local/etc/postfix/main.cf 에 아래의 값을 세팅해준다...

mailbox_size_limit = 0
message_size_limit = 20000000