웹사이트 검색

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


소개

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

이 가이드에서는 Ubuntu 18.04 서버에서 Postfix를 빠르게 시작하고 실행하는 방법을 알려드립니다.

전제 조건

이 가이드를 따르려면 sudo 권한이 있는 루트가 아닌 사용자에 대한 액세스 권한이 있어야 합니다. Ubuntu 18.04 초기 서버 설정 가이드에 따라 필요한 사용자를 생성할 수 있습니다.

Postfix를 올바르게 구성하려면 Ubuntu 18.04 서버를 가리키는 정규화된 도메인 이름이 필요합니다. 이 가이드를 따라 DigitalOcean으로 도메인 이름을 설정하는 방법에 대한 도움말을 찾을 수 있습니다. 메일을 수락할 계획이라면 메일 서버를 가리키는 MX 레코드도 있는지 확인해야 합니다.

이 자습서에서는 FQDN이 mail.example.com인 호스트를 구성한다고 가정합니다.

1단계 - Postfix 설치

Postfix는 Ubuntu의 기본 리포지토리에 포함되어 있으므로 설치가 간단합니다.

시작하려면 로컬 apt 패키지 캐시를 업데이트한 다음 소프트웨어를 설치하십시오. 몇 가지 추가 프롬프트에 응답하기 위해 DEBIAN_PRIORITY=low 환경 변수를 설치 명령에 전달합니다.

  1. sudo apt update
  2. sudo DEBIAN_PRIORITY=low apt install postfix

다음 정보를 사용하여 환경에 맞게 프롬프트를 입력하십시오.

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

명시적으로 이 가이드에서 사용할 설정은 다음과 같습니다.

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

돌아가서 이러한 설정을 다시 조정해야 하는 경우 다음을 입력하면 됩니다.

  1. sudo dpkg-reconfigure postfix

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

완료되면 이제 원하는 방식으로 시스템을 설정하기 위해 구성을 조금 더 수행할 수 있습니다.

2단계 - Postfix 구성 조정

다음으로 패키지에서 요청하지 않은 일부 설정을 조정할 수 있습니다.

시작하려면 사서함을 설정할 수 있습니다. 메시지를 개별 파일로 분리한 다음 사용자 작업에 따라 디렉터리 간에 이동하는 Maildir 형식을 사용합니다. 다른 옵션은 단일 파일 내에 모든 메시지를 저장하는 mbox 형식(여기서는 다루지 않음)입니다.

home_mailbox 변수를 Maildir/로 설정하면 사용자의 홈 디렉토리 내에 해당 이름으로 디렉토리 구조가 생성됩니다. postconf 명령을 사용하여 구성 설정을 쿼리하거나 설정할 수 있습니다. 다음을 입력하여 home_mailbox를 구성합니다.

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

다음으로 virtual_alias_maps 테이블의 위치를 설정할 수 있습니다. 이 테이블은 임의의 이메일 계정을 Linux 시스템 계정에 매핑합니다. /etc/postfix/virtual에 이 테이블을 생성합니다. 다시 postconf 명령을 사용할 수 있습니다.

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

3단계 - 메일 주소를 Linux 계정에 매핑

다음으로 가상 지도 파일을 설정할 수 있습니다. 텍스트 편집기에서 파일을 엽니다.

  1. sudo nano /etc/postfix/virtual

가상 앨리어스 맵 테이블은 매우 간단한 형식을 사용합니다. 왼쪽에는 이메일을 수락할 주소를 나열할 수 있습니다. 그런 다음 공백으로 구분하여 해당 메일을 받을 Linux 사용자를 입력합니다.

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

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

모든 주소를 적절한 서버 계정에 매핑한 후 파일을 저장하고 닫습니다.

다음을 입력하여 매핑을 적용할 수 있습니다.

  1. sudo postmap /etc/postfix/virtual

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

  1. sudo systemctl restart postfix

4단계 - 방화벽 조정

초기 서버 설정 가이드에 구성된 대로 UFW 방화벽을 실행 중인 경우 Postfix에 대한 예외를 허용해야 합니다.

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

  1. sudo ufw allow Postfix

Postfix 서버 구성 요소가 설치되어 준비되었습니다. 다음으로 Postfix가 처리할 메일을 처리할 수 있는 클라이언트를 설정합니다.

5단계 - 메일 위치와 일치하도록 환경 설정

