SMTP 응답 코드
메일 반송과 수신 거부에 함께 오는 세 자리 SMTP 응답 코드와 확장 상태 코드(X.Y.Z)에 대한 참조 자료입니다. 코드나 텍스트로 검색하거나, 서버가 돌려준 줄을 그대로 붙여 넣으세요.

코드 117개 중 117개

기본 응답 코드

2xx긍정 완료 응답9
211System status

시스템 상태 또는 시스템 도움말 응답입니다. 실제로는 거의 쓰이지 않습니다.

RFC 5321
214Help message

HELP 명령에 대한 도움말 메시지로, 서버나 특정 명령의 사용법을 알려 줍니다.

RFC 5321
220Service ready

연결을 열 때 서버가 보내는 첫 인사로, 서비스가 준비되었음을 뜻합니다. STARTTLS에 대한 응답으로도 쓰여 TLS 협상을 시작할 수 있음을 알립니다.

RFC 5321
221Service closing transmission channel

서버가 연결을 닫습니다. 보통 QUIT 명령에 대한 응답입니다.

RFC 5321
235Authentication successful

AUTH 인증에 성공했습니다. 보통 확장 코드 2.7.0이 함께 옵니다.

RFC 4954
250Requested mail action okay, completed

요청한 작업이 완료되었습니다. EHLO, MAIL FROM, RCPT TO에 대한 일반적인 응답이며, DATA가 끝난 뒤 서버가 메시지를 수락할 때도 반환됩니다.

RFC 5321
251User not local; will forward

수신자가 로컬 사용자는 아니지만, 서버가 메시지를 수락하고 지정된 주소로 전달합니다.

RFC 5321
252Cannot VRFY user, but will accept message

서버가 사용자의 존재 여부를 확인해 주지 않지만(계정 열거를 막기 위해 VRFY 비활성화), 메시지는 수락하고 전달을 시도합니다.

RFC 5321
253OK, pending messages for node started

ETRN에 대한 응답: 요청한 도메인 또는 노드의 대기열에 있던 메시지 전달을 시작했습니다.

RFC 1985 (ETRN)
3xx긍정 중간 응답2
334Server challenge

AUTH 과정에서 서버가 보내는 Base64 인코딩 챌린지입니다. 클라이언트는 인증 메커니즘의 다음 데이터(예: AUTH LOGIN의 사용자 이름이나 비밀번호)로 응답해야 합니다.

RFC 4954
354Start mail input

DATA에 대한 응답: 서버가 메시지 내용을 기다립니다. 내용은 마침표 하나만 있는 줄로 끝납니다.

RFC 5321
4xx일시적 오류9
421Service not available, closing transmission channel

서비스를 사용할 수 없어 서버가 연결을 닫습니다. 종료, 과부하, 과도한 연결 수, 일시적인 발송 제한 등이 원인입니다. 발신 측은 나중에 다시 시도해야 합니다.

RFC 5321
432A password transition is needed

인증하려면 사용자가 비밀번호를 변경하거나 다른 인증 메커니즘으로 전환해야 합니다. 확장 코드 4.7.12가 함께 옵니다.

RFC 4954
450Requested mail action not taken: mailbox unavailable

메일함을 일시적으로 사용할 수 없습니다(사용 중, 잠김 또는 정책에 따른 일시 거부). 그레이리스팅은 보통 이 코드나 451로 응답합니다.

RFC 5321
451Requested action aborted: local error in processing

DNS 조회 실패나 필터 무응답 같은 서버 내부 오류로 작업이 중단되었습니다. 발신 측은 나중에 다시 시도해야 합니다.

RFC 5321
452Requested action not taken: insufficient system storage

현재 서버에 메시지를 받을 공간이 부족합니다. 메시지당 수신자 수 한도를 넘었다는 뜻일 수도 있으며, 이 경우 클라이언트는 나머지 수신자를 별도 트랜잭션으로 보내야 합니다.

RFC 5321
454Temporary authentication failure

일시적인 인증 실패(예: 자격 증명 서버가 응답하지 않음)이거나, STARTTLS를 요청했을 때 TLS를 일시적으로 사용할 수 없는 상태입니다.

RFC 4954 / RFC 3207
455Server unable to accommodate parameters

서버가 MAIL FROM 또는 RCPT TO로 보낸 매개변수를 지금은 처리할 수 없지만, 나중에는 수락할 수도 있습니다.

