반응형

출처: http://parksk.tistory.com/20

 

SSH, FTP 등의 구축은 손쉽게 해왔는데 메일서버는 시간 날 때마다 조금씩 손봐왔음에도 불구하고...
실패였다. 왜 안되지?!
그냥 뭐 내 서버 내의 계정들끼리만 주거니 받거니...

내가 하고 있는게 메일서버 구축이 맞는건지도 제대로 모른채
무작정 검색하고 따라하고 검색하고 따라하기의 반복.

새벽 3시경. 드디어 성공했다.
아, 바로 이거 말하는 거였구나.
으이구. 머리가 나쁘면 손발이 고생이라더니,
뭔지도 모르고 무작정 덤벼든게 잘못이었다. 이렇게 쉬운걸 어휴...

결정적으로 메일서버를 운영하려면 도메인이 필요하다는 것을 모르고 있었던 것이다.
그걸 알게되고서야 부랴부랴 메일서버를 지원하는 무료계정을 찾아 만들고서
다시 우분투에 메일서버를 구축하였다.

메일서버를 지원하는 무료계정은 www.dnip.net 에서 회워가입 후 받을 수 있다.
나는 pskalyber.dnip.net 으로 계정을 받았으며, 아래 설명에도 내 계정을 사용하여 예를 들었다.

[닫기] postfix 메일 서버 구축

sendmail, qmail, postfix 등의 메일서버 프로그램중 제일 최신 으로 보이는 postfix 를 설치했다.
$sudo apt-get install postfix

그리고 postfix 환경설정을 위해
$sudo dpkg-reconfigure postfix

터미널에 파란화면(?) 비슷하게, 터미널 치고는 화려한 그래픽을 자랑하는 메뉴같은것이 나온다
각 질문마다 하나씩 답을 해야 하는 관문이다.



이제 postfix의 설정파일을 수정할 차례다.
$sudo gedit /etc/postfix/main.cf
설정 파일이 열렸으면 파일의 끝에 아래 내용을 추가한다.
아래 내용은 SASL을 사용하여 SMTP인증을 하기 위한 설정이다

home_mailbox = Maildir/
mailbox_command =

smtpd_sasl_local_domain = 
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
myorigin = /etc/mailname
inet_protocols = all

그리고 그 아래에 또 아래 내용은 추가한다.
이는 들어오고 나가는 메일에 대한 TLS 인크립션 사용을 위한 설정이다. 

smtp_tls_auth_only = no
smtp_use_tls=yes
smtpd_use_tls=yes
smtp_tls_note_starttls_offer=yes
smtpd_tls_key_file=/etc/ssl/private/smtpd.key
smtpd_tls_cert_file=/etc/ssl/certs/smtpd.crt
smptd_tls_CAfile=/etc/ssl/certs/cacert.pem
'smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
myhostname = pskalyber.dnip.net


이제 클라이언트에서 메일을 보낼 때 인증절차를 위해 sasl2를 설치해야 한다
$sudo apt-get install iibsasl2 libsasl2-modules sasl2-bin

그리고 smtpd.conf에 다음 내용을 써넣는다.
$sudo gedit /etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

위 내용을 smtpd.conf 에 추가하고나면 이제 saslauthd 를 수정한다
$sudo gedit /etc/default/saslauthd

start 와 options 을 수정한다
start=yes
options="-c -m /var/spool/postfix/var/run/saslauthd"

그리고 saslauthd 내용에 아래를 추가한다.

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

이제 /var/spool/postfix/var/run/saslauthd 를 dpkg 한다.
$sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

saslauthd 를 실행한다.
$sudo /etc/init.d/saslauthd start

이제 메일 수신 프로그램인 pop과 imap을 설치한다
$sudo apt-get install courier-pop
$sudo apt-get install courier-imap


smtp 포트 25, pop 포트 101 이 열려있는지 확인한다
$netstat -ntl

smtp 를 테스트 해본다
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 pskalyber.dnip.net ESMTP Postfix (Ubuntu)
ehlo pskalyber.dnip.net
250-mail.yourdomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: pskalyber@pskalyber.dnip.net
250 2.1.0 Ok
rcpt to: mylovejsm@love.com
250 2.1.5 Ok
data
354 End data with .
Subject: this is test
I Love U
. (and Enter In a new Line)
250 2.0.0 Ok: queued as C515B863FC
quit
221 2.0.0 Bye
Connection closed by foreign host.

pop을 테스트 해본다.
$ telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user "사용자아이디"
+OK Password required.
pass "사용자패스워드"
+OK logged in.

[닫기] postfix 메일 서버 구축


이제 우분투에 기본으로 설치되어있는 에볼루션메일을 이용하여 메일을 보내고 받을 수 있도록 설정해보자.
에볼루션메일을 실행 후, 편집-기본 설정에서 [추가]를 눌러서 새 메일 계정을 추가한다
pop은 pskalyber.dnip.net 으로 설정했고 smtp는 pskalyber.dnip.net 으로 하니까 메일 송신이 안되길래
smtp대신에 sendmail을 하니까 메일 송신이 되었다. (왜 그런지는 나도 잘 ...-_-)
여하튼 일단 잘 보내지니까 왜 그런지는 나중에 생각해볼 일이고.

[닫기] 에볼루션메일 설정 스냅샷


[닫기] 에볼루션메일 설정 스냅샷


메일 송수신이 잘 되는 것을 확인!!!
OK!!!

복잡했다. 특히나 postfix설정 부분이 엄청 복잡했다.
저걸 다 저렇게 설정을 해야되는 것 같지는 않은데. 분명 쓸떼없는 설정 부분도 있겠지만
내가 일일이 그런 부분을 찾아볼 시간은 없었기 때문에 그냥 시키는대로 다 해버렸다.

투자한 시간은 많은데, 아무리 해도 안되길래 엄청 짜증났었지만
그래도 성공하고 보니 그만큼 보람이 있다.

아 좋아!

<참고 사이트>
https://help.ubuntu.com/community/PostfixBasicSetupHowto
https://help.ubuntu.com/community/Postfix

반응형

+ Recent posts