티스토리 뷰

메일 관련 PORT

메일 서비스는 사용하는 포트가 많다. 보내는 프로토콜과 받는 프로토콜이 따로있고, ssl 인증을 사용하는 포트는 또 따로 존재한다. 설치 이후에는 전부 사용하진 않고 전송용, 수신용 포트 한개씩 만 사용하게된다.

  1. 25 - smtp(전송) - 암호화 되지 않은 메일 전송 프로토콜이다.
  2. 465 - smtps(전송) - SSL 인증을 받아서 사용하는 메일 프로토콜이다.
  3. 587 - submission(송신) - smtp 를 TLS 인증 방식으로 전송하는 포트이다?
  4. 110 - pop3(수신) - client 가 메일을 저장하는 방식으로 한번 메일서버에서 내려받으면 메일서버에서는 삭제된다고한다. 보안상으로는 imap 방식보다 pop3 가 더좋다는 글을 본적이 있다.
  5. 143 - imap(수신) - 메일서버에 메일 전부가 저장되는 구조로 접속하는 client 는 한번 받은 메일도 다시 내려받을수 있다. pop3 이후에 나왔다. 대체로 imap 사용을 권장하는 듯하다.
  6. 993 - imaps(수신) - imap 에 ssl 을 적용한 프로토콜이다.

외부에서 outlook 같은 메일 client 프로그램으로 접근하려면 포트포워딩이 필요한데 송신용, 수신용 한개씩만 열어주면 된다.

# 포트 포워딩 목록
#smtp    192.168.0.35    tcp 25-25   25-25   
#smtps    192.168.0.35    tcp 465-465 465-465 
#pop3    192.168.0.35    tcp 110-110 110-110 
#imap    192.168.0.35    tcp 143-143 143-143 
imaps    192.168.0.35    tcp 993-993 993-993 
submission    192.168.0.35    tcp 587-587 587-587

Mail Server설치

