수신 이메일을 위해 Postfix 설정하기 (FREE ALL)

Tier: Free, Premium, Ultimate Offering: Self-Managed

이 문서에서는 IMAP 인증이 포함된 Ubuntu에서 기본 Postfix 메일 서버를 설정하는 단계를 안내합니다. 이 설정은 수신 이메일과 함께 사용될 것입니다.

이 지침은 이메일 주소가 incoming@gitlab.example.com, 즉 gitlab.example.com 호스트의 incoming 사용자명을 사용한다고 가정합니다. 실제 호스트로 예제 코드 스니펫을 실행할 때 이를 변경하는 것을 잊지 마세요.

서버 방화벽 구성

  1. 서버 방화벽에서 25번 포트를 열어 SMTP를 통해 이메일을 서버로 보낼 수 있도록 합니다.
  2. 메일 서버가 GitLab을 실행하는 서버와 다른 경우, 143번 포트를 열어 GitLab이 IMAP을 통해 서버에서 이메일을 읽을 수 있도록 합니다.

패키지 설치

  1. 아직 설치되지 않았다면 postfix 패키지를 설치합니다:

    sudo apt-get install postfix
    

    환경에 대한 질문이 들어오면 ‘인터넷 사이트’를 선택합니다. 호스트 이름을 확인하고 gitlab.example.com과 일치하는지 확인하세요.

  2. mailutils 패키지를 설치합니다.

    sudo apt-get install mailutils
    

사용자 생성

  1. 수신 이메일용 사용자를 생성합니다.

    sudo useradd -m -s /bin/bash incoming
    
  2. 이 사용자를 위해 암호를 설정합니다.

    sudo passwd incoming
    

    나중에 필요하므로 꼭 기억해 두세요.

기본 설정 테스트

  1. 로컬 SMTP 서버에 연결합니다:

    telnet localhost 25
    

    다음과 같은 프롬프트가 표시되어야 합니다:

    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 gitlab.example.com ESMTP Postfix (Ubuntu)
    

    대신 Connection refused 오류가 발생하면 postfix가 실행 중인지 확인하세요:

    sudo postfix status
    

    실행 중이 아니라면 시작합니다:

    sudo postfix start
    
  2. 다음을 입력하여 새 incoming 사용자에게 이메일을 보내 SMTP를 테스트합니다:

    ehlo localhost
    mail from: root@localhost
    rcpt to: incoming@localhost
    data
    Subject: Re: Some issue
    
    Sounds good!
    .
    quit
    

    참고: .는 줄 바꿈된 개행 문자로 입력합니다.

    rcpt to: incoming@localhost를 입력한 후 오류가 발생하면 Postfix my_network 구성이 올바르지 않습니다. 오류 메시지에 ‘Temporary lookup failure’라고 나옵니다. 인터넷에서 이메일을 받기 위해 Postfix 구성을 참조하세요.

  3. incoming 사용자가 이메일을 받았는지 확인합니다:

    su - incoming
    mail
    

    다음과 같은 출력이 표시되어야 합니다:

    "/var/mail/incoming": 1 message 1 unread
    >U   1 root@localhost                           59/2842  Re: Some issue
    

    메일 앱에서 나갑니다:

    q
    
  4. incoming 계정에서 로그아웃하고 다시 root로 돌아갑니다:

    logout
    

Postfix를 Maildir 스타일 메일함 사용하도록 구성

나중에 IMAP 인증을 추가하기 위해 설치하는 Courier는 메일함이 mbox가 아닌 Maildir 형식을 가져야 합니다.

  1. Postfix를 Maildir 스타일 메일함을 사용하도록 구성합니다:

    sudo postconf -e "home_mailbox = Maildir/"
    
  2. Postfix를 다시 시작합니다:

    sudo /etc/init.d/postfix restart
    
  3. 새로운 설정을 테스트합니다:

    1. _기본 설정 테스트_의 단계 1과 2를 따릅니다.
    2. incoming 사용자가 이메일을 받았는지 확인합니다:

      su - incoming
      MAIL=/home/incoming/Maildir
      mail
      

      다음과 같은 출력이 표시되어야 합니다:

      "/home/incoming/Maildir": 1 message 1 unread
      >U   1 root@localhost                           59/2842  Re: Some issue
      

      메일 앱에서 나갑니다:

      q
      

    mailMaildir: Is a directory 오류를 반환하면 사용 중인 mail 버전이 Maildir 스타일 메일함을 지원하지 않습니다. heirloom-mailx를 설치하려면 sudo apt-get install heirloom-mailx를 실행하세요. 그런 다음 위의 단계를 다시 수행하여 mail 명령을 heirloom-mailx로 대체하세요.

  4. incoming 계정에서 로그아웃하고 다시 root로 돌아갑니다:

    logout
    

