우분투 14.04에 메일 서버를 세팅하려고 한다.


할 때마다 인터넷 검색하는게 지겨워서 제대로 정리해놓으려는 목적.

다음에 보고, 그냥 따라하면 되도록...


현재 서버의 상태는 apache2, php5, mysql, vsftp, bind9 패키지가 설치되어서 정상 동작하고 있는 상태.


메일서버 세팅하고, roundcube로 웹메일 구현하는 것이 목표다.


postfix는 메일보내기 위한 데몬,

dovecot은 메일 수신을 위한 데몬,

roundcube는 웹메일 클라이언트.


하나하나 해보자.

참고는 http://www.krizna.com/ubuntu/setup-mail-server-ubuntu-14-04 다.


메일주소는 @my.kr 이라고 치고, 메일서버 주소는 서버 도메인명과 같게 할 거다. 따로 mail.my.kr 이렇게 하지 않는다는...


postfix 설치 및 설정


/etc/hostname 에 my.kr 이 할당되어있어야한다.


편집기로 열어서 my.kr 이라고 적어준다.


my.kr


/etc/hosts 에 고정IP와 도메인명을 적어준다.


123.123.123.123 my.kr


이제 postfix 를 설치한다.


$ sudo apt-get install postfix


설치 중에 묻는 것들이 있는데, 그냥 엔터엔터로 설치한다. 이후에 다시 설정을 할 거다.






설치가 끝나면 다시 설정을 한다.


$ sudo dpkg-reconfigure postfix





여기는 메일이 리다이렉트될 실제 관리자 계정 적어주면 된다. 실제 ryu 라는 계정이 sudo를 할 수 있는 관리자 계정이며, 실제 사용자가 아닌 시스템 계정들과 관련된 메일은 이 계정으로 전달된다는 거 같다.








이제 /etc/postfix/main.cf 파일을 수정한다. SMTP-AUTH 어쩌구라는데, 자세한 건 모르겠다. 파일 열어서 추가해주자.


home_mailbox = Maildir/

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

smtpd_sasl_local_domain =

smtpd_sasl_security_options = noanonymous

broken_sasl_auth_clients = yes

smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

smtp_tls_security_level = may

smtpd_tls_security_level = may

smtp_tls_note_starttls_offer = yes

smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes



터미널에서 아래 명령을 통해 인증서를 만든다.


$ openssl genrsa -des3 -out server.key 2048

$ openssl rsa -in server.key -out server.key.insecure

$ mv server.key server.key.secure

$ mv server.key.insecure server.key

$ openssl req -new -key server.key -out server.csr

$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

$ sudo cp server.crt /etc/ssl/certs

$ sudo cp server.key /etc/ssl/private


인증 파일들을 /etc/ssl 로 복사했다.


postfix에게 이 파일들의 위치를 알려준다.


$ sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key'

$ sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt'


이제 /etc/postfix/master.cf 파일을 열어서 아래 내용처럼 주석처리된 것들을 해제해준다.


submission inet n       -       -       -       -       smtpd

  -o syslog_name=postfix/submission

  -o smtpd_tls_security_level=encrypt

  -o smtpd_sasl_auth_enable=yes

  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject

  -o milter_macro_daemon_name=ORIGINATING

smtps     inet  n       -       n       -       -       smtpd

  -o syslog_name=postfix/smtps

  -o smtpd_tls_wrappermode=yes

  -o smtpd_sasl_auth_enable=yes

  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject

  -o milter_macro_daemon_name=ORIGINATING


dovecot SASL 을 설치한다.


$ sudo apt-get install dovecot-common




/etc/dovecot/conf.d/10-master.conf 파일을 열고 # Postfix smtp-auth 를 찾아 아래처럼 수정한다. 


# Postfix smtp-auth

unix_listener /var/spool/postfix/private/auth {

    mode = 0660

    user = postfix

    group = postfix

}


/etc/dovecot/conf.d/10-auth.conf 열어 auth_mechanisms = plain 을 찾아 아래처럼 수정한다.


auth_mechanisms = plain login


이제 postfix, dovecot 을 재시작한다.


$ sudo service postfix restart

$ sudo service dovecot restart


여기서 테스트!


터미널에서 telnet


$ telnet my.kr smtp

Trying 127.0.1.1...

Connected to my.kr.

Escape character is '^]'.

220 my.kr ESMTP Postfix (Ubuntu)

ehlo my.kr

250-my.kr

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


요 3개가 나와야된단다.


250-STARTTLS

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN


587포트로도 테스트를 해보라는데, 접속은 되지만 결과는 다르게 보인다.


$ telnet my.kr 587

Trying 127.0.1.1...

Connected to my.kr.

Escape character is '^]'.

220 my.kr ESMTP Postfix (Ubuntu)

ehlo my.kr

250-my.kr

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-STARTTLS

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN


이제 dovecot 본체를 설치한다.


sudo apt-get install dovecot-imapd dovecot-pop3d


/etc/dovecot/conf.d/10-mail.conf 를열어


mail_location = mbox:~/mail:INBOX=/var/mail/%u


를 찾아서 아래처럼 수정한다.


mail_location = maildir:~/Maildir


/etc/dovecot/conf.d/20-pop3.conf 를 열어


#pop3_uidl_format = %08Xu%08Xv 


를 찾아 주석 해제한다.


pop3_uidl_format = %08Xu%08Xv


/etc/dovecot/conf.d/10-ssl.conf 를 열어


#ssl = yes 


를 찾아 주석 해제한다.


ssl = yes


dovecot 재시작!


$ sudo service dovecot restart



pop3와 imap 테스트!

110, 993,995,143 포트에 접속해본다.



$ telnet my.kr 110

Trying 127.0.1.1...

Connected to my.kr.

Escape character is '^]'.

+OK Dovecot (Ubuntu) ready.

^]

telnet> q

Connection closed.

$ telnet my.kr 995

Trying 127.0.1.1...

Connected to my.kr.

Escape character is '^]'.

^]

telnet> q

Connection closed.

$ telnet my.kr 993

Trying 127.0.1.1...

Connected to my.kr.

Escape character is '^]'.

^]

telnet> q

Connection closed.

$ telnet my.kr 143

Trying 127.0.1.1...

Connected to my.kr.

Escape character is '^]'.

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS LOGINDISABLED] Dovecot (Ubuntu) ready.

^]

telnet>



110, 143은 dovecot 이 리스팅하고 있는데, 993,995는 아니네??


110 : pop3

143 : imap

993 : imaps

995 : pop3s


TLS/SSL 포트라고 나오는데.... 서버가 SSL이 아니라 그런가...?


여기까지 잘 됐으면 메일 송수신은 되어야한다.


mail 명령어로 간단하게 테스트!


$ sudo apt-get install mailutils


$ mail my.other.mail@naver.com

Cc: test

Subject: subject...

this is test message.


$


내용을 다 적고 Ctrl+D 하면 작성완료! 전송이다.


네이버 메일로 잘 날아왔다. 처음 Cc: 에 적은 test 는 test@my.kr 를 가리킨다. 같은 서버에 있는 아이디~!


네이버에서 답장한 메일도 잘 받아졌다. 끝!


아...roundcube 가 남았지?!


너무 길어져서 다음 글에 정리해야겠다.





































Posted by 똑똑한 영장류