메인 콘텐츠로 건너뛰기

성공적인 메일 발송 및 전달 검증을 위한 체크리스트

추가 확인을 위해 다음 소프트웨어가 필요합니다:

  • host 유틸리티

    • Debian/Ubuntu: apt-get install bind9-host
    • CentOS: yum install bind9-host
  • Telnet 유틸리티

    • Debian/Ubuntu: apt-get install telnet
    • CentOS: yum install telnet

MX 레코드

MX 레코드는 SMTP 프로토콜을 사용하는 메일 서버를 등록하기 위해 설계된 DNS 레코드 유형입니다. 이 레코드는 발신자의 메일 에이전트가 이메일을 전달해야 하는 서버를 결정하는 역할을 합니다. 하나의 도메인에는 서로 다른 우선순위를 가진 여러 레코드 유형이 있을 수 있습니다.

다음 host 명령을 사용하여 메일이 로컬에서 작동하는지 또는 타사 메일 서버를 사용하는지 확인할 수 있습니다:

host -t MX example.com

로컬 메일 서버를 사용하는 경우 다음과 같은 출력이 표시됩니다:

example.com 메일은 10 mail.example.com에서 처리됩니다.

mail.example.com 항목은 다른 서버를 가리키도록 설정할 수도 있다는 점도 언급할 가치가 있습니다. 또한 mail.example.com은 메일을 보내는 서버를 가리키는 기존 A 레코드여야 한다는 점에 유의해야 합니다.

확인을 위해 다음 명령도 실행할 수 있습니다:

host example.com
host mail.example.com

그리고 기본 도메인, 이 경우 example.commail.example.com이 가리키는 IP 주소를 비교하세요.

중요

메일 서버가 이메일을 수신할 수 있도록 MX 레코드를 반드시 설정해야 합니다.

MX 레코드 예시:

이름: example.com.
유형: MX
: mail.example.com.
우선순위: 10

DKIM 서명

FASTPANEL®에서는 관리 메뉴 → "메일" 섹션에서 필요한 메일 도메인 앞의 "DKIM"을 클릭하여 DKIM 서명을 얻을 수 있습니다

FASTPANEL에서 DKIM 활성화

DNS 측에서는 다음과 같이 레코드를 추가해야 합니다:

이름: dkim._domainkey
유형: TXT
: v=DKIM1; k=rsa; p=public_key

다음은 올바른 DKIM 레코드의 예입니다

dkim._domainkey TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpbBQ0T2xO3/SwziunIC/IFbsxBRub6WXiu8Kc2w7uB4GVw+SAB5wSEslDJbFXQRbdV9i/Duu8EQ9xik8dbqdLVyP4iAtw34g4j6QWKcfocgK4hEkwlPFff1dzUlNQONh2riNE5KVJXuWcizm8hub7nPnl36e7OnxiL0qIU7tT1QIDAQAB

DKIM에 대한 자세한 정보는 https://wikipedia.org/wiki/DomainKeys_Identified_Mail 에서 확인할 수 있습니다

SPF 레코드

SPF 레코드가 있는지는 host 명령을 실행하여 확인할 수 있습니다. 이 경우 명령은 다음과 같습니다:

host -t TXT example.com

출력은 다음과 같습니다:

example.com 설명 텍스트 "v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all"

이 항목에는 ipv6가 없을 수도 있다는 점에 유의하세요. 이 경우 SPF 서명은 다음과 같습니다:

example.com 설명 텍스트 "v=spf1 ip4:ipv4_of_your_server a mx ~all"

참고

SPF 레코드는 하나만 있어야 한다는 점을 유의해야 합니다

DNS 측에서는 레코드를 다음과 같이 추가해야 합니다:

이름: example.com.
유형: TXT
:
v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all
또는 (ipv6를 사용하지 않는 경우)
v=spf1 ip4:ipv4_of_your_server a mx ~all