RFC 5321
458Unable to queue messages for node

ETRN에 대한 응답: 서버가 요청한 노드의 메시지 대기열을 지금은 처리할 수 없습니다.

RFC 1985 (ETRN)
459Node not allowed

ETRN에 대한 응답: 요청한 노드나 도메인은 대기열 전달을 요청할 권한이 없습니다.

RFC 1985 (ETRN)
5xx영구적 오류17
500Syntax error, command unrecognized

서버가 명령을 인식하지 못했거나 줄이 너무 깁니다. AUTH 교환 중 한 줄이 허용 최대 길이를 넘을 때도 쓰입니다.

RFC 5321
501Syntax error in parameters or arguments

명령은 올바르지만 매개변수나 인수가 잘못되었습니다. 예를 들어 MAIL FROM의 주소 형식이 잘못되었거나 EHLO의 이름이 유효하지 않은 경우입니다.

RFC 5321
502Command not implemented

서버가 명령을 인식하지만 구현하지 않았거나 비활성화해 두었습니다. 많은 서버의 VRFY나 EXPN이 그 예입니다.

RFC 5321
503Bad sequence of commands

명령 순서가 잘못되었습니다. 예를 들어 MAIL FROM보다 먼저 RCPT TO를 보냈거나, 유효한 수신자 없이 DATA를 보낸 경우입니다. 인증 없이 발송하려고 할 때 이 코드를 반환하는 서버도 있습니다.

RFC 5321
504Command parameter not implemented

지정한 매개변수를 서버가 지원하지 않습니다. 예를 들어 지원하지 않는 AUTH 메커니즘을 요청한 경우입니다.

RFC 5321
521Server does not accept mail

이 호스트는 어떤 메일도 받지 않습니다. 220 대신 인사로 보내지며, 클라이언트는 재시도하면 안 됩니다.

RFC 7504
530Authentication required

명령을 수락하기 전에 인증하거나 STARTTLS로 TLS를 시작해야 합니다. 자격 증명 없이 제출 포트 587을 사용할 때 흔히 나타납니다.

RFC 4954 / RFC 3207
534Authentication mechanism is too weak

선택한 인증 메커니즘이 서버 정책상 너무 약합니다. 앱 비밀번호나 OAuth를 요구하는 일부 제공업체가 이 코드를 반환합니다.

RFC 4954
535Authentication credentials invalid

사용자 이름이나 비밀번호가 틀렸거나 자격 증명이 거부되었습니다. 확장 코드 5.7.8이 함께 옵니다.

RFC 4954
538Encryption required for requested authentication mechanism

선택한 인증 메커니즘은 암호화된 연결에서만 사용할 수 있습니다. 먼저 STARTTLS를 실행해야 합니다.

RFC 4954
550Requested action not taken: mailbox unavailable

메일함이 없거나 사용할 수 없거나, 정책(스팸, 블랙리스트, SPF, DKIM, DMARC) 때문에 메시지가 거부되었습니다. 구체적인 원인은 함께 오는 확장 코드로 알 수 있습니다.

RFC 5321
551User not local; please try forward-path

수신자가 로컬 사용자가 아니며 서버는 메시지를 전달하지 않습니다. 보낼 주소를 알려 줄 수도 있습니다.

RFC 5321
552Requested mail action aborted: exceeded storage allocation

할당된 저장 공간을 초과했습니다. 수신자의 메일함이 가득 찼거나, 메시지가 SIZE 확장에서 알린 최대 크기를 넘었습니다.

RFC 5321
553Requested action not taken: mailbox name not allowed

메일 주소가 유효하지 않거나 허용되지 않습니다. 예를 들어 구문이 잘못되었거나 발신자가 그 주소를 사용할 수 없는 경우입니다.

RFC 5321
554Transaction failed

트랜잭션이 실패했습니다. 첫 인사로 오면 해당 클라이언트에 SMTP 서비스를 제공하지 않는다는 뜻이고, DATA 이후에 오면 메시지가 거부되었다는 뜻으로, 주로 내용이나 발신자 평판이 원인입니다.

RFC 5321
555MAIL FROM/RCPT TO parameters not recognized or not implemented

MAIL FROM 또는 RCPT TO로 보낸 확장 매개변수를 서버가 인식하지 못하거나 구현하지 않았습니다.

RFC 5321
556Domain does not accept mail

