리눅스 postfix - linugseu postfix

4.1 메일 시스템의 개요

MUA(Mail User Agent) : 메일 클라이언트. ex) Outlook, Becky!, Sylpheed, Thunderbird

MTA(Mail Transfer Agent) : 메일 서버, SMTP 서버라고도 불린다.

MDA(Mail Deliver Agent)

사용자 A가 사용자 B에게 메일을 보내고 이를 사용자 B가 수신하는 과정은 다음과 같다.

유저 A(MUA) -> MTA -> MDA -> Mailbox -> 유저 B(MUA)

목적 MTA에 도착하려면 DNS가 반드시 필요하다. MUA에서 메일 전송을 의뢰받은 MTA는 우선 DNS에 목적 도메인의 메일 서버를 묻는다. DNS는 MX 레코드라는 리소스를 MTA에 반환하고 MTA는 MX 레코드에 지시된 MTA로 메일 전송을 위한 통신을 시행한다. 목적 도메인 안에 메일이 전송되고 나서도 사용자의 메일함에 도달하기까지 다시 MTA를 통과해야 하는 경우가 있을지도 모른다.

4.2 SMTP 서버 Postfix

Postfix란?

Postfix는 과거 대표적 오픈소스 MTA였던 sendmail과의 이용 호환성을 유지하면서도 간편한 설정, 관리와 대용량 메일의 고속 전송을 구현한 MTA이다. postfix는 sendmail에 비해 메일 전송 시에 여러 개의 데몬이 협조하여 동작하기 때문에 동작을 파악하기 어려울 것으로 생각하기 쉬우나 설정 파일이 보기 슆고 관리하기도 편하다는 장점을 갖고 있다.

Postfix와 협조 동작하는 데몬

p.361 참조. Debian GNU/Linux의 Postfix 패키지 파일에서 협조 동작하는 데몬을 발췌해 정리한 내용이다.

설정 파일 내용

Postfix의 설정 파일은 /etc/postfix에서 볼 수 있다. 책에서는 main.cf의 내용을 다루고 있다. 다음은 주석 분량을 제외한 내용이다.

리눅스 postfix - linugseu postfix

리눅스 postfix - linugseu postfix

telnet을 사용하여 SMTP 서버와 대화

여기서는 메일 서버에 telnet을 사용하여 접속하고 SMTP 커맨드를 사용하여 메일 송신 테스트를 해볼 것이다.

$ telnet mail.example.kr 25

25/TCP 외를 이용하는 SMTP 서버는 포트 번호 지정을 변경해야 한다. 응답은 '220 mail.example.kr ESMTP'여야 한다.

telnet을 빠져나올 때에는 Ctrl+]로 셸로 돌아온다.

