시작하기

rousme-mailer 는 내 서버에서 내 도메인으로 메일을 보내는 발송 서버입니다. 청구서·가입 안내 같은 서비스 메일과 뉴스레터·광고 메일을 외부 발송 서비스 없이 직접 보낼 수 있습니다. 이 문서는 무엇을 준비해야 하고 어떤 순서로 진행하는지 한눈에 보여 줍니다.

이 제품이 하는 일

할 일 어디서
내 도메인 주소(billing@example.com 등)로 메일 발송 관리 화면 [발송] 탭, 발송 API, 587 포트(다른 프로그램에서 SMTP 로)
받는 쪽이 "정말 이 도메인이 보낸 메일" 임을 확인할 수 있게 인증(SPF·DKIM·DMARC) 서명은 자동, 넣을 DNS 값은 [설치 확인] 탭이 알려 줌
발송 결과: 전달·반송·반송 사유, 메일 서비스(Gmail·네이버 등)별 집계 [발송 결과] 탭
수신거부 링크·발송 제외 목록 (수신거부한 사람·없는 주소는 자동으로 뺌) [수신자 관리] 탭
주소록(엑셀 CSV)·그룹·광고 수신 동의 기록, 사람마다 이름이 들어간 메일 [주소록]·[템플릿] 탭
너무 많이 보내지 않게: 하루 한도·보내는 속도 제한 [발송] 탭
테스트 모드: 외부로 내보내지 않고 서버 안 시험함(Mailpit)으로만 화면 위쪽 [실서버 모드로 전환]·[테스트 모드로 전환]
매일 자동 백업, 업데이트·되돌리기 관리 화면 [백업] 탭, 서버 명령 ./install.sh

하지 않는 일

준비물

준비물 설명
도메인 보낸사람 주소에 쓸 도메인 (예: example.com). DNS 레코드를 넣을 수 있어야 합니다 (가비아·Cloudflare 등 도메인 관리 화면)
서버(VPS) 한 대 리눅스, x86_64, 메모리 2GB 이상, 디스크 여유 10GB 이상 권장 (최소 5GB). 25번 포트로 메일을 내보낼 수 있는 업체 (서버 고르기)
PTR 설정 권한 서버 업체 콘솔에서 IP 의 "Reverse DNS" 를 바꿀 수 있어야 합니다 (대부분 됨)
서버 접속 SSH 로 root 또는 sudo 할 수 있는 계정. Windows 10·11 은 PowerShell 에 ssh·scp 명령이 들어 있습니다
시험용 메일 주소 설치 확인에 쓸 내 Gmail·네이버 주소

지원 운영체제: Ubuntu 22.04·24.04, Debian 12·13, Rocky·AlmaLinux·RHEL 8·9 (처음부터 끝까지 확인한 것은 Ubuntu 24.04). 이 서버는 메일 발송 전용으로 쓰기를 권합니다. 이미 웹사이트가 도는 서버면 80·443 포트가 겹칩니다.

전체 흐름

  1. 서버 준비 — VPS(가상 서버)를 만들고, 25번 발송이 되는지 사전 점검으로 확인 (서버 고르기). 이때 도메인에 A 레코드 두 개를 먼저 넣어 두면 나중에 기다리는 시간이 줄어듭니다 (A 레코드)
  2. 설치 — 배포 묶음을 서버에 올리고 sudo ./install.sh (10분 안팎). 질문에 도메인 등을 답하면 사전 점검 → 설치 → 넣을 DNS 값 안내까지 합니다 (설치)
  3. DNS·PTR 넣기 — 도메인 관리 화면에 A·SPF·DKIM·DMARC(·MX), 서버 업체 콘솔에 PTR (DNS 와 인증)
  4. 설치 확인 — 관리 화면 [설치 확인] 탭의 줄이 "통과" 가 될 때까지 (DNS 반영에 몇 분~몇 시간). MX 줄은 보고서를 다른 메일 서비스로 받으면 "주의" 로 남아도 됩니다 (MX)
  5. 테스트 모드로 시험 — 처음에는 모든 메일이 서버 안 Mailpit 으로만 갑니다. 발송 화면·템플릿·주소록을 마음껏 시험
  6. [실서버 모드로 전환] 하고 내 주소로 1통 — Gmail 에서 SPF·DKIM·DMARC 가 모두 PASS 인지 확인 (반영 확인)
  7. IP 예열 2~4주 — 하루 한도를 조금씩 올리며 평판 쌓기 (IP 예열)