수신자 도메인이 null MX(‘.’를 가리키는 MX 레코드)를 게시해 메일을 받지 않는다고 선언했습니다. 재시도해도 의미가 없습니다.

RFC 7504

확장 상태 코드(RFC 3463)

2.X.X성공4.X.X지속적인 일시 실패5.X.X영구 실패
X.0기타 또는 미정의1
X.0.0Other undefined status

세부 정보가 없는 상태 코드로, 결과의 클래스(성공, 일시 실패, 영구 실패)만 알 수 있을 때 쓰입니다.

RFC 3463
X.1주소11
X.1.0Other address status

메시지의 주소 중 하나에 문제가 있지만, 더 구체적인 코드에 해당하지 않습니다.

RFC 3463
X.1.1Bad destination mailbox address

대상 서버에 수신자 메일함이 없습니다. 주소를 잘못 입력했거나 탈퇴한 계정 때문에 생기는 전형적인 반송입니다.

RFC 3463함께 쓰이는 코드
X.1.2Bad destination system address

대상 도메인이나 시스템이 없거나 메일을 받을 수 없습니다. 예를 들어 도메인이 확인(resolve)되지 않는 경우입니다.

RFC 3463
X.1.3Bad destination mailbox address syntax

수신자 주소의 구문이 유효하지 않습니다.

RFC 3463함께 쓰이는 코드
X.1.4Destination mailbox address ambiguous

수신자 주소가 대상 시스템의 메일함 여러 개와 일치합니다.

RFC 3463
X.1.5Destination address valid

수신자 주소가 유효합니다. RCPT TO에 대한 긍정 응답에서 2.1.5로 나타납니다.

RFC 3463함께 쓰이는 코드
X.1.6Destination mailbox has moved, No forwarding address

메일함이 있었지만 이전되었고, 알려진 전달 주소가 없습니다.

RFC 3463
X.1.7Bad sender's mailbox address syntax

발신자 주소의 구문이 유효하지 않습니다.

RFC 3463
X.1.8Bad sender's system address

발신자 도메인이 없거나 회신을 받지 않습니다. 예를 들어 MX 레코드도 A 레코드도 없는 경우입니다.

RFC 3463함께 쓰이는 코드
X.1.9Message relayed to non-compliant mailer

메시지가 상태 알림을 지원하지 않는 시스템으로 전달되어, 최종 전달 여부를 확인할 수 없습니다.

RFC 3886
X.1.10Recipient address has null MX

수신자 도메인이 null MX를 게시해 메일을 받지 않는다고 선언했습니다.

RFC 7505함께 쓰이는 코드
X.2메일함5
X.2.0Other or undefined mailbox status

메일함은 있지만 그와 관련된 문제로 전달되지 못했으며, 더 구체적인 코드가 없습니다.

RFC 3463
X.2.1Mailbox disabled, not accepting messages

메일함은 있지만 비활성화되어 메시지를 받지 않습니다. 예를 들어 정지된 계정입니다.

RFC 3463
X.2.2Mailbox full

수신자 메일함이 저장 용량 할당량을 초과했습니다.

RFC 3463함께 쓰이는 코드
X.2.3Message length exceeds administrative limit

메시지가 수신자에게 허용된 최대 수신 크기를 넘었습니다.

RFC 3463함께 쓰이는 코드
X.2.4Mailing list expansion problem

수신자가 메일링 리스트인데, 구성원 목록으로 확장하지 못했습니다.

RFC 3463함께 쓰이는 코드
X.3메일 시스템7
X.3.0Other or undefined mail system status

대상 시스템에 문제가 있지만, 더 구체적인 코드에 해당하지 않습니다.

RFC 3463함께 쓰이는 코드
X.3.1Mail system full

대상 메일 시스템의 저장 공간이 가득 찼습니다.

RFC 3463함께 쓰이는 코드
X.3.2System not accepting network messages

대상 호스트가 임박한 종료, 과부하 또는 유지 보수로 인해 메시지를 받지 않고 있습니다.

RFC 3463 / RFC 7504함께 쓰이는 코드
X.3.3System not capable of selected features

메시지에 필요한 기능을 대상 시스템이 지원하지 않습니다.

RFC 3463
X.3.4Message too big for system

메시지가 서버가 모든 수신자에 대해 허용하는 최대 크기를 넘었습니다.

RFC 3463함께 쓰이는 코드
X.3.5System incorrectly configured

