분류 기타

Ubuntu 20.04에서 Postfix를 설치하고 구성하는 방법

컨텐츠 정보

  • 조회 793 (작성일 )

본문

소개 


Postfix는 Linux 시스템에서 이메일을 라우팅하고 전달하는 데 사용할 수 있는 인기 있는 오픈 소스 MTA (Mail Transfer Agent)입니다. 인터넷상의 공용 메일 서버의 약 25 %가 Postfix를 실행하는 것으로 추정됩니다.


이 가이드에서는 Ubuntu 20.04 서버에 Postfix를 설치하고 구성하는 방법을 알아 봅니다. 그런 다음 이메일 클라이언트라고도 하는 MUA (Mail User Agent) 인 s-nail을 설치하여 Postfix가 메일을 올바르게 라우팅 할 수 있는지 테스트합니다.


이 튜토리얼의 목표는 일부 베어 본 이메일 기능만으로 Postfix를 빠르게 시작하고 실행할 수 있도록 돕는 것입니다. 이 가이드가 끝날 때까지 완전한 기능을 갖춘 이메일 서버를 가지지는 않을 것이지만, 시작하는 데 도움이 되는 이러한 설정의 기본 구성 요소 중 일부가 제공됩니다.


전제 조건 


자신의 메일 서버를 설정하고 유지하는 것은 복잡하고 시간이 많이 걸립니다. 대부분의 사용자에게는 유료 메일 서비스에 의존하는 것이 더 실용적입니다.

자체 메일 서버를 운영하려는 경우 이 문서를 검토하여 원하지 않는 이유를 확인하는 것이 좋습니다.


이 가이드에 따라 Postfix를 설치하고 구성하려면 먼저 다음이 있어야 합니다.

  • Postfix 메일 서버로 작동하기 위해 Ubuntu 20.04를 실행하는 서버. 이 서버에는 sudo 권한이 있는 루트가 아닌 사용자와 UFW로 구성된 방화벽이 있어야 합니다. Ubuntu 20.04 초기 서버 설정 가이드에 따라 이를 설정할 수 있습니다.
  • Ubuntu 20.04 서버를 가리키는 정규화 된 도메인 이름. 도메인 및 DNS 네트워킹 문서를 따라 DigitalOcean으로 도메인 이름을 설정하는 방법에 대한 도움말을 찾을 수 있습니다. 외부 위치에서 메일에 액세스하려는 경우 메일 서버를 가리키는 MX 레코드도 있는지 확인해야 합니다.

이 자습서에서는 FQDN이 mail.example.com 인 호스트를 구성한다고 가정합니다. 필요할 때마다 자신의 FQDN을 반영하도록 example.com 또는 mail.example.com을 변경해야 합니다.


1 단계 — Postfix 설치 


Postfix는 Ubuntu의 기본 저장소에 포함되어 있으므로 APT로 설치할 수 있습니다.


시작하려면 로컬 apt 패키지 캐시를 업데이트하십시오.


  • sudo apt update


그런 다음 다음 명령을 사용하여 postfix 패키지를 설치하십시오. 여기서는 DEBIAN_PRIORITY = low 환경 변수를 이 설치 명령에 전달합니다. 이렇게 하면 설치 프로세스에서 몇 가지 추가 옵션을 구성하라는 메시지가 표시됩니다.


  • sudo DEBIAN_PRIORITY=low apt install postfix


