소개

그레이리스팅

그레이리스팅(Greylisting)은 스팸 발송자가 메일 발송을 실패할 경우 다시 시도하지 않는다는 점을 이용해, 의심되는 발송자의 경우 일시적(15분)으로 메일 수신을 거부하고 정상적인 발송자의 재 발송 시도를 수용하게 되는 스팸 방지 기술이다.

기술의 특성에서 알 수 있겠지만, 이미 화이트리스트에 등록되어 있는 발송자가 아니라면 1차적으로는 메일 수신이 되지 않아 메일에 지연이 발생한다.

분명 개인 메일 서버 운영에서 스팸 차단에 매우 효과적인 기술이긴 하지만, 지연 시간이 너무 답답하여 나는 이 기술을 비활성화하기로 마음 먹었다.

방법

Mail-in-a-Box에서는 postfix의 그레이리스팅 데몬 ‘postgrey’를 사용하여 그레이리스팅을 구성한다.

처음에는 postgrey를 비활성화하는 방법을 고민해보았지만 최대한 Mail-in-a-Box의 구성을 수정하지 않는 방법에서 찾은 방법이 바로 Whitelist 파일이 정규식을 지원하는 것을 이용한, 전체 Whitelisting이다.

기존 지연 확인하기

Jun 1 22:41:34 mail postfix/smtpd[5373]: connect from cvsmtppost31.nm.naver.com[114.111.35.166]
Jun 1 22:41:34 mail postfix/smtpd[5374]: connect from cvsmtppost35.nm.naver.com[114.111.35.167] Jun 1 22:41:34 mail postfix/smtpd[5373]: warning: restriction `reject_authenticated_sender_login_mismatch' ignored: no SASL support
Jun 1 22:41:34 mail postfix/smtpd[5374]: warning: restriction `reject_authenticated_sender_login_mismatch' ignored: no SASL support
Jun 1 22:41:34 mail postgrey[849]: action=greylist, reason=new, client_name=cvsmtppost35.nm.naver.com, client_address=114.111.35.167/32, sender=anon@naver.com, recipient=anon@anon.anon
Jun 1 22:41:34 mail postgrey[849]: action=greylist, reason=new, client_name=cvsmtppost31.nm.naver.com, client_address=114.111.35.166/32, sender=anon@naver.com, recipient=anon@anon.anon
Jun 1 22:41:34 mail postfix/smtpd[5374]: NOQUEUE: reject: RCPT from cvsmtppost35.nm.naver.com[114.111.35.167]: 450 4.2.0 <me@doda.dev>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/anon.html; from=<anon@anon.anon> to=<anon@anon.anon> proto=ESMTP helo=<cvsmtppost35.nm.naver.com>
Jun 1 22:41:34 mail postfix/smtpd[5373]: NOQUEUE: reject: RCPT from cvsmtppost31.nm.naver.com[114.111.35.166]: 450 4.2.0 <anon@anon.com>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/anon.html;from=<anon@anon.anon> to=<anon@anon.anon> proto=ESMTP helo=<cvsmtppost31.nm.naver.com>

/var/log/mail.log 파일을 열어보면 내가 테스트로 보낸 메일(네이버)가 신규 발송자라는 이유로 거부되었다. 그레이리스팅되었다는 450 에러 반환과 함께 메세지도 친절하게 알려준다.

Whitelist 파일에 추가하기

/etc/postgrey/whitelist_clients 파일에 다음과 같은 내용을 추가한다:

/.*/

Whitelist 결과 확인

아까와 같이 /var/log/mail.log 파일을 확인하면

Jun 1 22:51:34 mail postgrey[965]: action=pass, reason=client whitelist, client_name=cvsmtppost31.nm.naver.com, client_address=114.111.35.166/32, sender=anon@anon.anon, recipient=anon@anon.anon
Jun 1 22:51:34 mail postgrey[965]: action=pass, reason=client whitelist, client_name=cvsmtppost35.nm.naver.com, client_address=114.111.35.167/32, sender=anon@anon.anon, recipient=anon@anon.anon

postgrey가 client whitelist에 존재한다는 이유로 pass시킨 것을 확인 가능하다.

주의할 점

  • 당연하겠지만, Greylisting으로 인해 걸려졌던 이메일 스팸들이 유입될 수 있다.
    • 발송 서버의 아이피를 안다면 해당 아이피만 Whitelist에 등록하는 것이 좋을 수도 있다.
  • 메일 서버를 이미 오래 사용했다면, 자주 수신되는 메일 발송자들은 이미 자동으로 Whitelist에 등록되어 관리되고 있을 수 있다.

참고

태그
mailinabox
반응과 댓글 시스템은 Giscus에 의해 호스팅되며, 모든 대화는 GitHub에 저장됩니다.

출처가 명확하지 않은 내용을 신뢰하지 마세요. 글 작성자는 이로 인해 발생하는 책임을 지지 않습니다.

피드백 무엇이든 환영합니다 🤗

doda.devlicensegithubmade with ☕️

Mail-in-a-Box 그레이리스팅(Greylisting) 비활성화하기 – 도다위키