대상 시스템이 잘못 구성되어 메시지를 받을 수 없습니다.

RFC 3463
X.3.6Requested priority was changed

메시지가 수락되었지만 요청과 다른 우선순위로 처리됩니다(MT-PRIORITY 확장).

RFC 6710함께 쓰이는 코드
X.4네트워크 및 라우팅8
X.4.0Other or undefined network or routing status

네트워크 또는 라우팅 문제가 발생했지만, 더 구체적인 코드에 해당하지 않습니다.

RFC 3463
X.4.1No answer from host

연결을 시도했지만 대상 서버가 응답하지 않았습니다.

RFC 3463함께 쓰이는 코드
X.4.2Bad connection

연결은 되었지만 전달을 마치기 전에 끊기거나 불안정해졌습니다.

RFC 3463함께 쓰이는 코드
X.4.3Directory server failure

전달에 필요한 디렉터리 서비스(대개 DNS 조회)가 실패했습니다.

RFC 3463함께 쓰이는 코드
X.4.4Unable to route

대상까지의 경로를 찾지 못했습니다. 예를 들어 도메인에 사용할 수 있는 MX 레코드나 A 레코드가 없는 경우입니다.

RFC 3463
X.4.5Mail system congestion

메일 시스템이 혼잡해 지금은 메시지를 처리할 수 없습니다.

RFC 3463함께 쓰이는 코드
X.4.6Routing loop detected

라우팅 루프가 감지되었습니다. 메시지가 같은 서버를 너무 여러 번 거쳤습니다.

RFC 3463
X.4.7Delivery time expired

최대 재시도 기간이 지나 메시지가 전달되지 못한 채 폐기됩니다.

RFC 3463
X.5전달 프로토콜7
X.5.0Other or undefined protocol status

전달 프로토콜에 문제가 있지만, 더 구체적인 코드에 해당하지 않습니다.

RFC 3463함께 쓰이는 코드
X.5.1Invalid command

명령이 유효하지 않거나, 그 시점에 허용되지 않거나, 인식되지 않습니다.

RFC 3463함께 쓰이는 코드
X.5.2Syntax error

명령에 구문 오류가 있어 서버가 해석할 수 없습니다.

RFC 3463함께 쓰이는 코드
X.5.3Too many recipients

메시지의 수신자 수가 서버가 한 트랜잭션에서 허용하는 수보다 많습니다.

RFC 3463함께 쓰이는 코드
X.5.4Invalid command arguments

명령은 유효하지만 인수가 유효하지 않거나 지원되지 않습니다.

RFC 3463함께 쓰이는 코드
X.5.5Wrong protocol version

클라이언트와 서버 사이에 프로토콜 버전이 호환되지 않습니다.

RFC 3463
X.5.6Authentication Exchange line is too long

AUTH 교환 중 한 줄이 서버가 허용하는 최대 길이를 넘었습니다.

RFC 4954함께 쓰이는 코드
X.6메시지 내용10
X.6.0Other or undefined media error

메시지 내용에 문제가 있지만, 더 구체적인 코드에 해당하지 않습니다.

RFC 3463
X.6.1Media not supported

대상이 메시지 또는 첨부 파일의 콘텐츠 유형을 지원하지 않습니다.

RFC 3463
X.6.2Conversion required and prohibited

메시지를 전달하려면 내용을 변환해야 하지만, 발신자가 이를 금지했습니다.

RFC 3463
X.6.3Conversion required but not supported

메시지를 전달하려면 내용을 변환해야 하지만, 서버가 변환할 수 없습니다.

RFC 3463함께 쓰이는 코드
X.6.4Conversion with loss performed

메시지는 전달되었지만, 내용 변환 과정에서 정보가 손실되었습니다.

RFC 3463함께 쓰이는 코드
X.6.5Conversion Failed

메시지 내용 변환에 실패했습니다.

RFC 3463
X.6.6Message content not available

URL로 참조된 메시지 내용을 가져오지 못했습니다(BURL 확장).

RFC 4468함께 쓰이는 코드
X.6.7Non-ASCII addresses not permitted for that sender/recipient

발신자나 수신자가 ASCII 이외의 문자가 포함된 주소(국제화 메일, SMTPUTF8)를 지원하지 않습니다.

RFC 6531함께 쓰이는 코드
X.6.8UTF-8 string reply is required, but not permitted by the SMTP client

