수신 이메일을 위해 Postfix 설정

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

이 문서는 Ubuntu에서 IMAP 인증을 사용하여 기본 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
    

    나중에 필요하므로 이것을 잊지 않도록 주의하세요.

Out-of-the-Box 설정 테스트

  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. SMTP 테스트를 위해 새로운 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. _Out-of-the-box 설정 테스트_의 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 오류를 반환한다면 버전이 Maildir 스타일 메일함을 지원하지 않습니다. sudo apt-get install heirloom-mailx를 실행하여 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
    

인터넷에서 이메일을 받도록 Postfix 구성

  1. Postfix에게 로컬로 고려해야 하는 도메인을 알립니다:

    sudo postconf -e "mydestination = gitlab.example.com, localhost.localdomain, localhost"
    
  2. Postfix에게 LAN의 일부인 IP를 알립니다:

    192.168.1.0/24가 로컬 LAN인 것으로 가정합니다. 동일한 로컬 네트워크에 다른 기계가 없는 경우 안전하게 이 단계를 건너뛸 수 있습니다.

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

    sudo postconf -e "inet_interfaces = all"
    
  4. Postfix에게 하위 주소에 + 구분 기호를 사용하도록 구성합니다:

    sudo postconf -e "recipient_delimiter = +"
    
  5. Postfix를 재시작합니다:

    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
      

완료

모든 테스트가 성공했다면, 포스트핵스(Postfix)가 모든 준비를 마치고 이메일을 수신할 준비가 끝났습니다! 계속해서 수신 이메일 안내서를 따라 GitLab을 구성하세요.


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