Ubuntu 16.04에서 Postfix를 설치하고 구성하는 방법
소개
Postfix는 Linux 시스템에서 이메일을 라우팅하고 전달하는 데 사용할 수 있는 인기 있는 오픈 소스 MTA(Mail Transfer Agent)입니다. 인터넷에 있는 공용 메일 서버의 약 25%가 Postfix를 실행하는 것으로 추정됩니다.
이 가이드에서는 Ubuntu 16.04 서버에서 Postfix를 빠르게 시작하고 실행하는 방법을 알려드립니다.
전제 조건
이 가이드를 따르려면 sudo
권한이 있는 루트가 아닌 사용자에 대한 액세스 권한이 있어야 합니다. Ubuntu 16.04 초기 서버 설정 가이드에 따라 필요한 사용자를 생성할 수 있습니다.
Postfix를 올바르게 구성하려면 Ubuntu 16.04 서버를 가리키는 정규화된 도메인 이름이 필요합니다. 이 가이드를 따라 DigitalOcean으로 도메인 이름을 설정하는 방법에 대한 도움말을 찾을 수 있습니다. 메일을 수락할 계획이라면 메일 서버를 가리키는 MX 레코드도 있는지 확인해야 합니다.
이 자습서에서는 FQDN이 mail.example.com
인 호스트를 구성한다고 가정합니다.
1단계: Postfix 설치
Postfix는 Ubuntu의 기본 리포지토리에 포함되어 있으므로 설치가 매우 간단합니다.
시작하려면 로컬 apt
패키지 캐시를 업데이트한 다음 소프트웨어를 설치하십시오. 몇 가지 추가 프롬프트에 응답하기 위해 DEBIAN_PRIORITY=low
환경 변수를 설치 명령에 전달합니다.
- sudo apt-get update
- sudo DEBIAN_PRIORITY=low apt-get 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
- 현지 주소 확장 문자: +
- 사용할 인터넷 프로토콜: 모두
돌아가서 이러한 설정을 다시 조정해야 하는 경우 다음을 입력하면 됩니다.
- sudo dpkg-reconfigure postfix
프롬프트는 이전 응답으로 미리 채워집니다.
완료되면 이제 원하는 방식으로 시스템을 설정하기 위해 구성을 조금 더 수행할 수 있습니다.
2단계: Postfix 구성 조정
다음으로 패키지에서 요청하지 않은 일부 설정을 조정할 수 있습니다.
시작하려면 사서함을 설정할 수 있습니다. 메시지를 개별 파일로 분리한 다음 사용자 작업에 따라 디렉터리 간에 이동하는 Maildir 형식을 사용합니다. 다른 옵션은 단일 파일 내에 모든 메시지를 저장하는 mbox 형식(여기서는 다루지 않음)입니다.
home_mailbox
변수를 Maildir/
로 설정하면 사용자의 홈 디렉토리 내에 해당 이름으로 디렉토리 구조가 생성됩니다. postconf
명령을 사용하여 구성 설정을 쿼리하거나 설정할 수 있습니다. 다음을 입력하여 home_mailbox
를 구성합니다.
- sudo postconf -e 'home_mailbox= Maildir/'
다음으로 virtual_alias_maps
테이블의 위치를 설정할 수 있습니다. 이 테이블은 임의의 이메일 계정을 Linux 시스템 계정에 매핑합니다. /etc/postfix/virtual
에 이 테이블을 생성합니다. 다시 postconf
명령을 사용할 수 있습니다.
- sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
3단계: Linux 계정에 메일 주소 매핑
다음으로 가상 지도 파일을 설정할 수 있습니다. 텍스트 편집기에서 파일을 엽니다.
- sudo nano /etc/postfix/virtual
가상 앨리어스 맵 테이블은 매우 간단한 형식을 사용합니다. 왼쪽에는 이메일을 수락할 주소를 나열할 수 있습니다. 그런 다음 공백으로 구분하여 해당 메일을 받을 Linux 사용자를 입력합니다.
예를 들어 contact@example.com
및 admin@example.com
에서 이메일을 수락하고 해당 이메일을 sammy
Linux 사용자는 다음과 같이 파일을 설정할 수 있습니다.
contact@example.com sammy
admin@example.com sammy
모든 주소를 적절한 서버 계정에 매핑한 후 파일을 저장하고 닫습니다.
다음을 입력하여 매핑을 적용할 수 있습니다.
- sudo postmap /etc/postfix/virtual
모든 변경 사항이 적용되었는지 확인하려면 Postfix 프로세스를 다시 시작하십시오.
- sudo systemctl restart postfix
4단계: 방화벽 조정
초기 서버 설정 가이드에 구성된 대로 UFW 방화벽을 실행 중인 경우 Postfix에 대한 예외를 허용해야 합니다.
다음을 입력하여 서비스에 대한 연결을 허용할 수 있습니다.
- sudo ufw allow Postfix
Postfix 서버 구성 요소가 설치되어 준비되었습니다. 다음으로 Postfix가 처리할 메일을 처리할 수 있는 클라이언트를 설정합니다.
5단계: 메일 위치와 일치하도록 환경 설정
클라이언트를 설치하기 전에 MAIL
환경 변수가 올바르게 설정되었는지 확인해야 합니다. 클라이언트는 이 변수를 검사하여 사용자의 메일을 찾을 위치를 파악합니다.
계정에 액세스하는 방법에 관계없이 변수가 설정되도록 하려면(ssh
, su
, su -
, sudo<를 통해) /code> 등) 몇 가지 다른 위치에 변수를 설정해야 합니다.
/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
6단계: 메일 클라이언트 설치 및 구성
배달되는 메일과 상호 작용하기 위해 s-nail
패키지를 설치합니다. 이것은 BSD xmail
클라이언트의 변종으로 기능이 풍부하고 Maildir 형식을 올바르게 처리할 수 있으며 대부분 이전 버전과 호환됩니다. mail
의 GNU 버전에는 소스 형식에 관계없이 읽기 메일을 항상 mbox 형식으로 저장하는 것과 같은 몇 가지 실망스러운 제한이 있습니다.
s-nail
패키지를 설치하려면 다음을 입력하십시오.
- sudo apt-get install s-nail
몇 가지 설정을 조정해야 합니다. 편집기에서 /etc/s-nail.rc
파일을 엽니다.
- sudo nano /etc/s-nail.rc
파일 하단에 다음 옵션을 추가합니다.
. . .
set emptystart
set folder=Maildir
set record=+sent
이렇게 하면 받은 편지함이 비어 있어도 클라이언트가 열릴 수 있습니다. 또한 Maildir
디렉토리를 내부 folder
변수로 설정한 다음 이를 사용하여 보낸 메일을 저장하기 위해 그 안에 sent
mbox 파일을 만듭니다. .
완료되면 파일을 저장하고 닫습니다.
7단계: Maildir 초기화 및 클라이언트 테스트
이제 클라이언트를 테스트할 수 있습니다.
디렉토리 구조 초기화
홈 디렉토리 내에서 Maildir 구조를 만드는 가장 쉬운 방법은 이메일을 보내는 것입니다. mail
명령으로 이 작업을 수행할 수 있습니다. sent
파일은 Maildir이 생성된 후에만 사용할 수 있으므로 초기 이메일에 쓰기를 비활성화해야 합니다. -Snorecord
옵션을 전달하여 이를 수행할 수 있습니다.
문자열을 mail
명령에 파이핑하여 이메일을 보냅니다. Linux 사용자를 수신자로 표시하도록 명령을 조정합니다.
- echo 'init' | mail -s 'init' -Snorecord sammy
다음 응답을 받아야 합니다.
OutputCan'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:
메일이 도착한 모양입니다.
클라이언트로 메일 관리
클라이언트를 사용하여 메일을 확인하십시오.
- mail
새 메시지가 대기 중인 것을 볼 수 있습니다.
Outputs-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를 입력하여 메시지 목록으로 돌아갈 수 있습니다.
- h
Outputs-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로 삭제할 수 있습니다.
- d
q를 입력하여 종료하여 터미널로 돌아갑니다.
- q
클라이언트와 메일 보내기
텍스트 편집기에 메시지를 입력하여 메일 보내기를 테스트할 수 있습니다.
- nano ~/test_message
내부에 이메일로 보내려는 텍스트를 입력하십시오.
Hello,
This is a test. Please confirm receipt!
cat
명령을 사용하여 메시지를 mail
프로세스로 파이프할 수 있습니다. 이렇게 하면 기본적으로 Linux 사용자로 메시지가 전송됩니다. 해당 값을 다른 값으로 수정하려면 -r
플래그를 사용하여 "From\ 필드를 조정할 수 있습니다.
- cat ~/test_message | mail -s 'Test email subject line' -r from_field_account user@email.com
위의 옵션은 다음과 같습니다.
-s
: 이메일 제목 줄-r
: 이메일의 "보낸 사람:” 필드에 대한 선택적 변경입니다. 기본적으로 로그인한 Linux 사용자가 이 필드를 채우는 데 사용됩니다.-r
옵션을 사용하면 이를 재정의할 수 있습니다.user@email.com
: 이메일을 보낼 계정. 액세스 권한이 있는 유효한 계정으로 변경하세요.
메일
클라이언트 내에서 보낸 메시지를 볼 수 있습니다. 다음을 입력하여 대화식 클라이언트를 다시 시작하십시오.
- mail
그런 다음 다음을 입력하여 보낸 메시지를 봅니다.
- file +sent
수신 메일에 사용하는 것과 동일한 명령을 사용하여 보낸 메일을 관리할 수 있습니다.
결론
이제 Ubuntu 16.04 서버에 Postfix가 구성되어 있어야 합니다. 전자 메일 서버 관리는 초보 관리자에게는 어려운 작업일 수 있지만 이 구성을 사용하면 시작할 수 있는 기본 MTA 전자 메일 기능이 있어야 합니다.