서버가 UTF-8 텍스트로 응답해야 하지만, 클라이언트가 SMTPUTF8 지원을 알리지 않았습니다.

RFC 6531함께 쓰이는 코드
X.6.9UTF-8 header message cannot be transferred to one or more recipients

메시지에 UTF-8 헤더가 있어 이를 지원하지 않는 하나 이상의 수신자에게 전송할 수 없으므로 거부됩니다.

RFC 6531함께 쓰이는 코드
X.7보안 및 정책31
X.7.0Other or undefined security status

세부 정보가 없는 보안 상태 코드입니다. 인증 성공(2.7.0), AUTH 일시 실패(4.7.0), 정책에 따른 거부에서 나타납니다.

RFC 3463함께 쓰이는 코드
X.7.1Delivery not authorized, message refused

발신자가 해당 수신자에게 보낼 권한이 없습니다. 블랙리스트, 평판, 스팸 차단 또는 허용되지 않은 릴레이 시도로 인한 차단입니다. 4.7.1 형태라면 흔히 그레이리스팅을 뜻합니다.

RFC 3463함께 쓰이는 코드
X.7.2Mailing list expansion prohibited

발신자에게 해당 메일링 리스트로 보낼 권한이 없습니다.

RFC 3463함께 쓰이는 코드
X.7.3Security conversion required but not possible

메시지를 한 보안 프로토콜에서 다른 보안 프로토콜로 변환해야 하지만, 불가능합니다.

RFC 3463
X.7.4Security features not supported

메시지에 필요한 보안 기능을 대상이 지원하지 않습니다.

RFC 3463함께 쓰이는 코드
X.7.5Cryptographic failure

전송 중 암호화 작업(예: 서명 검증이나 복호화)이 실패했습니다.

RFC 3463
X.7.6Cryptographic algorithm not supported

메시지에 사용된 암호 알고리즘을 대상이 지원하지 않습니다.

RFC 3463
X.7.7Message integrity failure

무결성 검증에 실패했습니다. 전송 중 메시지가 변경되었거나 체크섬이 일치하지 않습니다.

RFC 3463
X.7.8Authentication credentials invalid

인증 자격 증명이 유효하지 않습니다. 사용자 이름이나 비밀번호가 틀렸습니다.

RFC 4954함께 쓰이는 코드
X.7.9Authentication mechanism is too weak

선택한 인증 메커니즘이 서버 정책이 요구하는 수준보다 약합니다.

RFC 4954함께 쓰이는 코드
X.7.10Encryption Needed

요청한 인증 메커니즘을 사용하려면 TLS 같은 외부 암호화 계층이 필요합니다. 주로 비밀번호를 평문으로 보내는 메커니즘을 위한 코드입니다.

RFC 5248함께 쓰이는 코드
X.7.11Encryption required for requested authentication mechanism

요청한 인증 메커니즘은 암호화된 연결에서만 허용됩니다.

RFC 4954함께 쓰이는 코드
X.7.12A password transition is needed

사용자가 비밀번호를 변경하거나 다른 인증 메커니즘으로 전환해야 합니다.

RFC 4954함께 쓰이는 코드
X.7.13User Account Disabled

인증을 시도하는 사용자의 계정이 비활성화되어 있습니다.

RFC 5248함께 쓰이는 코드
X.7.14Trust relationship required

서버는 신뢰 관계가 확립된 시스템의 메시지만 받습니다.

RFC 5248함께 쓰이는 코드
X.7.15Priority Level is too low

메시지 우선순위가 너무 낮아 지금은 수락할 수 없습니다(MT-PRIORITY 확장).

RFC 6710함께 쓰이는 코드
X.7.16Message is too big for the specified priority

지정한 우선순위에 비해 메시지가 너무 큽니다(MT-PRIORITY 확장).

RFC 6710함께 쓰이는 코드
X.7.17Mailbox owner has changed

발신자가 지정한 날짜 이후 메일함 소유자가 바뀌어 메시지가 전달되지 않습니다(RRVS 확장).

RFC 7293
X.7.18Domain owner has changed

발신자가 지정한 날짜 이후 수신자 도메인의 소유자가 바뀌었습니다(RRVS 확장).

RFC 7293
X.7.19RRVS test cannot be completed

발신자가 요청한 대로 메일함 소유자가 바뀌었는지 서버가 확인할 수 없습니다(RRVS 확장).