이 설치 프로세스는 일련의 대화 형 프롬프트를 엽니다. 이 자습서의 목적을 위해 다음 정보를 사용하여 프롬프트를 채웁니다.


  • 일반 유형의 메일 구성? :이를 위해 인프라 요구 사항과 일치하는 인터넷 사이트를 선택합니다.
  • 시스템 메일 이름 : 주소의 계정 부분 만 제공 될 때 유효한 이메일 주소를 구성하는 데 사용되는 기본 도메인입니다. 예를 들어 서버의 호스트 이름이 mail.example.com이라고 가정 해 보겠습니다. 사용자 이름 user1이 주어지면 Postfix가 user1@example.com 주소를 사용하도록 시스템 메일 이름을 example.com으로 설정하는 것이 좋습니다.
  • 루트 및 포스트 마스터 메일 수신자 : root@ 및 postmaster@로 주소가 지정된 메일을 전달할 Linux 계정입니다. 이를 위해 기본 계정을 사용하십시오. 이 예에서는 sammy입니다.
  • 메일을 수락 할 기타 대상 :이 Postfix 인스턴스가 수락 할 메일 대상을 정의합니다. 이 서버가 수신 할 다른 도메인을 추가해야 하는 경우 여기에 추가하십시오. 그렇지 않으면 기본값으로 충분합니다.
  • 메일 대기열에 동기 업데이트를 적용 하시겠습니까? : 저널링 된 파일 시스템을 사용할 가능성이 높으므로 여기에서 아니요를 수락합니다.
  • 로컬 네트워크 : 메일 서버가 메시지를 릴레이 하도록 구성된 네트워크 목록입니다. 기본값은 대부분의 시나리오에서 작동합니다. 하지만 수정하기로 선택한 경우 네트워크 범위와 관련하여 매우 제한해야 합니다.
  • 사서함 크기 제한 : 메시지 크기를 제한하는 데 사용할 수 있습니다. 0으로 설정하면 크기 제한이 비활성화 됩니다.
  • 로컬 주소 확장 문자 : 주소의 일반 부분을 확장에서 분리하는 데 사용할 수 있는 문자입니다 (동적 별칭을 만드는 데 사용됨). 이 자습서에서는 기본값 인 +가 작동합니다.
  • 사용할 인터넷 프로토콜 : Postfix가 지원하는 IP 버전을 제한할지 여부를 선택합니다. 이 튜토리얼의 목적을 위해 모두 선택하십시오.


이 가이드에서 사용하는 설정은 다음과 같습니다.


  • 일반 유형의 메일 구성? : 인터넷 사이트
  • 시스템 메일 이름 : example.com (mail.example.com 아님)
  • 루트 및 포스트 마스터 메일 수신자 : 기본 Linux 계정의 사용자 이름 (이 예에서는 sammy)
  • 메일을 수락 할 기타 대상 : $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • 메일 대기열에 동기 업데이트를 적용 하시겠습니까? : 아니요
  • Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit: 0
  • Local address extension character: +
  • Internet protocols to use: all

참고 : 이러한 설정을 변경하기 위해 돌아와야 하는 경우 다음을 입력하여 변경할 수 있습니다.


  • sudo dpkg-reconfigure postfix


프롬프트는 이전 응답으로 미리 채워집니다.


설치 프로세스가 완료되면 Postfix 구성을 몇 가지 업데이트 할 준비가 된 것입니다.


2 단계 — Postfix 구성 변경 


이제 패키지 설치 프로세스에서 요청하지 않은 일부 설정을 조정할 수 있습니다. 대부분의 Postfix 구성 설정은 /etc/postfix/main.cf 파일에 정의되어 있습니다. 이 파일을 직접 편집하는 대신 Postfix의 postconf 명령을 사용하여 구성 설정을 쿼리하거나 설정할 수 있습니다.


시작하려면 루트가 아닌 Ubuntu 사용자의 사서함 위치를 설정합니다. 이 가이드에서는 메일을 개별 파일로 분리 한 다음 사용자 작업에 따라 디렉토리간에 이동하는 Maildir 형식을 사용합니다. 이 가이드에서 다루지 않는 대체 옵션은 모든 메시지를 단일 파일에 저장하는 mbox 형식입니다.


home_mailbox 변수를 Maildir /로 설정합니다. 나중에 사용자의 홈 디렉토리 내에서 해당 이름으로 디렉토리 구조를 만듭니다. 다음을 입력하여 home_mailbox를 구성합니다.


  • sudo postconf -e 'home_mailbox= Maildir/'


다음으로, 임의의 이메일 계정을 Linux 시스템 계정에 매핑하는 virtual_alias_maps 테이블의 위치를 ​​설정합니다. 테이블 위치를 / etc / postfix / virtual이라는 해시 데이터베이스 파일에 매핑하는 다음 명령을 실행합니다.


  • sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'


이제 main.cf 파일에서 가상 맵 파일의 위치를 ​​정의 했으므로 파일 자체를 만들고 Linux 시스템의 사용자 계정에 이메일 계정 매핑을 시작할 수 있습니다. 선호하는 텍스트 편집기로 파일을 작성하십시오. 이 예에서는 nano를 사용합니다.


  • sudo nano /etc/postfix/virtual


이메일을 수락 할 주소를 나열한 다음 공백과 메일을 받을 Linux 사용자를 차례로 입력합니다.