results matching ""

    No results matching ""

    0. 테스트환경

      - RHEL 7.9
      - Centos 7.9

    1. Postfix 소개

      Postfix 전자메일을 송수신하는 무료 오픈소스 메일 전송 에이전트(MTA)로 IBM의 보안 전문가가 만든 메일 서비스이다.

      최초의 postfix는 뉴욕의 IBM Thomas J.Watson Research Center에서 Wietse Venema에 의해 1997년에 작성되었으며

      1998년 12월에 처음 발매된 postfix는 2021년을 기점으로 제작자 및 기타 기여자들에 의해 적극적으로 개발되고 있다.

      RHEL 5버전까지 Sendmail기본메일서버데몬으로설치되었으나  RHEL 6버전이후 Postfix기본메일서버로 사용되고있다.

    2. Postfix sendmail비교점

      1. Postfix sendmail비해비교적손쉬운 설정이가능하다.

      2. postfix sendmail비교했을때 보안측면에서뛰어나게설계되었다.

      3. Postfix 빠른메일처리속도를염두에두고설계되어 sendmail비해메일송수신속도가 빠르다.

    3. Postfix 포트

      기본 SMTP 포트는 25 포트를사용하며

      SSL 보안적용시 465포트를 사용한다.

    4. Postfix 설치

      Postfix RHEL, CentOS 경우기본으로설치되어따로설치할필요가 없다.

    5.Postfix 설정

      postfix는 기본 설정 파일에 많은 설정값이 있지만 메일서버를 구축할때 변경하는 설정을 위주로 설명함.

      /etc/postfix/main.cf 설정

      - host 및 domain설정

      

    리눅스 postfix - linugseu postfix
     

      myhostname = posttest # 호스트네임

      mydomain = posttest.co.kr # 도메인네임

      myorigin = $mydomain   # 도메인 네임을 사용하여 메일을 송수신 할경우 mydomain 설정

      inet_interfaces = all      # 모든 interface의 메일을 수신

      inet_protocols = all      # ipv4와 ipv6 설정 

      -  mydestination 설정

      

    리눅스 postfix - linugseu postfix
     

      mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

      메일을 최종 목적지 설정으로 해당 설정에서 $mydomain값을 제거하면 외부 메일의 수신이 안된다.

      - mynetworks 설정

     

    리눅스 postfix - linugseu postfix
     

      mynetworks_style = host

      mynetworks = 192.168.11.0/24, 127.0.0.0/8

      mynetworks는 신뢰할 수 있는 네트워크로 해당 네트워크 주소로 들어오는 메일을 허용한다.

      mynetworks_style은 총 3개의 설정으로 class, subnet, host가 있으며

      class는 동일한 IP 클래스에서 들어오는 SMTP 클라이언트 메일을 수신

      subnet은 로컬 시스템과 동일한 하위 IP 네트워크에 있는 SMTP 클라이언트 메일 수신

      host는 로컬 SMTP 클라이언트 메일만 수신

      하지만 mynetworks의 설정이 우선으로 처리되어 mynetworks_style의 설정은 무시될 수 있다.

      - relay 설정

      

    리눅스 postfix - linugseu postfix
     

      relay_domains = $mydestination

      "신뢰할 수 있는" 클라이언트(IP 주소는 $mynetworks와 일치)에서 모든 대상으로,

      "신뢰할 수 없는" 클라이언트에서 $relay_domains와 일치하는 대상으로 또는 발신자 지정 라우팅이 있는 주소를 제외한 하위 도메인.

      기본 relay_domains 값은 $mydestination 이다.

      - home_mailbox

      

    리눅스 postfix - linugseu postfix
     

      user의 홈 디렉토리에 수신 메일 저장폴더 지정 (마지막 / 필수)

      기본 설정 이외 추가 설정

      - postfix 배너 설정

      

    리눅스 postfix - linugseu postfix
     

      # smtpd telnet 접속하면보여주는배너

      smtpd_banner = mytest banner

      - 메일 수신함과 메시지 사이즈 설정 (defaults)

      

    리눅스 postfix - linugseu postfix
     

      message_size_limit = 10485760

      mailbox_size_limit = 1073741824

      따로 설정을 하지 않을 경우 유저당 메일박스가 50M 메일 사이즈가 10M로 제한된다.

      # 이후 dovecot연동설정을 위한 사용자 인증설정

      smtpd_sasl_type = dovecot          # sasl 인증 대상 

      smtpd_sasl_path = private/auth  # dovecot 인증 방식 

      smtpd_sasl_auth_enable = yes    # Postfix SMTP 서버에서 SMTP 인증을 활성화 

      smtpd_sasl_security_options = noanonymous

        # 항상 최소한 noanonymous옵션을 설정하십시오. 그렇지 않으면 Postfix SMTP 서버가 낯선 사람에게 제대로 인증된 클라이언트와 동일한 권한을 부여할 수 있습니다. 

      smtpd_sasl_local_domain = $myhostname   # 도메인 부분이 없는 SASL 로그인 이름에 도메인 이름(또는 기타 문자열)을 추가할 수 있습니다 

      smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject  

        # SASL 인증 SMTP 클라이언트가 원격 대상으로 메일을 보낼 수 있습니다. 

      메일 테스트

      - 테스트 메일 

      

    리눅스 postfix - linugseu postfix

      mail -s "email test" <테스트 메일 받을 주소>

      mail 명령어로 발신이 정상인지 확인

      입력후 Ctrl+D 입력 하여 발송

      - 메일 수신

      

    리눅스 postfix - linugseu postfix
     

      메일함을 확인해보면 정상적으로 메일이 온것을 확인할 수 있다.