Courier IMAP 서버 설치

  1. courier-imap 패키지를 설치합니다:

    sudo apt-get install courier-imap
    

    그리고 imapd를 시작합니다:

    imapd start
    
  2. courier-authdaemon은 설치 후에 시작되지 않습니다. 이것이 없으면 IMAP 인증이 실패합니다:

    sudo service courier-authdaemon start
    

    또한 courier-authdaemon을 부팅시 시작하도록 설정할 수 있습니다:

    sudo systemctl enable courier-authdaemon
    

포스트픽스 구성하여 인터넷에서 이메일 받기

  1. 포스트픽스가 로컬로 고려해야 하는 도메인을 알도록 합니다:

    sudo postconf -e "mydestination = gitlab.example.com, localhost.localdomain, localhost"
    
  2. 포스트픽스가 LAN의 일부로 고려해야 하는 IP를 알도록 합니다:

    로컬 LAN이 192.168.1.0/24 라고 가정합시다. 동일한 로컬 네트워크에 다른 기기가 없는 경우이 단계를 건너 뛸 수 있습니다.

    sudo postconf -e "mynetworks = 127.0.0.0/8, 192.168.1.0/24"
    
  3. 포스트픽스가 인터넷을 포함한 모든 인터페이스에서 이메일을 받도록 설정합니다:

    sudo postconf -e "inet_interfaces = all"
    
  4. 포스트픽스가 하위 주소 지정에 + 구분 기호를 사용하도록 설정합니다:

    sudo postconf -e "recipient_delimiter = +"
    
  5. 포스트픽스를 재시작합니다:

    sudo service postfix restart
    

최종 설정 테스트

  1. 새로운 설정에서 SMTP를 테스트합니다:

    1. SMTP 서버에 연결합니다:

      telnet gitlab.example.com 25
      

      다음과 같은 프롬프트를 보아야합니다:

      Trying 123.123.123.123...
      Connected to gitlab.example.com.
      Escape character is '^]'.
      220 gitlab.example.com ESMTP Postfix (Ubuntu)
      

      대신 Connection refused 오류가 발생하면 방화벽이 25번 포트의 들어오는 트래픽을 허용하도록 설정되어 있는지 확인하십시오.

    2. SMTP를 테스트하기 위해 incoming 사용자에게 이메일을 보냅니다. SMTP 프롬프트에 다음을 입력하여 테스트합니다:

      ehlo gitlab.example.com
      mail from: root@gitlab.example.com
      rcpt to: incoming@gitlab.example.com
      data
      Subject: Re: Some issue
      
      Sounds good!
      .
      quit
      

      참고: .은 점(.)을 새 줄에 입력합니다.

    3. incoming 사용자가 이메일을 받았는지 확인합니다:

      su - incoming
      MAIL=/home/incoming/Maildir
      mail
      

      다음과 같은 출력이 표시되어야 합니다:

      "/home/incoming/Maildir": 1 message 1 unread
      >U   1 root@gitlab.example.com                           59/2842  Re: Some issue
      

      메일 앱을 종료합니다:

      q
      
    4. incoming 계정에서 로그아웃하고 root 계정으로 돌아갑니다:

      logout
      
  2. 새로운 설정에서 IMAP를 테스트합니다:

    1. IMAP 서버에 연결합니다:

      telnet gitlab.example.com 143
      

      다음과 같은 프롬프트를 보아야합니다:

      Trying 123.123.123.123...
      Connected to mail.gitlab.example.com.
      Escape character is '^]'.
      - OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc.  See COPYING for distribution information.
      
    2. IMAP 테스트를 위해 incoming 사용자로 로그인합니다. IMAP 프롬프트에 다음을 입력하여 테스트합니다:

      a login incoming PASSWORD
      

      PASSWORD를 이전에 incoming 사용자에게 설정한 비밀번호로 대체합니다.

      다음과 같은 출력이 표시되어야 합니다:

      a OK LOGIN Ok.
      
    3. IMAP 서버에서 연결을 해제합니다:

      a logout
      

완료

모든 테스트가 성공적이었다면, 포스트픽스는 모든 준비가 완료되어 이메일을 받을 준비가 되었습니다! 수신 이메일 가이드로 계속 진행하세요.


이 문서는 우분투 문서 위키 기여자들에 의해 https://help.ubuntu.com/community/PostfixBasicSetupHowto에서 적용되었습니다.