yeonghoon.kim

  • 게시판
  • 갤러리

smtp-relay 설정

김영훈 2026.02.06 11:59 조회 수 : 195

0025-smtp-relay 작업.

chloe.ai.kr 댓글 알림이나 시스템 메일 발송용으로 SMTP 릴레이를 따로 구성했다.

처음에는 Postfix만 띄우는 정도였고, 이후 DKIM까지 붙였다.

 

 

docker/docker-compose.yml

version: '3.8'

services:
  smtp-server:
    image: mwader/postfix-relay:latest
    container_name: smtp-server
    restart: unless-stopped
    ports:
      - "25:25"
    environment:
      POSTFIX_myhostname: ${HOSTNAME:-smtp.yeonghoon.kim}
      POSTFIX_mydomain: ${MAIL_DOMAIN:-chloe.ai.kr}

      OPENDKIM_DOMAINS: ${MAIL_DOMAIN:-chloe.ai.kr}
      OPENDKIM_RequireSafeKeys: "no"
      OPENDKIM_KEYSIZE: ${DKIM_KEYSIZE:-1024}

      POSTFIX_message_size_limit: ${MESSAGE_SIZE_LIMIT:-52428800}
    volumes:
      - mail-queue:/var/spool/postfix
      - dkim-keys:/etc/opendkim/keys
      - ../config/opendkim.conf:/etc/opendkim.conf:ro
      - ../logs:/var/log
    networks:
      - mail
    labels:
      - "project=0025-smtp-relay"
      - "service=smtp"

networks:
  mail:
    driver: bridge

volumes:
  mail-queue:
    driver: local
  dkim-keys:
    driver: local

 

 

DKIM 키는 1024비트로 잡았다.

2048비트로 만들면 DNS TXT 레코드가 너무 길어져서 등록이 애매했다.

 

 

scripts/setup-dkim.sh

DOMAIN=${1:-chloe.ai.kr}
SELECTOR=${2:-mail}

PUBLIC_KEY=$(docker exec smtp-server cat /etc/opendkim/keys/$DOMAIN/$SELECTOR.txt 2>/dev/null || echo "")

echo "$PUBLIC_KEY"

echo "  호스트: $SELECTOR._domainkey.$DOMAIN"
echo "  dig TXT $SELECTOR._domainkey.$DOMAIN"

 

 

DNS 쪽에서 확인한 것.

 

SPF

chloe.ai.kr TXT "v=spf1 ip4:<서버 IP> ~all"

 

DMARC

_dmarc.chloe.ai.kr TXT "v=DMARC1; p=none; rua=mailto:[email protected]"

 

DKIM

mail._domainkey.chloe.ai.kr TXT "v=DKIM1; ..."

 

rDNS

dig +short -x <서버 IP>

 

HELO랑 rDNS가 안 맞아서 이것도 수정했다.

docker exec smtp-server postconf -e "myhostname = mail.yeonghoon.kim"
docker exec smtp-server postfix reload

 

Mail-Tester 점수는 처음에 8.6/10 정도였다.

Date / Message-ID 헤더가 빠져서 감점.

from email.utils import formatdate, make_msgid

msg['Date'] = formatdate(localtime=True)
msg['Message-ID'] = make_msgid(domain="chloe.ai.kr")

 

이거 넣고 10/10.

테스트 발송은 스크립트로 처리.

 

./scripts/send-test-mail.sh <수신자>

 


  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

번호 제목 글쓴이 날짜 조회 수
공지 2025 일본 여행 계획 김영훈 2024.10.10 4119
공지 현금, 저축, 투자, 지출, 예산, 보험 내역(2024-05-30) 김영훈 2024.03.10 3752
297 DGX Spark LLM 벤치마크 김영훈 2026.02.11 132
296 GPU 모니터링 대시보드 구축 김영훈 2026.02.11 150
295 Docker Ollama 트러블슈팅 김영훈 2026.02.11 128
294 원격 LLM 챗봇 테스트 김영훈 2026.02.11 140
293 DGX Ollama 구축 김영훈 2026.02.11 183
292 OpenClaw cron regression 대응 김영훈 2026.02.08 186
291 WAF honeypot 설정 김영훈 2026.02.07 104
» smtp-relay 설정 김영훈 2026.02.06 195
289 openclaw 구축 작업 노트 [2] 김영훈 2026.02.01 341
288 Traefik 설정 김영훈 2026.01.28 353
287 GitLab CI/CD 테스트 김영훈 2026.01.28 216
286 OpenVPN 구축 김영훈 2026.01.28 143
285 ollama-chatbot 테스트 메모 김영훈 2026.01.27 355
284 monitoring 설정 김영훈 2026.01.23 130
283 임시 파킹 페이지 김영훈 2026.01.20 308
282 infra-base 기본 서버 설정 메모 김영훈 2026.01.20 171
281 [바이브코딩 - 클로드] kospiAlarm 작업 메모 김영훈 2025.10.29 109
280 [바이브코딩 - 클로드] fullstack_template 작업 메모 김영훈 2025.10.18 243
279 [바이브코딩 - 클로드] reminder_android 작업 메모 김영훈 2025.10.17 85
278 [바이브코딩 - 클로드] bingbingsubway 작업 메모 김영훈 2025.10.12 165
쓰기 태그
 첫 페이지 1 2 3 4 5 6 7 8 9 10 끝 페이지