RFC 7293
X.7.20No passing DKIM signature found

메시지에 유효한 DKIM 서명이 없는데, 수신 측 정책은 서명을 요구합니다.

RFC 7372함께 쓰이는 코드
X.7.21No acceptable DKIM signature found

메시지에 유효한 DKIM 서명이 있지만, 어느 것도 수신 측 정책(예: 서명 도메인이나 알고리즘)을 충족하지 않습니다.

RFC 7372함께 쓰이는 코드
X.7.22No valid author-matched DKIM signature found

From 헤더에 표시된 도메인과 같은 도메인의 유효한 DKIM 서명이 없습니다.

RFC 7372함께 쓰이는 코드
X.7.23SPF validation failed

발송 IP가 발신자 도메인의 SPF 레코드에서 허용되지 않았습니다.

RFC 7372함께 쓰이는 코드
X.7.24SPF validation error

SPF 평가 중 오류가 발생했습니다. 예를 들어 레코드 형식이 잘못되었거나 DNS 조회가 너무 많은 경우입니다.

RFC 7372함께 쓰이는 코드
X.7.25Reverse DNS validation failed

발송 IP에 역방향 DNS(PTR)가 없거나, 반환된 이름이 다시 그 IP로 확인되지 않습니다.

RFC 7372함께 쓰이는 코드
X.7.26Multiple authentication checks failed

SPF와 DKIM 같은 여러 메시지 인증 검사가 동시에 실패했습니다.

RFC 7372함께 쓰이는 코드
X.7.27Sender address has null MX

발신자 도메인이 null MX를 게시해 회신이나 반송을 받을 수 없으므로 메시지가 거부됩니다.

RFC 7505함께 쓰이는 코드
X.7.28Mail flood detected

메시지가 유사한 악성 메시지 대량 발송의 일부로 보입니다.

draft-levine-mailbomb-header
X.7.29ARC validation failure

ARC 체인 검증에 실패했습니다. ARC는 메시지가 전달 서비스나 메일링 리스트를 거쳐도 인증 결과를 보존하는 방식입니다.

RFC 8617함께 쓰이는 코드
X.7.30REQUIRETLS support required

메시지가 REQUIRETLS를 요구하는데 경로상의 다음 서버가 이 확장을 지원하지 않아, 암호화를 보장한 채 전달할 수 없습니다.

RFC 8689함께 쓰이는 코드

550 5.7.1 Message rejected처럼 서버 응답 전체를 붙여 넣으면 기본 코드와 확장 코드를 한 번에 볼 수 있습니다. 기본 코드로 검색하면 그 코드와 함께 자주 나오는 확장 코드도 표시됩니다.

작동 방식

SMTP 세션에서는 클라이언트의 각 명령(EHLO, MAIL FROM, RCPT TO, DATA 등)에 대해 서버가 세 자리 코드로 시작하는 응답을 보냅니다. 첫째 자리는 결과를 나타내며, 2는 성공, 3은 서버가 추가 데이터를 기다림, 4는 일시적 오류, 5는 영구적 오류입니다. 둘째 자리는 영역을 나타내며, x0z는 구문, x1z는 정보, x2z는 연결, x5z는 메일 시스템입니다. 코드 뒤의 텍스트는 자유 형식이라 서버마다 다르고, 프로그램은 숫자만 봅니다.

세 자리만으로는 원인을 알기 어려워, RFC 3463에서 클래스.주제.세부 형식의 확장 상태 코드를 정의했습니다. 5.1.1은 주소(1)에 관한 영구 실패(5)로, 메일함이 없다는(1) 뜻입니다. 클래스는 첫째 자리의 의미(2, 4, 5)를 반복하고, 주제는 원인을 분류하며, 세부 항목이 이를 구체화합니다. 이 코드를 쓰는 서버는 EHLO 응답에서 ENHANCEDSTATUSCODES 확장을 알리며, 같은 코드가 반송 메시지의 Status 필드에도 나타납니다.

이 표에는 RFC 5321의 기본 코드와 널리 쓰이는 확장(AUTH, STARTTLS, ETRN, null MX)이 추가한 코드, 그리고 IANA 레지스트리의 모든 확장 코드가 각각 자주 함께 나오는 기본 코드와 함께 정리되어 있습니다. 대형 제공업체는 자체 텍스트와 도움말 링크를 덧붙이지만, 번호는 언제나 같습니다.

예시

