메일 서버 · 2 min read · Sep 30, 2025
Postfix를 백업 MX로 설정하기
이 튜토리얼에서는 기본 메일 교환기가 다운되거나 접근할 수 없을 경우 도메인에 대한 백업 메일 교환기로 Postfix 메일 서버를 설정하는 방법을 보여드리겠습니다. 기본 MX가 다시 작동할 때까지 이 도메인에 대한 메일을 수신하고 기본 MX로 메일을 전달합니다.
1 사전 노트
example.com 도메인에 대한 백업 MX를 설정하려고 합니다. 이 예에서 example.com의 기본 MX는 mx1.example.com(아이피 주소 1.2.3.4)라고 하며, 백업 MX는 mx2.example.com(아이피 주소 1.2.3.5)라고 부릅니다.
example.com에 대한 MX 레코드는 다음과 같습니다:
example.com. 86400 IN MX 10 mx1.example.com.
example.com. 86400 IN MX 20 mx2.example.com.기본 MX의 숫자(10)가 백업 MX(20)보다 낮고 따라서 우선순위가 높아야 합니다.
mx2.example.com에 Postfix가 이미 설치되어 있고 작동 중이라고 가정합니다.
2 mx2.example.com에서 Postfix 구성하기
mx2.example.com을 example.com 도메인의 백업 MX로 만들기 위해서는 /etc/postfix/main.cf에 세 줄을 변경/추가하면 됩니다:
nano /etc/postfix/main.cf먼저 smtpd_recipient_restrictions에 permit_mynetworks와 reject_unauth_destination이 포함되어 있는지 확인해야 하며, 다음과 같은 형태가 괜찮습니다:
[...]
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
[...]그런 다음 relay_domains 매개변수에 example.com을 추가해야 합니다. /etc/postfix/main.cf에 relay_domains 매개변수가 아직 없다면 다음과 같이 하면 됩니다:
[...]
relay_domains = $mydestination, example.com
[...]마지막으로 /etc/postfix/main.cf에 빈 relay_recipient_maps 매개변수를 추가합니다:
[...]
relay_recipient_maps =
[...](이렇게 하면 백업할 유효한 이메일 주소 목록을 지정할 필요가 없으며, 수백 개의 이메일 계정을 관리해야 할 경우 이는 힘든 작업이 될 수 있습니다.)
추가해야 할 중요한 사항이 하나 있습니다: /etc/postfix/main.cf의 다음 매개변수에 example.com을 나열해서는 안 됩니다:
- mydestination
- virtual_alias_domains
- virtual_mailbox_domains
이제 모든 설정이 완료되었습니다. 이제 Postfix를 재시작하면 됩니다:
service postfix restart3 테스트
새 백업 MX를 테스트하기 위해 mx1.example.com에서 MTA(Postfix, Sendmail, Exim 등)를 중지하고 원격 서버에서 example.com 계정(예: [email protected])으로 이메일을 보냅니다.
원격(발신) 서버의 메일 로그에 접근할 수 있다면 이제 다음과 같은 내용이 있어야 합니다:
Jun 6 18:29:16 mail postfix/smtp[17746]: AF814144146: to=<[email protected]>, relay=mx2.example.com[1.2.3.5], delay=1, status=sent (250 2.0.0 Ok: queued as DCA5A1BF40F)보시다시피, 메일은 mx1.example.com이 접근할 수 없기 때문에 mx2.example.com으로 전송되었습니다. 이제 mx2.example.com의 메일 로그를 살펴보겠습니다:
Jun 6 18:29:16 mx2 postfix/qmgr[3049]: DCA5A1BF40F: from=<[email protected]>, size=892, nrcpt=1 (queue active)
Jun 6 18:29:16 mx2 postfix/smtpd[3051]: disconnect from mail.blabla.tld[1.2.3.6]
Jun 6 18:29:16 mx2 postfix/smtp[3057]: connect to mx1.test1.de[1.2.3.4]: Connection refused (port 25)
Jun 6 18:29:16 mx2 postfix/smtp[3057]: DCA5A1BF40F: to=<[email protected]>, relay=none, delay=0.07, delays=0.03/0.02/0.01/0, dsn=4.4.1, status=deferred (connect to mx1.test1.de[1.2.3.4]: Connection refused)mx2.example.com은 메일을 수신하고 기본 MX에 전달하기 위해 mx1.example.com에 연결을 시도했습니다. 기본 MX가 다운되었기 때문에 mx2.example.com은 메일을 전달할 수 없으며 mx1.example.com이 다시 사용 가능해질 때까지 메일 큐에 보관합니다.
이제 mx1.example.com에서 MTA를 다시 시작합니다. 백업 MX는 즉시 대기 중인 메일을 전달하지 않지만 몇 분 후 mx2.example.com의 메일 로그에서 다음과 같은 내용을 볼 수 있어야 합니다:
Jun 6 18:56:44 mx2 postfix/qmgr[3080]: DCA5A1BF40F: from=<[email protected]>, size=892, nrcpt=1 (queue active)
Jun 6 18:56:45 mx2 postfix/smtp[3083]: DCA5A1BF40F: to=<[email protected]>, relay=mx1.example.com[1.2.3.4]:25, delay=1648, delays=1648/0.09/0.4/0.12, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 167995B0109)메일은 기본 MX로 전달되었으며, 메일 로그에서 다음과 같은 내용을 확인할 수 있습니다:
Jun 6 18:56:45 mx1 postfix/local[4963]: 167995B0109: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.54, delays=0.08/0.02/0/0.43, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -f-)따라서 mx1.example.com이 다운되는 동안 메일이 손실되지 않았으며, 사용자는 mx1.example.com에서 계속 메일을 검색할 수 있습니다.
4 링크
- Postfix: http://www.postfix.org
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.