Ubuntu 22.04에 Postfix 설치 및 구성하는 방법

소개

Postfix는 리눅스 시스템에서 이메일을 경로 지정하고 전달하는 데 사용할 수 있는 인기 있는 오픈 소스 메일 전송 에이전트 (MTA)입니다. 인터넷 상의 공개 메일 서버의 약 25%가 Postfix를 실행하는 것으로 추정됩니다.

이 가이드에서는 Ubuntu 22.04 서버에 Postfix를 설치하고 구성하는 방법을 배우게 됩니다. 그런 다음 s-nail을 설치하여 Postfix가 메일을 올바르게 경로 지정하는지 테스트합니다. 메일 사용자 에이전트 (MUA) 또는 이메일 클라이언트로도 알려져 있습니다.

이 튜토리얼의 목표는 일부 최소한의 이메일 기능으로 Postfix를 신속하게 설정하는 데 도움을 주는 것입니다. 이 가이드의 끝에 완전한 기능을 갖춘 이메일 서버가 준비되지는 않지만 시작하는 데 도움이 될 일부 기본 구성 요소가 준비됩니다.

필수 조건

자체 메일 서버를 설정하고 유지하는 것은 복잡하고 시간이 많이 걸립니다. 대부분의 사용자들에게는 유료 메일 서비스에 의존하는 것이 더 실용적입니다. 자체 메일 서버를 운영하는 것을 고려하고 있다면, 다음 이유로 그렇게 하지 않을 수도 있다는 이 기사를 살펴보시기 바랍니다.

만약 포스트픽스를 설치하고 구성하기 위해 이 가이드를 따르기로 결정했다면, 먼저 다음이 필요합니다:

  • A server running Ubuntu 22.04 to function as your Postfix mail server. This server should have a non-root user with sudo privileges and a firewall configured with UFW. You can follow our Ubuntu 22.04 initial server setup guide to set this up.
  • A Fully Qualified Domain Name pointed at your Ubuntu 22.04 server. You can find help on setting up your domain name with DigitalOcean by following our Domains and DNS Networking documentation. Be aware that if you plan on accessing mail from an external location, you will need to make sure you have an MX record pointing to your mail server as well.

이 튜토리얼은 FQDN이 mail.example.com인 호스트를 구성한다고 가정합니다. 필요한 곳에는 반드시 example.com 또는 mail.example.com을(를) 자신의 FQDN으로 변경해야 합니다.

단계 1 — 포스트픽스 설치

포스트픽스는 우분투의 기본 저장소에 포함되어 있으므로 APT로 설치할 수 있습니다.

먼저 로컬 apt 패키지 캐시를 업데이트하십시오:

  1. sudo apt update

다음 명령을 사용하여 postfix 패키지를 설치하십시오. 여기서 우리는 이 설치 명령에 DEBIAN_PRIORITY=low 환경 변수를 전달합니다. 이는 설치 프로세스에서 추가 옵션을 구성하도록 요청할 것입니다:

  1. sudo DEBIAN_PRIORITY=low apt install postfix

이 설치 프로세스는 일련의 대화형 프롬프트를 열게 됩니다. 이 튜토리얼의 목적을 위해 다음 정보를 사용하여 프롬프트를 채우십시오:

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

명시적으로, 이 안내서에서 사용하는 설정은 다음과 같습니다:

  • 메일 구성의 일반 유형?: 인터넷 사이트
  • 시스템 메일 이름: example.com ( mail.example.com이 아님)
  • 루트 및 포스트마스터 메일 수신자: 기본 리눅스 계정의 사용자 이름 (우리의 예에서는 sammy)
  • 메일을 수락할 다른 대상: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • 메일 대기열에 동기 업데이트 강제?: 아니요
  • 로컬 네트워크: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • 우편함 크기 제한: 0
  • 로컬 주소 확장 문자: +
  • 사용할 인터넷 프로토콜: 모두

