우분투(데비안)에서 메일시스템구축(postfix+popa3d+sasl+tls)
1. postfix
메일을 보내주는 서버(smtp)이고 우분투설치시 기본적으로 깔리는 패키지입니다.
그렇지만 디폴트설정이 로컬머신에서만 서비스 해 주게 되어있습니다.
머신외부로부터의 요청에 대해서도 서비스 해 주기 위해서는 postfix 설정을
바꾸어줍니다(Internet Site)
$ sudo dpkg-reconfigure postfix
*General type of Configuration?
->Internet Site
*Where should mail for root go
->hokim(관리자 계정)
*Mail name?
->ubuntu.org(메일주소의 @이후의 부분)
2. popa3d
서버의 메일박스에 쌓인 메일을 외부에서 가져갈 수 있게 해주는 서비스입니다
popa3d는 서버계정을 가지고 있는 유저만을 서비스해 줍니다.
(가상 메일계정을 지원하지 않습니다)
$ sudo apt-get install popa3d
3. sasl로 smtp 인증
1과 같이 postfix를 설정하더라도 외부에서 서버의 유저에게만 메일을 보낼수 있고,
서버를 거쳐 다른 곳으로 보낼수 없습니다(no relay). 또한 외부에서 postfix서비스를
사용하는데 인증절차를 거치지 않습니다. 따라서 relay를 할 경우 sasl로 인증절차를
밟도록 해줍니다. 따로 smtp 서버를 가지고 있지않은 XP Home edition이하에서의
outlook 같은 클라이언트들은 이러한 기능을 이용해 서버를 거쳐 메일을 다른곳으로
보내야 합니다
$ sudo apt-get install postfix-tls libsasl2-modules sasl2-bin
$vi /etc/postfix/saslauthd
pwcheck_method: saslauthd mech_list: PLAIN LOGIN
$vi /etc/init.d/saslauthd
...... PWDIR=/var/run/saslauthd PARAMS="-m /var/spool/postfix/var/run/saslauthd" # 추가 PIDFILE="/var/run/${NAME}/saslauthd.pid" ....
$ sudo mkdir -p /var/spool/postfix/var/run/saslauthd
$ sudo chown -R root:sasl /var/spool/postfix/var/
$ sudo adduser postfix sasl
$vi /etc/default/saslauthd
START=yes MECHANISMS="pam"
/etc/postfix/main.cf에 다음을 추가
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = broken_sasl_auth_clients = yes
4. tls을 이용한 인증절차 암호화
3의 인증절차는 username과 password가 plain text로 전달되기 때문에
중간에 패킷을 가로채는 경우를 대비하여 transport layer에서 암호화를
해줍니다
$sudo apt-get install ca-certificates
$/usr/lib/ssl/misc/CA.pl -newca
$/usr/lib/ssl/misc/CA.pl -newreq-nodes
$/usr/lib/ssl/misc/CA.pl -sign
인증서를 만드는 과정에서 물어보는것에 대해서 적당히 입력해 주십시오
$ sudo mkdir /etc/postfix/ssl
$ sudo cp newcert.pem /etc/postfix/ssl/
$ sudo cp newreq.pem /etc/postfix/ssl/
$ sudo cp demoCA/cacert.pem /etc/postfix/ssl/
/etc/postfix/main.cf에 다음을 추가
smtpd_use_tls = yes #smtpd_tls_auth_only = yes # You should uncomment to prevent people from passing their passwords in the clear! smtpd_tls_key_file = /etc/postfix/ssl/newreq.pem smtpd_tls_cert_file = /etc/postfix/ssl/newcert.pem smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 3 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
$ vi /etc/postfix/master.cf
... # only used by postfix-tls tlsmgr fifo - - n 300 1 tlsmgr #uncomment smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes #uncomment 587 inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes #uncomment
$sudo /etc/init.d/postfix restart
$sudo /etc/init.d/saslauthd start
5. 테스트
$ perl -MMIME::Base64 -e 'print encode_base64("username\0username\0password");'
dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
인증절차에서는 base64로 인코딩된 username과 password를 받기 때문에
username과 password에 자신의 계정값을 넣고 encoding 된 결과를 얻어서
다음과 같은 테스트과정에서 입력합니다
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 chep ESMTP Postfix (Ubuntu)
ehlo localhost
250-chep
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
auth plain dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
235 Authentication successful
위와 같은 결과 나오면 제대로 설정이 된것입니다
실제로 다른 머신에서 아웃룩이나 썬더버드로 테스트 해 보시기 바랍니다
참고자료
http://www.fatofthelan.com/articles/articles.php?pid=22
Re: 우분투(데비안)에서 메일시스템구축(postfix+popa3d+sasl+tl
만약 가상 메일 계정등이 필요하다면 (postfix 는 이미 postgresql, mysql 등의 backend 를 이용한 가상메일 계정을 지원하고 있습니다) dovecot 이나 courier-imap 등을 사용해보시기를 바랍니다..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
감사합니다.여러가지 많이 배우고, 많은 도움이 되었습니다.
감사합니다.
여러가지 많이 배우고, 많은 도움이 되었습니다.
dd
dd
aa
:cry: aa :lol:
ㅊㅊㅊㅊㅊㅊ :mrgreen:
이것이야 말로 모든 메일 포스트에 끝판왕이다.
위대한 글이다.
경배하라.
댓글 달기