홈페이지 제작할땐!

비버팩토리

it 인프라 노트/우분투

라운드 큐브 메일 발송 문제

윤비버 2025. 6. 24. 23:07
728x90

지난번에 라운드 큐브 설치까지 해봤습니다.

근데 이번에 메일 발송이 되지 않아서 한참을 헤맸습니다. 

smtp 문제는 해결 됐으나 네이버 메일 발송하면 도착하지 않아서 무슨 문제 인가 실마리를 찾아봤습니다.

 

챗지피티도 문제를 3가지로 꼽았는데 

https://ryans-note.tistory.com/40

 

메일 서버에서 gmail 로 메일 발송 문제 해결 SPF, DMARC, DKIM

앞에서 이메일 서버를 설치해 보았는데, 네이버나 프로톤메일 등은 이메일 주고 받기가 잘 되는데 지메일로는 받는것만 되고 보내는 것이 안된다. 그래서 알아봤더니 https://support.google.com/a/answer

ryans-note.tistory.com

이거를 보면서 spf, dmarc, dkim 을 세팅하기로 했습니다.

 

 

 

이 에러 메시지:

opendkim-testkey: syntax error in key data (ASCII 0x76 at offset 7)

은 DKIM 공개키 TXT 레코드의 값이 잘못됐거나, DNS에 등록된 문자열 형식이 깨졌을 때 발생합니다.


🔍 원인 분석

  • ASCII 0x76는 'v' 문자입니다 → DKIM TXT 레코드 값이 v=DKIM1; k=rsa; p=...처럼 시작하는 줄을 그대로 TXT에 등록하지 않아서 발생할 수 있습니다.
  • 또는 공백, 줄바꿈, 큰따옴표가 비정상적으로 삽입된 경우입니다.

✅ 해결 방법

1. DKIM 공개키 다시 확인하기

보통 mail.txt 또는 mail.public 파일 안에 있습니다.

cat /etc/opendkim/keys/beaverfactory.kr/mail.txt

정상 예시:

mail._domainkey  IN  TXT  ( "v=DKIM1; k=rsa; p=MIGfMA0G...IDAQAB" )

중요: DNS에 등록할 땐 " 포함 시, 한 줄 또는 "..." "..." 형식으로 줄바꿈 없이 등록해야 합니다.


2. DNS 등록 시 주의사항

  • TXT 레코드 이름: mail._domainkey.beaverfactory.kr
  • 값 (예시):
"v=DKIM1; k=rsa; p=..."

주의:

  • v=부터 시작되어야 함
  • p= 다음엔 공백 없이 Base64 문자열만 들어가야 함
  • 너무 긴 경우 → 자동으로 "..." "..."로 나누는 경우도 있지만, 이는 DNS 서비스마다 처리 방식이 다릅니다

3. DNS 등록 예시 (Cloudflare 기준)

항목 값

Type TXT
Name mail._domainkey
Content "v=DKIM1; k=rsa; p=MIGfMA0G...IDAQAB" (큰따옴표 포함한 전체 한 줄)

🔍 등록 후 테스트

DNS 적용된 후 다시 실행:

opendkim-testkey -d beaverfactory.kr -s mail -vvv

정상 출력:

key OK

원하시면 공개키 내용을 보여주시면 (중간 생략 가능), 제가 정확한 등록값으로 변환해드릴 수 있습니다. DNS 콘솔에 정확히 어떤 식으로 넣어야 하는지도 도와드릴게요.

 

 

좋습니다. 아래 내용을 정리하면 다음과 같습니다:


✅ 상황 요약

  • Roundcube에서 SMTP로 메일 발송은 정상 처리됨
    → 로그상: 250 2.0.0 Ok: queued as 897BAC0A13
  • 하지만 postcat -vq 897BAC0A13 시 → "No such file or directory"
  • mailq → 큐는 비어 있음
    → 즉, Postfix가 해당 메일을 처리 완료하고 큐에서 제거함

❓ 그런데 수신자는 메일을 못 받음?

그렇다면 문제는 다음 2가지 가능성에 집중됩니다:


🔍 1. 메일이 정상적으로 발송됐지만 수신자 측(Naver) 에서 거부하거나 스팸으로 처리

가장 유력합니다.

Naver 같은 대형 수신자는 SPF, DKIM, DMARC 인증이 안된 메일을 즉시 거절하거나 스팸 처리합니다.


✅ DKIM 오류 확인 (이미 오류 있었음):

opendkim-testkey -d beaverfactory.kr -s mail -vvv

결과:

opendkim-testkey: 'mail._domainkey.beaverfactory.kr' record not found

즉, DNS에 DKIM 공개키가 누락된 상태입니다.


🛠 해결 방법 (DKIM + SPF + DMARC 설정)

① DKIM TXT 레코드 등록

DNS 설정 (예: 카페24, Cloudflare, 가비아 등)에서 다음을 등록:

  • 이름(name): mail._domainkey
  • 유형(type): TXT
  • 값(value): v=DKIM1; k=rsa; p=공개키내용...
    • 이 공개키는 /etc/opendkim/keys/beaverfactory.kr/mail.txt 또는 .pub 파일 안에 있음.

② SPF TXT 레코드 등록

  • 이름: @
  • (예시):
  • v=spf1 mx ip4:서버공인IP ~all

