Unix/Ubuntu

메일서버 설정

ForceCore 2007. 10. 21. 07:43

우분투로 메일서버를 구축하는것, 드디어 다루는군 -_-!!!


우분투 서버로 설치했고, 메일서버용으로 설치했다고 가정한다.
버전은 7.10.

일단 뭐가 되고 안 되는지 보자!

우분투를 시스템에 설치할 때, 메일을
인터넷용으로 할지
로컬용으로 할지
스마트로 할지
이런걸 묻는데 인터넷용으로 하였다.

그 뒤 테스트를 해보았다.

1. 메일 보내고 받기는 된다.
2. POP3접속을 TLS를 통해 접속하면 썬더버드나 아웃룩이 메일을 가져올 수 있다.
3. IMAP역시 마찬가지로 된다.
4. relay는 안 된다.

기본 설정이 아주 무난하군!
backend는 postfix, dovecot이다. (역시 필자가 솔라리스에서도 사용하고 있는 설정.)
우리가 이제 해야 하는 것은 smtp auth뿐이다.

컨닝 소스는: ubuntu postfix smtp auth
라고 구글에 쳐서 나온, 첫번째 결과물!
http://adomas.org/2006/08/postfix-dovecot/

SMTP authentication with Postfix섹션을 보자.
일단은 sasl2를 설치하라고 하는데...

apt-get install libsasl2 libsasl2-modules sasl2-bin 혹은,
apt-get install libsasl2-2 libsasl2-modules sasl2-bin
명령어가 조금 달라졌다. sasl2가 버전업 해서 -_-
설치가 끝나면,
 * To enable saslauthd, edit /etc/default/saslauthd and set START=yes시키는대로 해당 파일을 열어서 START=yes로 고치면 됨.

그런데 컨닝 자료에 의하면 ubuntu는 디폴트로 chroot된 환경에서 메일관련 프로그램들이 돌아가는 모양이다? 그리고 실제로 그런듯 -_-;;
/var/spool/postfix디렉토리로 가보면 여러가지 디렉토리와 파일.. etc같은 것 따위가 있음을 볼 수 있다. chroot되어 postfix가 실행된다는 증거.

/etc/init.d/saslauthd를 수정한다 라고 컨닝자료에 있지만,
여전히 /etc/default/saslauthd를 수정해야 함.
그 안에 보면 OPTIONS="-c"라고 된 것이 있다.
친절하게도 코멘트로 Example for postfix users:라고 있는데 -_-ㅋㅋ
그대로 해주면 됨.
그래서 OPTIONS="-c -m /var/spool 어쩌구"로 되면 됨.

mkdir -p /var/spool/postfix/var/run/saslauthd
chown -R root:sasl /var/spool/postfix/var/run/saslauthd
명령을 써서 디렉토리를 만들고 sasl에게 소유권을 주고...
/etc/init.d/saslauthd restart
로 데몬을 시작!
과연...?

testsaslauthd -u 아이디 -p 비번
명령어로 saslauthd가 제대로 인증이나 하는지를 체크해야 함.
안 된다: connect() : No such file or directory
랜다!... -m /var/spool 어쩌구를 다시 제거하니 성공.
아마 문제가 생기면 이쪽일듯... postfix는 chroot되었는데 saslauthd는 안 그러니까.

이제 postfix쪽을 설정해서 saslauthd와 물려야 함.

/etc/postfix/sasl로 들어가서 smtpd.conf를 만든다.
내용:
pwcheck_method: saslauthd
main.cf도 수정해야 한다.
ubuntu에 특화된 것이 아니라면, example로 있을 내용이지만...
main.cf에 다음을 붙여넣기 해야 함.

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_application_name = smtpd
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
 
permit_sasl_authenticated,
   permit_mynetworks,
 
check_relay_domains
하였으면, postfix를 재시작.
이제 postfix가 인증을 제대로 하나 테스트 해보자.

perl -MMIME::Base64 -e 'print encode_base64("아이디\0아이디\0비번");'
암호화가 되면 이상한 외계어(?)가 나올 것이다.
dXNlcm5hbWUAdXNlcm5hbWUMb29iYXI=
이런식임.
telnet localhost 25
명령어를 통해 메일 서버와 교신을 시작해보자.
220 mail.foo.com ESMTP Postfix

EHLO my.host
250-mail.foo.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 GSSAPI
250-XVERP
250 8BITMIME
AUTH PLAIN dXNlcm5hbWUAdXNlcm5hbWUMb29iYXI=
235 Authentication successful
QUIT
221 Bye

저렇게. -_-...
필자는 시나리오대로 되지 않아서 success가 안 떴다 ㅡ,.ㅡ;;
만약 실패하면, /var/log/mail.log를 볼 것.
warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
라고 하는군!!!
 
역시나, 찜찜하게 넘어갔던, testsaslauthd문제다.
testsaslauthd가 실패하는것을 무시하고,
/etc/default/saslauthd에서
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
라고 설정하면 동작한다. 이대로 OK.
 
선더버드에서 TLS를 사용하는 옵션을 체크하면
SMTP-AUTH단계에서도 암호화가 잘 동작한다.