클라이언트를 설치하기 전에 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

6단계 - 메일 클라이언트 설치 및 구성

배달되는 메일과 상호 작용하기 위해 s-nail 패키지를 설치합니다. 이것은 BSD xmail 클라이언트의 변종으로 기능이 풍부하고 Maildir 형식을 올바르게 처리할 수 있으며 대부분 이전 버전과 호환됩니다. mail의 GNU 버전에는 소스 형식에 관계없이 읽기 메일을 항상 mbox 형식으로 저장하는 것과 같은 몇 가지 제한 사항이 있습니다.

s-nail 패키지를 설치하려면 다음을 입력하십시오.

  1. sudo apt install s-nail

몇 가지 설정을 조정해야 합니다. 편집기에서 /etc/s-nail.rc 파일을 엽니다.

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

파일 하단에 다음 옵션을 추가합니다.

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

이렇게 하면 받은 편지함이 비어 있어도 클라이언트가 열릴 수 있습니다. 또한 Maildir 디렉토리를 내부 folder 변수로 설정한 다음 이를 사용하여 보낸 메일을 저장하기 위해 그 안에 sent mbox 파일을 만듭니다. .

완료되면 파일을 저장하고 닫습니다.

7단계 - Maildir 초기화 및 클라이언트 테스트

이제 클라이언트를 테스트할 수 있습니다.

디렉토리 구조 초기화

홈 디렉토리 내에서 Maildir 구조를 만드는 가장 쉬운 방법은 이메일을 보내는 것입니다. s-nail 명령으로 이 작업을 수행할 수 있습니다. sent 파일은 Maildir이 생성된 후에만 사용할 수 있으므로 초기 이메일에 쓰기를 비활성화해야 합니다. -Snorecord 옵션을 전달하여 이를 수행할 수 있습니다.

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: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

메일이 도착한 모양입니다.

클라이언트로 메일 관리

클라이언트를 사용하여 메일을 확인하십시오.

  1. s-nail

새 메시지가 대기 중인 것을 볼 수 있습니다.

Output
s-nail version v14.8.6. Type ? for help. "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com Wed Dec 31 19:00 14/369 init

ENTER를 누르기만 하면 메시지가 표시됩니다.

Output
[-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Wed Dec 31 19:00:00 1969 Date: Fri, 13 May 2016 18:07:49 -0400 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

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

  1. h
Output
s-nail version v14.8.6. Type ? for help. "/home/sammy/Maildir": 1 message 1 new >R 1 sammy@example.com Wed Dec 31 19:00 14/369 init

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

  1. d

q를 입력한 다음 ENTER를 입력하여 종료하여 터미널로 돌아갑니다.

  1. q

클라이언트와 메일 보내기

텍스트 편집기에 메시지를 입력하여 메일 보내기를 테스트할 수 있습니다.

  1. nano ~/test_message

내부에 이메일로 보내려는 텍스트를 입력하십시오.

Hello,

This is a test.  Please confirm receipt!

cat 명령을 사용하여 메시지를 s-nail 프로세스로 파이프할 수 있습니다. 이렇게 하면 기본적으로 Linux 사용자로 메시지가 전송됩니다. 해당 값을 다른 값으로 수정하려면 -r 플래그를 사용하여 "From\ 필드를 조정할 수 있습니다.

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

위의 옵션은 다음과 같습니다.

  • -s: 이메일 제목 줄
  • -r: 이메일의 "보낸 사람:” 필드에 대한 선택적 변경입니다. 기본적으로 로그인한 Linux 사용자가 이 필드를 채우는 데 사용됩니다. -r 옵션을 사용하면 이를 재정의할 수 있습니다.
  • user@email.com: 이메일을 보낼 계정. 액세스 권한이 있는 유효한 계정으로 변경하세요.

s-nail 클라이언트 내에서 보낸 메시지를 볼 수 있습니다. 다음을 입력하여 대화식 클라이언트를 다시 시작하십시오.

  1. s-nail

그런 다음 다음을 입력하여 보낸 메시지를 봅니다.

  1. file +sent

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

결론

이제 Ubuntu 18.04 서버에 Postfix가 구성되어 있어야 합니다. 전자 메일 서버 관리는 초보 관리자에게는 어려운 작업일 수 있지만 이 구성을 사용하면 시작할 수 있는 기본 MTA 전자 메일 기능이 있어야 합니다.