예를 들어 contact@example.com 및 admin@example.com에서 이메일을 수락하고 해당 이메일이 sammy Linux 사용자에게 전달되도록 하려면 다음과 같이 파일을 설정할 수 있습니다.


/etc/postfix/virtual 


contact@example.com sammy
admin@example.com sammy

모든 주소를 적절한 서버 계정에 매핑 한 후 파일을 저장하고 닫습니다. nano를 사용한 경우 CTRL + X, Y, ENTER를 차례로 눌러 이 작업을 수행합니다.


다음을 입력하여 매핑을 적용합니다.


  • sudo postmap /etc/postfix/virtual


Postfix 프로세스를 다시 시작하여 모든 변경 사항이 적용되었는지 확인하십시오.


  • sudo systemctl restart postfix


필수 초기 서버 설정 가이드를 따랐다 고 가정하면 UFW로 방화벽을 구성한 것입니다. 이 방화벽은 이러한 연결이 명시 적으로 허용되지 않는 한 기본적으로 서버의 서비스에 대한 외부 연결을 차단하므로 Postfix에 대한 예외를 허용하려면 방화벽 규칙을 추가해야 합니다.


다음을 입력하여 서비스에 대한 연결을 허용 할 수 있습니다.


  • sudo ufw allow Postfix


이를 통해 Postfix가 구성되고 외부 연결을 수락 할 준비가 되었습니다. 그러나 아직 메일 클라이언트로 테스트 할 준비가 되지 않았습니다. 클라이언트를 설치하고 이를 사용하여 서버로 전달되는 메일과 상호 작용하려면 먼저 Ubuntu 서버의 설정을 몇 가지 변경해야 합니다.


3 단계 — 메일 클라이언트 설치 및 Maildir 구조 초기화 


배달되는 메일과 상호 작용하기 위해 이 단계에서는 s-nail 패키지를 설치하는 과정을 안내합니다. 이것은 Maildir 형식을 올바르게 처리 할 수 있는 BSD xmail 클라이언트의 풍부한 기능 변형입니다.


하지만 클라이언트를 설치하기 전에 MAIL 환경 변수가 올바르게 설정되었는지 확인하는 것이 현명합니다. s-nail은 사용자의 메일을 찾을 위치를 파악하기 위해 이 변수를 찾습니다.


예를 들어 ssh, su, su 또는 sudo를 통해 계정에 액세스하는 방법에 관계없이 MAIL 변수가 설정되었는지 확인하려면 /etc/bash.bashrc 파일에 변수를 설정하고 추가해야 합니다. /etc/profile.d 내의 파일에 복사하여 기본적으로 모든 사용자에 대해 설정되었는지 확인하십시오.


이러한 파일에 변수를 추가하려면 다음을 입력하십시오.


  • echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh



현재 세션으로 변수를 읽으려면 /etc/profile.d/mail.sh 파일을 소싱하십시오.


  • source /etc/profile.d/mail.sh


완료되면 APT로 달팽이 이메일 클라이언트를 설치하십시오.


  • sudo apt install s-nail


클라이언트를 실행하기 전에 조정해야 할 몇 가지 설정이 있습니다. 편집기에서 /etc/s-nail.rc 파일을 엽니다.


  • sudo nano /etc/s-nail.rc



파일 맨 아래에 다음 옵션을 추가하십시오.


/etc/s-nail.rc 


. . .
set emptystart
set folder=Maildir
set record=+sent

이 라인의 기능은 다음과 같습니다.


  • set emptystart : 클라이언트가 받은 편지함이 비어 있어도 열 수 있습니다.
  • set folder = Maildir : Maildir 디렉토리를 내부 폴더 변수로 설정합니다.
  • set record = + sent는 보낸 메일을 폴더 변수로 설정 한 디렉토리 (이 경우 Maildir)에 저장하기 위해 보낸 mbox 파일을 만듭니다.


완료되면 파일을 저장하고 닫습니다. 이제 시스템의 Maildir 구조를 초기화 할 준비가 되었습니다.


홈 디렉터리 내에 Maildir 구조를 만드는 빠른 방법은 s-nail 명령을 사용하여 자신에게 이메일을 보내는 것입니다. 보낸 파일은 Maildir이 생성 된 후에 만 ​​사용할 수 있으므로 이 초기 이메일에 대한 쓰기를 비활성화 해야 합니다. -Snorecord 옵션을 전달하여 이를 수행하십시오.


