아직도 이메일은 여전히 중요한 의사 소통 수단 및 협업 도구로 사용되고 있지만 본 도서에서 이메일 서버의 용도는 이슈 관리, 지속적인 통합, 버전 관리 시스템등에서 이벤트 발생이나 통지 사항을 사용자에게 알리는 도구로서만 사용하고 있다.

 

이 역할에 맞게 RHEL 에 기본 포함된 이메일 서버의 설치 및 간단한 설정에 대해 알아 보자.

 

postfix 소개

sendmail 같은 SMTP(Simple Mail Transfer Protocl) 를 구현한 소프트웨어를 MTA(Mail Transfer Agent) 라고 부르며 MS의 아웃룩이나 모질라의 썬더버드, 콘솔에서 구동되는 mutt 등의 사용자 프로그램은 MUA(Mail User Agent) 라고 분류한다. 

sendmail 은 전통적으로 많이 사용되던 MTA 였고 RHEL 5 까지는 기본 메일 서버 데몬이었으나 RHEL 6 부터는 postfix 로 교체되었다. 물론 원하는 사용자는 sendmail 을 MTA 로 사용하는 것도 가능하다.

 

특징

postfix 는 IBM의 보안 전문가가 만든 제품으로 sendmail 과 비교해서 다음과 같은 장점이 있다.

  • 손쉬운 설정
    sendmail 은 m4 라는 매크로 언어를 사용하여 설정 파일을 생성하는데 예전부터 sendmail 의 설정은 어렵고 가독성이 떨어지기로 악명이 높았다. postfix 는 사용자 친화적이고 손쉬운 설정 방식을 제공한다. 
  • 견고한 보안
    sendmail 은 보안이 큰 문제가 되지 않던 시절에 개발되어서 많은 보안 취약점을 갖고 있다. postfix 는 대신 RHEL 버전 6 부터 기본 MTA(Message Transfer Agent) 로 채택된 메일 전송 서버이다.
  • 빠른 처리 속도
    빠른 메일 송수신을 염두에 두고 설계/개발되어 sendmail 에 비해 빠른 속도를 자랑한다.

 

 

설정

설치

이제 postfix 에 대해 알아 보았으니 yum 으로 직접 설치해 보자. 

# yum install postfix -y # service postfix restart

 

테스트

이제 외부로 이메일을 보내서 정상 동작 여부를 확인해 보자. mail 이라는 명령행 유틸리티를 사용하면 간단한 테스트 메일을 보낼 수 있다. 다음 명령어를 실행하면 내용을 입력할 수 있다.  보낼 내용이 완료됐으면 Ctrl-D 키를 누르면 작성이 완료(EOT 라고 표시)되고 메일이 송신된다.

# mail -s "email test" user@example.com   email test EOT

보낸 메일 주소를 확인하여 정상적으로 도착했는지 확인해 보자.


환경 설정

postfix 는 /etc/postfix/mail.cf 파일을 통해 동작 제어에 필요한 설정을 할 수 있다. 패키지 설치에 따라오는 기본 설정으로도 외부에 메일 전송은 문제가 없고 이 정도면 필요로 하는 용도로 충분하다. 그러나 혹시 외부에서 보내는 메일의 수신도 하고 싶은 독자라면 다음 설정을 참고하여 설정하면 된다.

 

# 메일 서버의 도메인 이름을 설정한다. fully-qualified domain name 이어야 한다.

myhostname = mail.example.com


# 도메인 이름을 설정한다. mydomain 을 특별히 설정하지 않을 경우 myhostname 에 설정된 값에서 첫 번째 요소를 제거한 값이 된다.

mydomain = example.com


# inet_interfaces 는 postfix 가 메일을 수신할 때 사용할 네트워크 인터페이스를 지정한다. 기본 값은 localhost 이며 이럴 경우 외부 서버에서 이 서버로 메일 송신이 불가능하다. 이것을 가능하게 하려면 localhost 외에 추가 인터페이스를 지정해야 한다.

inet_interfaces = all

#inet_interfaces = localhost


# mynetworks_style 은 postfix 가 신뢰할 SMTP 클라이언트를 설정한다. host 로 설정할 경우 로컬 머신에서만 메일 송신이 가능하며 subnet 일 경우 현재 서버와 같은 IP 대역을 갖는 서버에서만 연결할 수 있다. 기본 설정은 subnet이며 class 는 보안 문제때문에 추천하지 않는다

mynetworks_style=subnet


# mynetworks 는 mynetworks_style 대신 직접 명시적을 ㅗ허용할 IP나 대역을 지정할 수 있다. 여러 개 지정할 경우 콤마로 구분한다.

mynetworks = 192.168.1.0/24, 127.0.0.0/8

 

설정을 변경했다면 service postfix restart 로 재구동하여 반영해야 한다.

 

마치며

데이타베이스 서버와 이메일 서버는 중요한 인프라이지만 본 도서에서는 다른 인프라 서버를 사용하기 위한 서비스이므로 최소한의 설치와 설정에 대해서만 다루었다. 이제 다음 장에서 네트워크 서비스중에서 가장 중요한 서비스인 아파치 웹서버와 톰캣 컨테이너에 대해서 알아 보도록 하자.