시작하기
rousme-mailer 는 내 서버에서 내 도메인으로 메일을 보내는 발송 서버입니다. 청구서·가입 안내 같은 서비스 메일과 뉴스레터·광고 메일을 외부 발송 서비스 없이 직접 보낼 수 있습니다. 이 문서는 무엇을 준비해야 하고 어떤 순서로 진행하는지 한눈에 보여 줍니다.
이 제품이 하는 일
| 할 일 | 어디서 |
|---|---|
내 도메인 주소(billing@example.com 등)로 메일 발송 |
관리 화면 [발송] 탭, 발송 API, 587 포트(다른 프로그램에서 SMTP 로) |
| 받는 쪽이 "정말 이 도메인이 보낸 메일" 임을 확인할 수 있게 인증(SPF·DKIM·DMARC) | 서명은 자동, 넣을 DNS 값은 [설치 확인] 탭이 알려 줌 |
| 발송 결과: 전달·반송·반송 사유, 메일 서비스(Gmail·네이버 등)별 집계 | [발송 결과] 탭 |
| 수신거부 링크·발송 제외 목록 (수신거부한 사람·없는 주소는 자동으로 뺌) | [수신자 관리] 탭 |
| 주소록(엑셀 CSV)·그룹·광고 수신 동의 기록, 사람마다 이름이 들어간 메일 | [주소록]·[템플릿] 탭 |
| 너무 많이 보내지 않게: 하루 한도·보내는 속도 제한 | [발송] 탭 |
| 테스트 모드: 외부로 내보내지 않고 서버 안 시험함(Mailpit)으로만 | 화면 위쪽 [실서버 모드로 전환]·[테스트 모드로 전환] |
| 매일 자동 백업, 업데이트·되돌리기 | 관리 화면 [백업] 탭, 서버 명령 ./install.sh |
하지 않는 일
- 받은편지함 도착을 보장하지 않습니다. 메일이 받은편지함에 갈지 스팸함에 갈지는 받는 쪽(Gmail·네이버 등)이 보내는 IP·도메인의 평판, 메일 내용, 받는 사람들의 반응(스팸 신고·열람)을 보고 정합니다. 이 제품은 인증을 맞추고 평판을 쌓는 방법(IP 예열)을 안내할 뿐, 결과를 약속할 수 없습니다.
- 일반 메일을 받는 메일함이 아닙니다. 이 서버가 받는 것은 DMARC 보고서뿐입니다. 고객 문의 같은 메일은 지금 쓰는 메일 서비스(Google Workspace·네이버 웍스 등)를 그대로 쓰세요. 함께 쓸 수 있습니다.
- 수신 동의 없는 광고 발송을 돕지 않습니다. 광고 메일은 법에 따라 동의한 사람에게만 보내야 합니다 (법 준수).
- 스팸 필터를 피하는 기능은 없고 만들지도 않습니다.
준비물
| 준비물 | 설명 |
|---|---|
| 도메인 | 보낸사람 주소에 쓸 도메인 (예: 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 포트가 겹칩니다.
전체 흐름
- 서버 준비 — VPS(가상 서버)를 만들고, 25번 발송이 되는지 사전 점검으로 확인 (서버 고르기). 이때 도메인에 A 레코드 두 개를 먼저 넣어 두면 나중에 기다리는 시간이 줄어듭니다 (A 레코드)
- 설치 — 배포 묶음을 서버에 올리고
sudo ./install.sh(10분 안팎). 질문에 도메인 등을 답하면 사전 점검 → 설치 → 넣을 DNS 값 안내까지 합니다 (설치) - DNS·PTR 넣기 — 도메인 관리 화면에 A·SPF·DKIM·DMARC(·MX), 서버 업체 콘솔에 PTR (DNS 와 인증)
- 설치 확인 — 관리 화면 [설치 확인] 탭의 줄이 "통과" 가 될 때까지 (DNS 반영에 몇 분~몇 시간). MX 줄은 보고서를 다른 메일 서비스로 받으면 "주의" 로 남아도 됩니다 (MX)
- 테스트 모드로 시험 — 처음에는 모든 메일이 서버 안 Mailpit 으로만 갑니다. 발송 화면·템플릿·주소록을 마음껏 시험
- [실서버 모드로 전환] 하고 내 주소로 1통 — Gmail 에서 SPF·DKIM·DMARC 가 모두 PASS 인지 확인 (반영 확인)
- 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 는 평판이 없어서, 적은 양부터 며칠씩 늘려 가며 받는 쪽의 신뢰를 쌓는 것 |
| 반송(바운스) | 받는 서버가 메일을 거절한 것. 없는 주소 같은 영구 반송과 잠깐 문제인 일시 반송이 있습니다 |
| 거래성 메일 / 광고 메일 | 청구서·가입 안내처럼 거래에 필요한 메일과, 홍보·할인·뉴스레터. 법 규칙이 다릅니다 (구분) |