550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox address계정이 없을 때 Postfix가 보내는 전형적인 반송입니다. 재시도해도 소용없으며 주소를 고쳐야 합니다. 같은 수신자에게 전에는 잘 보내졌다면 계정이 삭제되었을 가능성이 큽니다.
450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox status그레이리스팅: 서버가 모르는 발신자를 일시적으로 거부하고 재시도를 기다립니다. 정상적인 메일 서버는 몇 분 뒤 알아서 재시도해 메시지가 들어가지만, 스팸 프로그램은 대부분 재시도하지 않습니다.
AUTH LOGIN334 VXNlcm5hbWU6334에는 Base64로 인코딩된 챌린지가 들어 있습니다. VXNlcm5hbWU6은 ‘Username:’이고, 다음 UGFzc3dvcmQ6은 ‘Password:’입니다. 자격 증명이 틀리면 서버는 535 5.7.8로 응답하고, 먼저 암호화를 요구하면 538이나 530으로 응답합니다.

활용 사례

  • 서버가 돌려준 오류 메시지로 메일이 반송된 이유를 파악합니다.
  • 오류가 일시적이라 대기열에서 재시도될지, 영구적이라 조치가 필요한지 구분합니다.
  • 애플리케이션, 프린터, 서버에서 메일 발송을 설정할 때 인증 실패를 진단합니다.
  • 메일 서버 로그에 나오는 SPF, DKIM, DMARC, 역방향 DNS, 블랙리스트 거부를 해석합니다.
  • 대량 발송 플랫폼에서 반송을 분류해 존재하지 않는 주소를 목록에서 제거합니다.
  • telnet, openssl s_client, swaks로 캡처한 SMTP 세션을 읽습니다.

자주 묻는 질문

4xx 오류와 5xx 오류는 무엇이 다른가요?

4xx는 일시적 오류입니다. 발신 서버는 메시지를 대기열에 두고 일정 간격으로 재시도하며, 보통 4~5일이 지나도 실패하면 포기하고 반송을 생성합니다. 5xx는 영구적 오류로, 즉시 반송되며 아무것도 바꾸지 않고 같은 메시지를 다시 보내면 또 실패합니다.

550 5.1.1처럼 응답에 코드가 두 개 있는 이유는 무엇인가요?

첫째는 RFC 5321이 요구하는 세 자리 기본 코드이고, 둘째는 원인을 구체적으로 알려 주는 RFC 3463의 확장 상태 코드입니다. 같은 550이라도 메일함이 없거나(5.1.1), 정책에 의해 차단되었거나(5.7.1), SPF에 실패했을(5.7.23) 수 있습니다. 진단할 때는 주로 확장 코드를 보는 것이 좋습니다.

550-5.7.1의 하이픈은 무슨 뜻인가요?

응답이 여러 줄이라는 뜻입니다. 모든 줄에 같은 코드가 붙지만, 중간 줄은 코드와 텍스트를 하이픈으로, 마지막 줄은 공백으로 구분하므로 클라이언트가 응답이 끝난 시점을 알 수 있습니다. EHLO가 돌려주는 확장 목록에서도 같은 형식을 볼 수 있습니다.

주소가 존재하는데 왜 550 5.7.1로 거부되나요?

5.7.1은 수신자가 아니라 발신자에 관한 코드이기 때문입니다. 서버가 당신이 그 메시지를 전달하는 것을 허용하지 않는다는 뜻입니다. 흔한 원인은 발송 IP가 블랙리스트에 올라 있거나, 도메인의 SPF, DKIM, DMARC 검증에 실패했거나, IP에 역방향 DNS가 없거나, 인증 없이 서버를 릴레이로 사용하려 한 경우입니다. 코드 뒤의 텍스트가 대개 단서를 줍니다.

애플리케이션에서 메일을 보낼 때 530이나 535가 나오는 이유는 무엇인가요?

530은 메시지를 수락하기 전에 인증하거나 TLS를 시작해야 한다는 뜻이고, 535는 사용자 이름이나 비밀번호가 틀렸다는 뜻입니다. 애플리케이션이 587 포트와 STARTTLS 또는 465 포트와 암시적 TLS를 사용하는지, 인증이 켜져 있는지 확인하세요. Gmail이나 Microsoft 365 같은 제공업체에서는 평소 비밀번호 대신 앱 비밀번호나 OAuth를 사용해야 합니다.