s-nail 명령에 문자열을 파이핑하여 이메일을 보냅니다. Linux 사용자를 수신자로 표시하도록 명령을 조정하십시오.


  • echo 'init' | s-nail -s 'init' -Snorecord sammy


참고 : 다음과 같은 응답을 받을 수 있습니다.


Output
Can't canonicalize "/home/sammy/Maildir"

이것은 정상적인 현상이며 이 첫 번째 메시지를 보낼 때만 나타날 수 있습니다.


~ / Maildir 디렉토리를 찾아서 디렉토리가 생성되었는지 확인할 수 있습니다.


  • ls -R ~/Maildir


디렉토리 구조가 생성되고 새 메시지 파일이 ~ / Maildir / new 디렉토리에 있음을 확인할 수 있습니다.


Output
/home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

이제 디렉토리 구조가 생성되었으므로 보낸 초기화 메시지를 보고 외부 이메일 주소로 메시지를 보내 s-nail 클라이언트를 테스트 할 준비가 되었습니다.


4 단계 — 클라이언트 테스트 


클라이언트를 열려면 s-nail 명령을 실행하십시오.


  • s-nail


콘솔에 대기 중인 초기화 메시지가 포함 된 기본적인 받은 편지함이 표시됩니다.


Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2020-05-19 15:40 14/392 init

ENTER를 눌러 메시지를 표시합니다.


Output
[-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

h를 입력 한 다음 Enter 키를 눌러 메시지 목록으로 돌아갈 수 있습니다.


  • h


Output
>R 1 sammy@example.com 2020-05-19 15:40 14/392 init

이제 메시지가 읽혔음을 나타내는 R 상태가 됩니다.


이 메시지는 그다지 유용하지 않으므로 d를 누른 다음 ENTER를 눌러 삭제할 수 있습니다.


  • d


터미널로 돌아가려면 q를 입력 한 다음 Enter 키를 누릅니다.


  • q


최종 테스트로 달팽이가 이메일 메시지를 올바르게 보낼 수 있는지 확인합니다. 이를 위해 이전 단계에서 보낸 init 메시지에서 했던 것처럼 텍스트 파일의 내용을 s-nail 프로세스로 파이프 할 수 있습니다.


텍스트 편집기에서 테스트 메시지를 작성하여 시작하십시오.


  • nano ~/test_message


내부에 보낼 텍스트를 입력하세요.


~/test_message
Hello,

This is a test.  Please confirm receipt!


메시지를 작성한 후 파일을 저장하고 닫습니다.


그런 다음 cat 명령을 사용하여 메시지를 s-nail 프로세스로 파이프 하십시오. 이러한 옵션을 사용하는 다음 예제를 사용하여 이를 수행 할 수 있습니다.


  • -s : 이메일 메시지의 제목을 정의합니다.
  • -r : 이메일의 "보낸 사람 :"필드에 대한 선택적 변경. 기본적으로 로그인 한 Linux 사용자가 이 필드를 채우는 데 사용됩니다. -r 옵션을 사용하면 / etc / postfix / virtual 파일에 정의한 주소 중 하나와 같은 유효한 주소로 이를 재정의 할 수 있습니다. 설명을 위해 다음 명령은 contact@example.com을 사용합니다.

또한 user@email.com을 액세스 할 수 있는 유효한 이메일 주소로 변경해야 합니다.


  • cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com


그런 다음 메시지를 보낸 이메일 주소의 받은 편지함으로 이동합니다. 거의 즉시 거기에서 기다리는 메시지를 볼 수 있습니다.


참고 : 메일이 받은 편지함에 없는 경우 스팸 폴더로 전송되었을 수 있습니다.


당신은 당신의 달팽이 클라이언트 내에서 보낸 메시지를 볼 수 있습니다. 대화 형 클라이언트를 다시 시작합니다.


  • s-nail



이메일 클라이언트에서 다음을 입력하여 보낸 메시지를 봅니다.


  • file +sent



다음과 같은 출력이 표시됩니다.


Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

수신 메일에 사용하는 것과 동일한 명령을 사용하여 보낸 메일을 관리 할 수 ​​있습니다.


결론 


이제 Ubuntu 20.04 서버에 Postfix가 구성되었습니다. 이메일 서버 관리는 새로운 시스템 관리자에게 어려운 작업이 될 수 있지만 이 구성을 사용하면 시작하기에 충분한 MTA 이메일 기능이 있어야 합니다.


https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-on-ubuntu-20-04