Postfix은(는) 메일 전송 에이전트(MTA) 역할을 하는 인기 있는 무료 오픈 소스 소프트웨어입니다. Postfix의 역할은 이메일을 라우팅하고 전달하는 것입니다. 일반적인 용도 외에도 Postfix는 로컬 애플리케이션에서만 이메일을 보내도록 구성할 수도 있습니다.
이러한 Postfix의 활용은 다양한 상황에서 유용하게 배포할 수 있는 방법입니다. 예를 들어, 정기적으로 이메일 알림을 보내거나 아웃바운드 트래픽이 제한된 타사 이메일 서비스 제공업체와 연동할 때 사용할 수 있습니다. 완전한 기능을 갖춘 SMTP 서버와 비교했을 때, Postfix는 필요한 기능을 모두 유지하면서도 더 가벼운 대안입니다.
이 튜토리얼에서는 Ubuntu에서 Postfix를 발신 전용 SMTP 서버로 설치하고 구성하는 방법을 확인해 보세요.
전제 조건
이 가이드를 따르려면 다음 전제 조건을 충족해야 합니다:
-
다음을 갖추어야 합니다: 올바르게 구성된 Ubuntu 서버 및 sudo 권한이 있는 비루트(non-root) 사용자 액세스 권한.
-
또한 완전히 등록된 도메인 이름이 필요합니다. 도메인 이름에 대한 자세한 내용은 당사의 상용 인증 기관에서 SSL 인증서 설치하기 포스트를 참조하세요.
-
마지막으로, 도메인 이름이 서버의 공인 IP 주소를 가리키는 DNS 레코드가 필요합니다.
Postfix 설치하기
전제 조건이 충족되면 서버에 Postfix를 배포할 준비가 된 것입니다. Postfix를 설치하는 가장 간단한 방법은 mailutils 패키지를 설치하는 것입니다. 이 패키지는 공식 Ubuntu 리포지토리에서 직접 제공됩니다.
먼저 터미널을 실행하고 APT 패키지 데이터베이스를 업데이트합니다.
|
1 |
sudo apt update |

그런 다음 Postfix를 설치할 수 있습니다.
|
1 |
sudo apt install mailutils |

설치 과정에서 다음과 같은 구성 창이 나타납니다. 기본 옵션은 Internet Site입니다. 선택을 확인하려면 TAB 키를 눌러 커서를 다음 섹션으로 이동합니다. 그런 다음 Enter:

를 누릅니다. 다음 단계에서는 시스템 메일 이름(System mail name)을 묻습니다. 이는 서버 생성 시 할당된 이름이 됩니다. 스크립트에 설명된 대로 로컬 호스트의 메일 주소가 “foo@example.org”인 경우 시스템 메일 이름은 example.org:

참고로 구성 스크립트는 나중에 언제든지 다음 명령을 사용하여 다시 실행할 수 있습니다:
|
1 |
sudo dpkg-reconfigure postfix |
Postfix 구성하기
이 단계에서는 localhost에서만 이메일을 보내고 받도록 Postfix를 구성합니다. 이를 위해 Postfix는 loopback 인터페이스에서 대기해야 합니다. 이는 서버가 내부 통신에 사용하는 가상 네트워크 인터페이스입니다. 다음으로, 원하는 텍스트 편집기를 사용하여 Postfix 구성 파일을 엽니다:
|
1 |
sudo nano /etc/postfix/main.cf |
다음의 값을 inet_interface에서 loopback-only:

로 변경합니다. 변경해야 할 또 다른 지시어는 mydestination입니다. 이는 local_transport 메일 전달 전송을 통해 전달되는 도메인 목록을 정의합니다. 기본값은 다음과 같습니다:

이 값을 다음과 같이 변경합니다:
|
1 |
mydestination = localhost.$mydomain, localhost, $myhostname |

도메인이 실제로는 서브도메인이고 이메일이 메인 도메인에서 발송된 것처럼 표시되기를 원하는 경우, Postfix 구성의 끝에 다음 지시어를 추가합니다. 이렇게 하면 이메일 주소에서 서브도메인이 제거됩니다:
|
1 |
masquerade_domains = <main_domain> |

변경 사항을 적용하려면 Postfix를 재시작합니다:
|
1 |
sudo systemctl restart postfix |
SMTP 서버 테스트하기
구성 과정이 성공적으로 완료되었다고 가정하고, 이제 테스트할 차례입니다. 테스트를 위해 Postfix가 mail 명령을 사용하여 외부 이메일 계정으로 이메일을 보낼 수 있는지 확인합니다. 이 명령은 mailutils 패키지의 일부입니다:
|
1 |
echo "Test email body" | mail -s "Subject line" <email_address> |
메시지는 지정된 이메일 주소로 도착해야 합니다. 이 시점에서는 전송되는 모든 이메일이 암호화되지 않은 상태입니다. 서비스 제공업체는 일반적으로 이러한 이메일을 스팸으로 분류하므로, 이메일이 도착했는지 스팸함을 꼭 확인하시기 바랍니다.
만약 mail 명령어가 오류를 보고하거나 오랜 시간이 지난 후에도 이메일이 도착하지 않으면, Postfix 설정을 다시 확인하고 서버 이름과 호스트 이름이 올바르게 설정되었는지 확인하십시오. 이 설정을 사용하면 이메일이 다음 주소에서 발송된 것처럼 표시됩니다:
|
1 |
<username>@<domain> |
여기서 username은 mail 명령을 실행한 서버 사용자의 사용자 이름이 됩니다.
시스템 메일 전달하기
이메일 서버가 올바르게 구성되고 작동하는지 성공적으로 확인했습니다. 이제 다음 사용자의 이메일을 전달하도록 구성해야 합니다. root. 서버로 전송되는 모든 시스템 생성 메시지는 외부 이메일 주소로 전달됩니다. 이메일 수신자의 경우, /etc/aliases 파일에 대체 이름 목록이 포함되어 있습니다. 원하는 텍스트 편집기를 사용하여 이 파일을 여십시오:
|
1 |
sudo nano /etc/aliases |
기본적으로 다음과 같이 표시됩니다:

파일 끝에 다음 줄을 추가합니다:
|
1 |
root: <email_address> |

이것은 다음으로 전송된 이메일이 root 이메일 주소로 전달됨을 나타냅니다. 변경 사항을 적용하려면 다음 명령을 실행하십시오. 이 명령은 mail 명령어가 사용하는 별칭(alias) 데이터베이스를 재구축합니다:
|
1 |
sudo newaliases |
![]()
다음으로, 변경이 성공적이었는지 테스트해야 합니다. 다음으로 테스트 이메일을 보냅니다. root:
|
1 |
echo "Test root email body" | mail -s "Subject line" root |
이메일이 지정된 이메일 주소로 도착해야 합니다. 아직 암호화가 설정되지 않았으므로 스팸 폴더를 확인하는 것을 잊지 마십시오.
SMTP 암호화 활성화하기
암호화되지 않은 형식으로 이메일을 보내는 것은 위험합니다. 안전을 보장하려면 SMTP 암호화를 활성화해야 합니다. 이를 위해 귀하의 도메인을 위해 Let’s Encrypt에서 무료 TLS 인증서를 요청할 것입니다.
Ubuntu의 경우, 이 작업을 수행하는 도구는 Certbot 도구입니다. 다행히도 공식 Ubuntu 저장소에서 직접 설치할 수 있습니다. 다음 명령으로 Certbot을 설치하십시오:
|
1 |
sudo apt install certbot |

서버에 UFW가 구성되어 있다고 가정하면, 포트를80 열어두어야 도메인 확인이 진행될 수 있습니다. 이를 활성화하려면 다음 명령을 실행하십시오:
|
1 |
sudo ufw allow 80 |

이제 Certbot을 실행하여 인증서를 생성합니다. 이 명령은 Certbot이 4096비트 RSA 키로 인증서를 발급하도록 지시합니다. 확인은 다음 포트를 통해 진행됩니다. 80 (HTTP):
|
1 |
sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d <domain> |
출력은 다음과 같을 것입니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
저장 중 디버그 로그 에 /var/log/letsencrypt/letsencrypt.log 플러그인 선택됨: Authenticator standalone, Installer None 획득 중 a 새로운 인증서 수행 중 the 다음 챌린지: http-01 챌린지 대상: '<domain>' 대기 중 위해 검증... 정리 중 정리 챌린지 중요 참고사항: - 축하합니다! 귀하의 인증서 및 체인 이 완료되었습니다 저장 위치: /etc/letsencrypt/live/<domain>/fullchain.pem 귀하의 키 파일 이 완료되었습니다 저장 위치: /etc/letsencrypt/live/<domain>/privkey.pem 귀하의 인증서 가 만료됩니다 날짜 2020-07-11. 하기 위해 획득 하나의 새로운 또는 수정된 버전 ~의 이 인증서 내에 그 미래, 간단히 실행하십시오 certbot 다시. 하기 위해 비-대화형으로 갱신 *모든* ~의 귀하의 인증서, 실행하십시오 "certbot renew" - 만약 귀하가 좋아하신다면 Certbot, 부디 고려해 주십시오 후원하는 것을 저희의 작업을 ~을 통해: 기부 대상 ISRG / Let's Encrypt: https://letsencrypt.org/donate 기부 대상 EFF: https://eff.org/donate-le |
키는 다음 디렉터리에 저장됩니다:
|
1 |
/etc/letsencrypt/live/<domain> |
인증서가 생성되었으므로 텍스트 편집기에서 Postfix 설정 파일을 엽니다:
|
1 |
sudo nano /etc/postfix/main.cf |
다음 섹션을 찾으십시오 TLS 매개변수:

그 후, 다음 지시어의 값을 변경하십시오 smtpd_tls_cert_file 및 smtpd_tls_key_file:

다음으로 파일을 저장하고 닫습니다. 변경 사항을 적용하려면 Postfix를 재시작하십시오:
|
1 |
sudo systemctl restart postfix |
마지막으로 대상 이메일 주소로 더미 이메일을 다시 보냅니다:
|
1 |
echo "This is email body" | mail -s "Email subject line" <email> |
이제 이메일이 다른 이메일처럼 정상적으로 표시될 것입니다. 이메일의 기술 정보를 확인하면 암호화되어 표시됩니다.
마치며
축하합니다! Postfix로 구동되는 발신 전용 이메일 서버를 성공적으로 구성했습니다. 적절한 암호화 키를 사용하여 이메일 트랜잭션도 안전합니다.
이메일 전송을 최적화하는 더 많은 방법을 보려면 이 튜토리얼을 확인하십시오 Google SMTP 서버를 사용하는 가장 좋은 방법.
즐거운 컴퓨팅 되세요!
댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.