예를 들면 다음과 같습니다:

example.com TXT v=spf1 ip4:1.2.3.4 a mx ~all

SPF에 대한 자세한 정보는 https://wikipedia.org/wiki/Sender_Policy_Framework 에서 확인할 수 있습니다

DMARC 레코드

대부분의 경우 DMARC 레코드 값은 동일합니다.

DNS 측에서는 다음과 같이 레코드를 추가해야 합니다:

이름: _dmarc
유형: TXT
: v=DMARC1; p=none

예를 들면 다음과 같습니다:

_dmarc.example.com. TXT v=DMARC1; p=none

DMARC에 대한 자세한 정보는 https://wikipedia.org/wiki/DMARC 에서 확인할 수 있습니다

PTR 레코드와 서버의 호스트명

PTR 레코드는 IP 주소를 이름으로 변환하는 역방향 DNS 레코드입니다. 메일 서버에서 이 레코드의 주요 목적은 대부분의 스팸을 제거하는 것입니다. 이 레코드는 이메일이 어떤 호스트명에서 오는지 확인할 수 있게 합니다. 일반적으로 PTR 레코드에는 서버에서 사용되는 도메인 이름이 포함됩니다.

PTR 레코드는 ip-address를 호스트 이름과 연결합니다. PTR 레코드가 올바르게 지정되지 않으면 메일이 거부되어 수신자에게 도달하지 못합니다.

호스트명은 서버를 가리키는 실제 도메인의 이름으로 지정해야 하며, PTR은 다시 서버를 가리키는 도메인을 가리켜야 합니다.

예를 들어 서버에 example.com 도메인이 있다고 가정해 보겠습니다.

다음 명령을 실행하면:

host example.com

다음과 같은 출력을 얻을 수 있습니다:

example.com의 주소는 1.2.3.4입니다.
example.com 메일은 10 mail.example.com에서 처리됩니다.

가능한 문제를 방지하려면 호스트명과 PTR 레코드를 실제 존재하는 2차 서브도메인(예: mail.example.com)으로 설정하는 것이 좋습니다.

SMTP 포트 가용성

일부 호스팅 제공업체는 메일 송수신에 사용되는 포트를 사용할 수 없도록 차단합니다. 메일 서비스에 사용되는 포트는 25, 587, 465, 143, 993일 수 있습니다.

이러한 포트의 가용성을 확인하는 가장 쉬운 방법 중 하나는 telnet 명령을 사용하는 것입니다.

타사 서버로부터의 수신 연결을 확인하려면

다음 명령을 실행하세요:

telnet ip_adress port

예를 들어 1.2.3.4의 25번 포트에 telnet으로 접속하려고 하면 실행할 명령은 다음과 같습니다:

telnet 1.2.3.4 25

연결에 성공하면 다음과 같은 출력이 표시됩니다:

1.2.3.4에 연결 시도 중...
1.2.3.4에 연결되었습니다.
이스케이프 문자는 '^]'입니다.

연결에 실패하면 출력은 다음과 같습니다:

1.2.3.4에 연결 중 ...
some_port 포트의 호스트에 대한 연결을 열 수 없습니다: 연결 실패

또는:

telnet: 원격 호스트에 연결할 수 없음: 연결 시간 초과

발신 연결의 경우

서버에서 다음 명령을 실행하세요:

telnet smtp.gmail.com 25

연결에 성공하면 다음과 같은 출력이 표시됩니다:

2a00:1450:4010:c0b::6c에 연결 시도 중...
smtp.gmail.com에 연결되었습니다.
이스케이프 문자는 '^]'입니다.
220 smtp.gmail.com ESMTP j6-20020ac25506000000b004b53eb60e3csm1066162lfk.256 - gsmtp

