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
37 [바이브코딩 - 클로드] kospiAlarm 작업 메모 김영훈 2025.10.29 109
36 infra-base 기본 서버 설정 메모 김영훈 2026.01.20 171
35 임시 파킹 페이지 김영훈 2026.01.20 308
34 monitoring 설정 김영훈 2026.01.23 130
33 ollama-chatbot 테스트 메모 김영훈 2026.01.27 355
32 OpenVPN 구축 김영훈 2026.01.28 143
31 GitLab CI/CD 테스트 김영훈 2026.01.28 216
30 Traefik 설정 김영훈 2026.01.28 353
29 openclaw 구축 작업 노트 [2] 김영훈 2026.02.01 341
» smtp-relay 설정 김영훈 2026.02.06 195
27 WAF honeypot 설정 김영훈 2026.02.07 104
26 OpenClaw cron regression 대응 김영훈 2026.02.08 186
25 DGX Ollama 구축 김영훈 2026.02.11 183
24 원격 LLM 챗봇 테스트 김영훈 2026.02.11 140
23 Docker Ollama 트러블슈팅 김영훈 2026.02.11 128
22 GPU 모니터링 대시보드 구축 김영훈 2026.02.11 150
21 DGX Spark LLM 벤치마크 김영훈 2026.02.11 132
20 LLM 모델 선정 김영훈 2026.02.12 141
19 OpenClaw 모델 삭제 사고 김영훈 2026.02.13 114
18 ARM Kubernetes 구축 2 - VM 생성과 클러스터 설치 김영훈 2026.02.14 138
쓰기 태그
 첫 페이지 7 8 9 10 11 12 13 14 15 16 끝 페이지