linux 에서 SMTP server(보내는 메일 서버) 로 대표적으로 sendmail 이나 postfix, Qmail 등이 있고, 메일을 수신하는 server 로 dovecot 등이 있다. OS 는 Ubuntu 16.04 를 사용하고, 프로그램 설치는 어렵지 않고 설정하는 부분이 복잡해서, 실수하기 슆다. CentOS 에도 설치를 해보았는데 설치경로등이 다를뿐 설정하는 방법이 크게 달라보이지 않았다. 여러 블로그를 참고 하여 메일 서버 설정을 하였는데 digitalocean 의 문서가 제일 정리가 잘되어 있었다. mysql 로 메일 계정관리를 하기 때문에 사용할 DB 를 미리 준비하도록 한다. 문서대로 설치를 하면서 고칠 부분은 아래와 같다.

  1. example.com 을 내 도메인으로 바꿔주도록한다.
  2. /etc/postfix/main.cf 에서 mynetwork = * 로 수정해주어야 외부 네트워크 에서 접근이 가능해진다. 그리고 smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem 부분에서 ssl 인증서를 등록해야 한다. openssl 이나 LE(let's encrypt)로 발급받은 인증서를 등록해주도록한다.

openssl 인증서 발급받기

openssl 은 도메인없이 바로 인증서 발급 가능하다.

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 x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

LE 인증서 발급 받기

Let's Encrypt 는 여러단체의 스폰서를 받는 무료 보안인증서(SSL) 발급 기관이다. 스폰하는 단체중에 mozila, chrome 등도 보인다. LE 인증서를 발급 받기 위해서는 자기 소유의 도메인이 필요하다. 설치는 주로 certbot 이라는 파이썬으로 만들어진 자동 설치 모듈로 진행한다. 대부분의 사용자가 web server( apache, nginx ) 에 https 를 적용하기 위해 사용하는데 웹서버 없이 도메인만 가지고 인증서만 얻어 와서 메일에 사용할수 있다.

sudo git clone https://github.com/certbot/certbot /opt/cerbot && cd /opt/cerbot

certbot certonly -d khphub.com

이렇게 발급받은 인증서와 키는 아래와 같은 경로로 생성된다.

  • /etc/letsencrypt/live/khphub.com/fullchain.pem
  • /etc/letsencrypt/live/khphub.com/privkey.pem

특이점은 3개월에 한번씩 인증서 갱신이 필요하다. crontab 에 예약 작업을 걸어 놓으면 된다고 하는데 갱신하는 명령어를 잘 작동하는지 모르겠다. 설치하고 바로 갱신을 시도하면 아직 갱신 기간이 아니라고 나오면서 실패한다.

Mail Server Test

  1. SEND - telnet [hostname] 25 등 으로 접속해서 TEST 진행하는게 정석이지만 SMTP 프로토콜 명령어(helo등)및 보내는 과정을 익혀야한다. 거기다가 ssl 인증서를 활용한 SMTPS 는 방식도 다르고 더 복잡하다. 맘 편히 테스트 하기 위해서 윈도우 클라이언트 프로그램인 SMTPDiagTool 을 사용하였다. binary 버전은 설치 없이 바로 실행가능하다. 프로그램 재시작시 모든 입력 값이 사라지는데, smtp server address, id, password 등을 계속 바꿔가면서 send 테스트를 하기에 좋다. 이툴은 메일은 보내면 그 과정에서 주고 받는 정보들을 log 로 출력해준다. outlook 이나 thunderbird 에 log 보는 기능을 자세하게 찾아보진 않았는데 log 를 통해서 보내는게 성공했는지 실패했는지 등 왜 실패 했는지 등이 출력된다.
  2. RECEIVE - imap 이나 pop3 테스트 전용 프로그램을 찾을 수 없었다. 그래서 mozila thunderbird 를 사용하여 imap 테스트를 진행하였다.

국내 포털(Daum, Naver) or 해외(Gmail) 등으로 메일 보내기

  1. 해외 메일 서버(google 등)는 주로 reverse domain 만 설정되어있으면 스팸 처리되는걸 피할수 있다. reverse domain(역방향 도메인) 이란 PTR 레코드(pointer record) 라고도 하는데 ip 로 도메인 주소를 확인하는 정책이다. 등록을 하기위해서는 ISP 업체(kt, LG U+ 등), 즉 각 통신사에 등록 요청을 해야한다. kt 의 경우에는 https://dms.kornet.net 등에서 리버스 도메인 등록 신청은 할수 있다. 고정IP (kt 등록 비용 50000원) 로만 등록신청이 가능하다고 하는데, 그렇다고 유동IP를 등록 안해주지는 않는다. SMTP 서버를 24시간 항시 켜두면 유동 ip도 고정IP 처럼 사용가능하니.. 등록 신청부터 해보자! 등록되면 문자가 온다.
# Test
>nslookup 123.123.11.123
# 위와 같이 cmd 에 입력하면 응답 정보에 도메인이 나타나야한다.
  1. 국내 포털 사이트(naver, daum) 등으로 메일을 보내기 위해서는 kisa white domain 을 등록해주어야한다. 국내 포털들은 여기에 등록된 도메인 목록으로 스팸 분류를 한다. 등록 신청 하기 위해서는 도메인에 SPF(Sender Policy Framework) 를 등록해주어야한다. 메일 서버 등록제라고도 불리는 이설정 값은 발송한 메일 서버의 IP 와 DNS에 설정되어있는 TXT 의 IP 값이 다를 경우 메일을 차단하는 정책이다. TXT RECORD 를 도메인에 추가해주고, VALUE 에 v=spf1 ip4:123.123.12.123 -all 를 등록해 준다. TXT 레코드 등록하는 방법은 도메인 업체마다 메뉴 와 화면이 조금씩 다르지만 등록 방식은 비슷하다. DNS 설정 메뉴를 잘 찾아서 등록해주도록 한다. 이제 화이트 도메인 등록 메뉴에서 개인으로 등록 신청을 한다. 신청 후 약 2주동안 스팸 이력 조회를 거쳐 실제 화이트 도메인으로 등록이 승인 되니 서버를 설치 하기 전에 미리 신청 해 놓자.
#Test
nslookup -type=txt mydomain.com
# 위와 같이 입력하였을때 등록한 TXT 값이 출력되어야한다.
# 도메인 정보는 퍼지는데 시간이 걸려서 최대 1일이 소요될수도 있다. 


댓글
글 보관함
최근에 올라온 글
Total
Today
Yesterday
링크