③ (선택) DMARC 레코드 등록

  • 이름: _dmarc
  • :
  • v=DMARC1; p=none; rua=mailto:postmaster@beaverfactory.kr

✅ 설정 후 검증

  • DKIM 확인:결과: key OK 나와야 정상
  • opendkim-testkey -d beaverfactory.kr -s mail -vvv
  • SPF 확인:
  • dig +short TXT beaverfactory.kr
  • DMARC 확인:
  • dig +short TXT _dmarc.beaverfactory.kr

📌 그 외 확인할 것


✉️ 테스트 권장

support@beaverfactory.kr 계정에서 다음 테스트 계정으로 메일 보내보세요:

  • check-auth@verifier.port25.com
  • mail-tester.com → 웹사이트 접속 후 나오는 주소로 메일 보내기

이들은 SPF, DKIM, DMARC 상태와 발송 점수를 분석해 줍니다.


메일이 제대로 도착하게 하려면 반드시 DNS 인증 3종 (SPF/DKIM/DMARC) 설정을 마무리해야 합니다.
DNS 레코드 등록 후 알려주시면 설정 검증도 도와드릴게요.

 

 

여기까지 dns 세팅을 완료 했습니다.

 

메일 도착은 하네요 이제는 반대로 네이버 메일을 발송해서 제 메일 도착 하는지 확인 하도록 하겠습니다.

 

Undelivered Mail Returned to Sender 문제가 있네요

This is the mail system at host support.beaverfactory.kr.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                  The mail system

<support@beaverfactory.kr>: User unknown in virtual alias table

 

 

수신 문제 해결 하기 

 

에러 로그를 확인부터 해야합니다.

 

sudo tail -f /var/log/mail.log

 

tail -n 100 /var/log/mail.log

 

 

수정은 거의 보통 포스트픽에서 설정을 수정하면됩니다.

vim /etc/postfix/main.cf

 

 

설정 한 부분을 확인하려면 

sudo postconf -n

 

 

여기서 virtual_alias_domains 를 제거 혹은 주석처리 했더니 에러 해결! 

대신에 다른 에러가 출력됬습니다..

 

 

https://foxydog.tistory.com/114

 

Rocky Linux - 메일서버(Postfix) RBL 정책 적용

◆ RBL이란? 국내 KISA 불법스팸대응센터 내용 참고 RBL (Real-time Blocking List) 실시간 블랙리스트의 약자로 이메일 수신 시 간편하게 스팸 여부를 판단하여 차단할 수 있도록 제공되는 스팸 발송에 이

foxydog.tistory.com

 

여기 사이트 참고해서 몇가지 수정 할게 있습니다.

 

 

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, 
reject_unauth_destination, check_policy_service unix:private/policyd-spf,
reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net, 
reject_rbl_client cbl.abuseat.org, reject_rbl_client spamlist.or.kr

 

여기보면 heck_policy_service unix:private/policyd-spf 이 있는데 이것을 제대로 설치를 하던지 아니면 제거 해야된다.

 

 

 

/usr/local/bin/policyd-spf 파일이 없다고 나오면, postfix-policyd-spf-python 패키지가 제대로 설치되지 않았거나, 다른 경로에 설치됐을 가능성이 큽니다.

아래 단계별로 다시 확인해 보시죠.


1. 패키지 설치 상태 확인

dpkg -l | grep policyd-spf

설치되어 있으면 다음처럼 나옵니다:

ii  postfix-policyd-spf-python  x.x.x  ...

안 나온다면 설치가 안 된 겁니다.


2. 다시 설치 시도 (Ubuntu/Debian 기준)

sudo apt update
sudo apt install postfix-policyd-spf-python

에러나면 복사해서 알려주세요.


3. policyd-spf 실행파일 위치 확인

which policyd-spf

또는

find /usr -name policyd-spf 2>/dev/null

설치되었으면 경로가 나옵니다. 없으면 설치 실패입니다.


4. Python 패키지 수동 설치 시도 (경로 확인 포함)

sudo apt install python3-pip
sudo pip3 install postfix-policyd-spf-python

설치 후 아래 명령어로 실제 파일 경로 확인:

sudo find /usr -name policyd-spf 2>/dev/null

5. 설치된 경로를 master.cf의 policyd-spf 경로에 정확히 넣어주세요

예를 들어 /usr/bin/policyd-spf라면:

policyd-spf  unix  -       n       n       -       0       spawn
  user=nobody argv=/usr/bin/policyd-spf

6. 그래도 안 나오면

  • policyd-spf 패키지가 OS 버전과 호환이 안 될 수도 있습니다.
  • 대안으로 postfix-policyd-spf-python 대신 pypolicyd-spf를 써야 할 수도 있어요.
sudo apt install pypolicyd-spf

이후 master.cf에는 경로를

policyd-spf  unix  -       n       n       -       0       spawn
  user=nobody argv=/usr/lib/postfix/policyd-spf

처럼 변경할 수 있습니다.


필요하면 설치 로그나 오류 메시지 공유해 주세요.
더 도와드릴게요!

 

 

혹시 몰라서 일부만 제거 하고 재시작 했더니 문제 해결 완료!!

sudo postmap /etc/postfix/virtual 
sudo systemctl restart postfix

 

 

메일 수신이 좀 늦은것 빼고는 정상적으로 받을수있습니다.

고생 하셨습니다!!

728x90