클라우드 호스팅을 사용하고 SMTP 서버에 25번 포트를 사용하는 경우, 호스팅 제공업체가 기본적으로 25번 포트의 발신 연결을 차단하고 있을 가능성이 높다는 점에 유의하세요. 아래에서 이 문제를 해결하는 방법에 대한 지침 링크를 확인할 수 있습니다:

호스팅 제공업체의 포트 차단 외에도 서버의 포트가 닫혀 있는지 여부를 확인해야 합니다. 예를 들어 FASTPANEL 제어판에서 방화벽 역할을 하는 iptables를 살펴보겠습니다. 이 경우 25번과 같은 특정 포트에 대한 규칙이 있는지 확인하는 명령은 다음과 같습니다:

iptables-save | grep 25

확인하려는 포트에 대한 규칙이 없으면 아무 정보도 표시되지 않습니다. 메일 서비스 포트를 차단하는 규칙이 있는 경우 다음 명령으로 해당 규칙을 제거해야 합니다:

iptables -D rule chain

예를 들어 명령을 실행한 후 다음과 같은 내용을 발견했다고 가정해 보겠습니다:

iptables-save | grep 25

-A INPUT -p tcp -m tcp --dport 25 -j DROP

이 규칙은 25번 포트를 통해 서버에 접근하는 것을 허용하지 않으므로 메일 발송이 차단됩니다

규칙을 제거하려면 다음 명령을 사용하세요:

iptables -D INPUT -p tcp -m tcp --dport 25 -j DROP

이 명령 예시는 메일 발송에 사용되는 모든 포트를 확인할 수 있게 해줍니다

메일 발송에 대한 IPv6의 영향

메일 서비스에 ipv6를 사용해야 하는 경우, 가장 먼저 해야 할 일은 ipv6에 대한 PTR 레코드가 있는지와 메일 서비스가 특정 포트에서 ipv6를 수신 대기하고 있는지 확인하는 것입니다.

다음 명령을 사용하여 확인할 수 있습니다:

netstat -nltpp | grep tcp6

이 명령의 출력 결과는 ipv6를 사용하는 모든 서비스 목록이며, 여기서 메일 서비스가 이 주소를 사용하는지 확인할 수 있습니다. 안타깝게도 오늘날에는 모든 설정을 올바르게 했더라도 ipv6 사용이 제대로 작동하지 않을 수 있습니다.

메일 서비스 로그를 확인한 결과 오류가 ipv6와 관련되어 있고 전체 구성이 올바르다면, 메일 서비스에서 ipv6 사용을 비활성화할 수 있습니다.

exim4를 예로 들면 ipv6 비활성화는 다음과 같습니다:

  1. 다음 명령으로 서비스에서 ipv6 주소가 사용되는지 확인하세요

    netstat -nltp | grep exim

    exim에서 ipv6 주소가 사용되는지 확인

  2. 구성 파일 /etc/exim4/exim4.conf.template에서 파일 맨 위에 다음 줄을 추가해야 합니다:

    disable_ipv6=true

  3. 파일에 변경 사항을 저장한 다음 다음과 같은 명령으로 서비스를 재시작하세요:

    systemctl restart exim4
  4. 다음 명령을 실행하세요:

    netstat -nltp | grep exim

    서비스가 더 이상 목록에 없는지 확인하려면

    exim에서 ipv6가 비활성화되었는지 확인

타사 서비스를 사용하여 메일 발송 확인

위의 모든 항목을 확인한 후에는 타사 리소스를 사용하여 서버에서의 메일 발송을 확인할 수 있습니다.

가장 편리하고 유용한 서비스 중 하나는 https://www.mail-tester.com 입니다

이를 사용하면 현재 메일 평점을 확인하고, 위에 설정한 데이터가 올바른지 여부에 대한 정보를 얻으며, 평점 개선을 위한 권장 사항도 받을 수 있습니다.

이렇게 하려면 사이트에 표시된 주소로 이메일을 보낸 다음 "Then check your score"를 클릭하면 됩니다.

mail-tester로 메일 테스트