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

 

이 역할에 맞게 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 로 재구동하여 반영해야 한다.

 

마치며

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

 

Ref

 

Originally developed at IBM by security expert and programmer Wietse Venema, Postfix is a Sendmail-compatible MTA that is designed to be secure, fast, and easy to configure.
To improve security, Postfix uses a modular design, where small processes with limited privileges are launched by a master daemon. The smaller, less privileged processes perform very specific tasks related to the various stages of mail delivery and run in a changed root environment to limit the effects of attacks.
Configuring Postfix to accept network connections from hosts other than the local computer takes only a few minor changes in its configuration file. Yet for those with more complex needs, Postfix provides a variety of configuration options, as well as third party add-ons that make it a very versatile and full-featured MTA.
The configuration files for Postfix are human readable and support upward of 250 directives. Unlike Sendmail, no macro processing is required for changes to take effect and the majority of the most commonly used options are described in the heavily commented files.