용어

용어 뜻
DNS 레코드 도메인에 붙이는 정보. "이 이름은 이 IP", "이 서버가 이 도메인 메일을 보내도 됨" 같은 것을 적습니다
A 레코드 이름 → IP. mail.example.com 이 이 서버 IP 를 가리키게 합니다
PTR (역방향 DNS) IP → 이름. 받는 서버가 "이 IP 는 누구냐" 고 물을 때의 답. 도메인 관리 화면이 아니라 서버 업체 콘솔에서 넣습니다
SPF "이 도메인 메일은 이 IP 들에서 보낸다" 는 목록 (TXT 레코드)
DKIM 메일마다 붙는 전자 서명. 받는 쪽은 DNS 에 넣은 공개키로 확인합니다. 키는 설치 때 서버가 만듭니다
DMARC SPF·DKIM 이 안 맞는 메일을 받는 쪽이 어떻게 할지(p=none·quarantine·reject)와 보고서를 받을 주소
MX 이 도메인 메일을 받는 서버. 이 제품에서는 DMARC 보고서를 받을 때만 씁니다
CNAME (별칭) 이름 → 다른 이름. 메일 서버 이름에는 쓰지 않고 A 레코드로 넣습니다
TTL DNS 값을 다른 곳이 얼마나 오래 기억하는지(초). 값을 바꾸면 예전 값이 TTL 만큼 남아 있을 수 있습니다
셀렉터 (DKIM) DKIM 공개키를 찾는 이름표. 이 제품은 mail 을 써서 mail._domainkey.도메인 에 넣습니다 (메일 서버 이름과는 상관없음)
SSH·scp 서버에 접속하는 명령(ssh)과 파일을 올리는 명령(scp)
sudo 일반 계정에서 관리자(root) 권한으로 명령을 실행. root 로 접속했으면 빼도 됩니다
Docker 프로그램을 꾸러미(컨테이너)로 띄우는 도구. 이 제품은 메일 서버(james)·관리 화면(web)·HTTPS(caddy)·시험함(mailpit) 네 꾸러미로 돕니다
SMTP / 587 메일을 주고받는 규약과, 프로그램이 로그인해 메일을 넘기는 포트
STARTTLS 메일 서버끼리 주고받을 때 암호화를 켜는 방법. 이 제품은 자동으로 씁니다
x86_64 서버 CPU 종류 (보통 서버). ARM 서버와 구분됩니다
스왑 메모리가 모자랄 때 디스크 일부를 메모리처럼 쓰는 것
방화벽 (ufw·firewalld·보안 그룹) 들어오는 포트를 막거나 여는 것. 서버 안(ufw·firewalld)과 서버 업체 콘솔(보안 그룹) 두 곳에 있습니다
Let's Encrypt 무료 HTTPS 인증서 발급 기관. 이 제품이 자동으로 받고 갱신합니다
이미지 / 볼륨 이미지는 프로그램 꾸러미 파일, 볼륨은 데이터(주소록·설정·키)를 두는 곳. 업데이트는 이미지만 바꾸고 볼륨은 그대로 둡니다
토큰 비밀번호 대신 쓰는 접근 열쇠. 비공개 이미지를 받을 때 판매자 토큰이 쓰입니다
테스트 모드 / 실서버 모드 테스트 모드는 모든 메일을 서버 안 Mailpit 으로 보내 밖으로 안 나갑니다. 실서버 모드에서만 실제로 발송됩니다
IP 예열 새 IP 는 평판이 없어서, 적은 양부터 며칠씩 늘려 가며 받는 쪽의 신뢰를 쌓는 것
반송(바운스) 받는 서버가 메일을 거절한 것. 없는 주소 같은 영구 반송과 잠깐 문제인 일시 반송이 있습니다
거래성 메일 / 광고 메일 청구서·가입 안내처럼 거래에 필요한 메일과, 홍보·할인·뉴스레터. 법 규칙이 다릅니다 (구분)