참고: 이 설정을 변경해야 할 경우 다음과 같이 입력하여 할 수 있습니다:

  1. sudo dpkg-reconfigure postfix

프롬프트에는 이전 응답이 미리 채워져 있을 것입니다.

서비스를 다시 시작하라는 메시지가 표시되면 기본값을 수락하고 OK를 선택하십시오.

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

단계 2 — Postfix 구성 변경

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

먼저, 비루트 Ubuntu 사용자의 메일함 위치를 설정하십시오. 이 가이드에서는 각 메시지를 개별 파일로 분리하여 사용자 조작에 따라 디렉토리 간 이동되는 Maildir 형식을 사용합니다. 이 가이드에서 다루지 않은 대안 옵션은 모든 메시지를 단일 파일에 저장하는 mbox 형식입니다.

home_mailbox 변수를 Maildir/로 설정하십시오. 나중에 사용자의 홈 디렉토리 내에서 해당 이름 아래의 디렉토리 구조를 만들 것입니다.

  1. sudo postconf -e 'home_mailbox= Maildir/'

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

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

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

  1. sudo nano /etc/postfix/virtual

수신하려는 모든 주소를 나열한 다음 공백과 해당 메일을 전달하려는 Linux 사용자를 입력하십시오.

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

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

모든 주소를 적절한 서버 계정으로 매핑한 후 파일을 저장하고 닫으십시오. nano를 사용한 경우 CTRL + X, Y, 그런 다음 ENTER를 눌러서 저장하십시오.

매핑을 적용하려면 다음을 입력하십시오.

  1. sudo postmap /etc/postfix/virtual

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

  1. sudo systemctl restart postfix

전제 조건 초기 서버 설정 가이드에 따라 따라왔다면 UFW로 방화벽을 구성했을 것입니다. 이 방화벽은 외부 연결을 기본적으로 차단하고 있으므로 서버에서 서비스로의 외부 연결을 명시적으로 허용하지 않는 한 외부에서의 연결은 차단됩니다. 따라서 Postfix에 대한 예외를 허용하는 방화벽 규칙을 추가해야 합니다.

서비스로의 연결을 허용하려면 다음을 입력하십시오:

  1. sudo ufw allow Postfix

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

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

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

그러나 클라이언트를 설치하기 전에 사용자의 메일을 찾기 위한 위치를 알아내기 위해 MAIL 환경 변수가 올바르게 설정되어 있는지 확인하는 것이 좋습니다. s-nail은 이 변수를 찾아 사용자의 메일을 어디에서 찾아야 하는지 확인합니다.

MAIL 변수가 어떻게 계정에 액세스하든 관계없이 설정되도록하려면 — 예를 들어 ssh, su, su -, 또는 sudo를 통해 — /etc/bash.bashrc 파일에 변수를 설정하고 /etc/profile.d 내의 파일에 추가해야합니다. 모든 사용자에게 기본적으로 설정됩니다.

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

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

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

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

이 작업을 완료하면 APT를 사용하여 s-nail 이메일 클라이언트를 설치하십시오:

  1. sudo apt install s-nail

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

  1. sudo nano /etc/s-nail.rc

파일 하단에 다음 옵션을 추가하십시오:

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

다음은 이러한 줄의 기능입니다:

  • set emptystart: 빈 받은 편지함이라도 클라이언트를 열 수 있게 함
  • set folder=Maildir: 내부 folder 변수에 Maildir 디렉토리를 설정합니다
  • set record=+sent: 보낸 편지함을 생성하여 보낸 메일을 저장합니다. 디렉토리가 folder 변수로 설정된 디렉토리에 저장됩니다. 이 경우 Maildir입니다.

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

A quick way to create the Maildir structure within your home directory is to send yourself an email with the s-nail command. Because the sent file will only be available once the Maildir is created, you should disable writing to it for this initial email. Do this by passing the -Snorecord option.

이메일을 보내려면 문자열을 s-nail 명령에 파이핑하십시오. 명령을 조정하여 Linux 사용자를 수신자로 표시하십시오:

  1. echo 'init' | s-nail -s 'init' -Snorecord sammy

주의: 다음과 같은 응답을 받을 수 있습니다:

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

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

~/Maildir 디렉토리를 확인하여 디렉토리가 생성되었는지 확인할 수 있습니다:

  1. ls -R ~/Maildir

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

Output
/home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1650294586.Vfc01I7e11dM993645.mail.example.com /home/sammy/Maildir/tmp:

이제 디렉토리 구조가 생성되었으므로 s-nail 클라이언트를 테스트해보세요. 보낸 init 메시지를 보고 외부 이메일 주소로 메시지를 보내는 것이 준비되어 있습니다:

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

클라이언트를 열려면 s-nail 명령을 실행하세요:

  1. s-nail

콘솔에서는 init 메시지가 대기하는 기본적인 받은 편지함이 표시됩니다:

Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 [email protected] 2022-04-18 15:09 14/452 init

ENTER를 눌러 메시지를 표시하세요:

Output
[-- Message 1 -- 14 lines, 452 bytes --]: Date: Mon, 18 Apr 2022 15:09:46 +0000 To: [email protected] Subject: init Message-Id: <20220418150946.EE6897E11A@@mail.example.com> From: [email protected] init

h를 입력한 후 ENTER를 입력하여 메시지 목록으로 돌아갈 수 있습니다:

  1. h
Output
>R 1 [email protected] 2022-04-18 15:09 14/452 init

메시지의 상태가 R로 표시되어 읽혔음을 나타냅니다.

이 메시지가 그다지 유용하지 않으므로 d를 누르고 ENTER를 눌러 삭제할 수 있습니다:

  1. d

터미널로 돌아가려면 q를 입력한 후 ENTER를 누르세요:

  1. q

마지막 테스트로 s-nail이 이메일 메시지를 올바르게 보낼 수 있는지 확인하세요. 이를 위해 이전 단계에서 init 메시지와 마찬가지로 텍스트 파일의 내용을 s-nail 프로세스로 파이프로 연결할 수 있습니다.

먼저 텍스트 편집기에서 테스트 메시지를 작성하세요:

  1. nano ~/test_message

그 안에 보내고자 하는 텍스트를 입력하세요:

~/test_message
Hello,

This is a test.  Please confirm receipt!

메시지를 작성한 후 파일을 저장하고 닫으세요.

그런 다음 다음 예제를 사용하여 cat 명령을 사용하여 메시지를 s-nail 프로세스에 파이프로 보낼 수 있습니다. 다음 옵션을 사용합니다:

  • -s: 이메일 메시지의 제목 줄을 정의합니다
  • -r: 선택적으로 이메일의 “보낸 사람:” 필드를 변경합니다. 기본적으로 로그인한 Linux 사용자가 이 필드를 채우는 데 사용됩니다. -r 옵션을 사용하면 /etc/postfix/virtual 파일에 정의된 주소 중 하나로 이를 무시하고 유효한 주소로 변경할 수 있습니다. 예를 들어, 다음 명령은 [email protected]을 사용합니다.

user@email.com을 사용 가능한 이메일 주소로 변경해야합니다:

  1. cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] user@email.com

그런 다음 메시지를 보낸 이메일 주소의 받은 편지함으로 이동하세요. 거의 즉시 메시지가 기다리고 있을 것입니다.

참고: 메시지가 받은 편지함에 없으면 스팸 폴더로 전달되었을 수 있습니다.

s-nail 클라이언트 내에서 보낸 메시지를 볼 수 있습니다. 대화형 클라이언트를 다시 시작하세요:

  1. s-nail

이메일 클라이언트에서 보낸 메시지를 보려면 다음을 입력하십시오:

  1. file +sent

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

Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 To [email protected] 2022-04-18 15:12 10/211 Test email subject line

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

결론

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

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