HELPER VPS

VPS 메일 보내기, 587·465 포트로 SMTP 발송 서비스 연결

HELPER VPS의 모든 서버는 스팸을 막기 위해 바깥으로 나가는 25번 포트를 닫아 두고, 그 덕분에 같은 네트워크를 쓰는 모든 서버의 IP 평판이 깨끗하게 지켜져요. 메일은 메일 발송 서비스의 587번이나 465번 포트로 보내면 받은편지함에 더 잘 도착해요.

왜 587번과 465번 포트로 보내나요

25번 포트는 메일 서버끼리 메일을 넘겨주는 포트예요. 서버에서 바로 받는 쪽 메일 서버로 보내면 IP 평판, 역방향 DNS, 발송량 관리까지 모두 직접 챙겨야 하고, 새 서버 IP에서 보낸 메일은 스팸함으로 가기 쉬워요.

587번과 465번은 로그인한 사용자가 메일을 맡기는 제출 포트예요. 메일 발송 서비스에 아이디와 비밀번호로 로그인해서 메일을 맡기면, 평판이 관리되는 발송 서버가 대신 전달해 줘요. 회원 가입 확인, 비밀번호 찾기, 주문 알림 같은 메일이 받은편지함에 잘 도착하는 가장 확실한 방법이에요.

  • 587번: 평문으로 연결한 뒤 STARTTLS로 암호화를 시작해요. 대부분의 서비스와 프로그램이 기본으로 쓰는 포트예요.
  • 465번: 처음부터 TLS로 암호화해서 연결해요. 설정 화면에서는 SSL 또는 SSL/TLS로 표시되는 경우가 많아요.

메일 발송 서비스 고르기

메일 발송 서비스는 크게 두 가지예요. 하나는 웹사이트와 앱의 알림 메일을 대량으로 보내는 트랜잭션 메일 서비스이고, 다른 하나는 이미 쓰고 있는 회사 메일이나 개인 메일 계정의 SMTP 기능이에요. 어느 쪽이든 아래 네 가지 정보를 받아 두면 설정 준비가 끝나요.

  • SMTP 서버 주소: 예를 들어 smtp.example.com
  • 포트: 587(STARTTLS) 또는 465(SSL/TLS)
  • 사용자 이름: 서비스가 정해 준 아이디나 메일 주소
  • 비밀번호: 서비스의 SMTP 전용 비밀번호나 API 키

발송량이 많은 쇼핑몰이나 서비스라면 트랜잭션 메일 서비스가 발송 기록, 반송 처리, 수신 거부 관리까지 해 줘서 편해요. 알림 몇 통이면 메일 계정의 SMTP로도 충분해요.

서버에서 SMTP 연결 확인하기

설정하기 전에 서버에서 발송 서비스까지 연결이 잘 되는지 확인해요. 아래 명령은 연결만 확인하고 메일은 보내지 않아요.

터미널
nc -vz smtp.example.com 587
openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf -quiet
openssl s_client -connect smtp.example.com:465 -crlf -quiet

첫 줄이 succeeded나 open을 보여 주고, openssl 명령이 220으로 시작하는 서버 인사말을 보여 주면 준비가 된 거예요. Ctrl+C로 빠져나와요. nc 명령이 없으면 Ubuntu와 Debian은 apt install -y netcat-openbsd, AlmaLinux는 dnf install -y nmap-ncat으로 설치해요.

Postfix를 발송 서비스로 연결하기

서버의 프로그램, cron 알림, mail 명령이 보내는 메일을 한곳에 모으려면 Postfix를 발송 서비스로 넘겨주는 릴레이로 설정해요. 서버 안의 모든 메일이 587번 포트로 로그인해서 나가요.

1단계. 설치

Ubuntu, Debian
apt install -y postfix libsasl2-modules mailutils

설치 중 메일 설정 종류를 물으면 Internet Site를 고르고, 메일 이름에는 내 도메인을 넣어요. AlmaLinux 10은 dnf install -y postfix cyrus-sasl-plain s-nail로 설치하고 systemctl enable --now postfix로 켜요.

2단계. 릴레이 설정

터미널
postconf -e 'relayhost = [smtp.example.com]:587'
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = texthash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options = noanonymous'
postconf -e 'smtp_tls_security_level = encrypt'
postconf -e 'inet_interfaces = loopback-only'

inet_interfaces = loopback-only는 서버 안에서 보내는 메일만 받도록 해서, 바깥에서 이 서버를 메일 중계에 쓰지 못하게 해요.

3단계. 로그인 정보 저장

터미널
echo '[smtp.example.com]:587 SMTP_USER:SMTP_PASSWORD' > /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
systemctl restart postfix

465번 포트를 쓰는 서비스라면 relayhost와 sasl_passwd의 포트를 465로 바꾸고 postconf -e 'smtp_tls_wrappermode = yes'를 한 줄 더 넣어요.

4단계. 시험 발송과 로그 확인

터미널
echo "VPS mail test" | mail -s "Test from VPS" you@example.com
postqueue -p
journalctl -t postfix/smtp -n 20

로그에 status=sent가 보이면 발송 서비스가 메일을 받아 간 거예요. postqueue -p는 아직 나가지 못한 메일 목록을 보여 줘요. 로그인 정보를 고쳤다면 systemctl restart postfix 뒤에 postqueue -f로 다시 보내요.

워드프레스와 앱에서 SMTP 설정하기

웹사이트와 앱은 대부분 SMTP 설정 칸을 갖고 있어서, 서버에 Postfix를 두지 않고 발송 서비스로 바로 연결해도 돼요. 워드프레스는 SMTP 플러그인을 설치하고 아래 값을 넣으면 회원 가입과 비밀번호 찾기 메일이 그 서비스로 나가요.

  • SMTP 호스트: 발송 서비스 주소
  • 암호화: 587번이면 TLS(STARTTLS), 465번이면 SSL
  • 포트: 587 또는 465
  • 인증: 켜기, 사용자 이름과 비밀번호 입력
  • 보내는 사람 주소: 내 도메인의 주소(예: no-reply@example.com)

Node.js, PHP, Python 앱도 같은 값으로 메일 라이브러리를 설정해요. 비밀번호는 코드에 직접 적지 말고 환경 변수나 설정 파일로 넣어 두면 깔끔해요. 워드프레스 설치는 워드프레스 설치 가이드에 있어요.

도메인 DNS에 SPF, DKIM, DMARC 넣기

받는 쪽 메일 서버는 이 메일이 정말 내 도메인에서 허락한 곳에서 왔는지 DNS 기록으로 확인해요. 세 가지 기록을 넣어 두면 받은편지함 도착률이 크게 올라가요.

  • SPF: 내 도메인 메일을 보낼 수 있는 서버 목록이에요. 발송 서비스가 알려 주는 include 값을 TXT 기록 하나에 넣어요.
  • DKIM: 메일에 붙는 전자 서명이에요. 발송 서비스 화면에서 만들어 주는 TXT나 CNAME 기록을 그대로 넣어요.
  • DMARC: SPF와 DKIM 확인에 실패한 메일을 어떻게 다룰지 정해요. 처음에는 아래처럼 보고만 받는 설정으로 시작해요.
DNS TXT
_dmarc.example.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

몇 주 동안 보고서를 보며 모든 메일이 통과하는 것을 확인하면 p=quarantine, 이어서 p=reject로 올려 도메인 사칭을 막아요.

메일 받기와 다음 단계

내 도메인으로 오는 메일을 받으려면 메일 호스팅 서비스의 MX 기록을 도메인에 넣어요. 받는 메일은 메일 호스팅이, 보내는 알림 메일은 발송 서비스가 맡으면 서버는 웹사이트와 앱에만 집중해요.

메일 발송 서비스로 보내는 방식은 서버를 옮기거나 새로 만들어도 설정 몇 줄만 옮기면 그대로 이어져요. 서버 IP가 바뀌어도 발송 평판은 서비스 쪽에 그대로 남아서, 사이트를 다른 지역으로 옮길 때도 메일 도착률이 흔들리지 않아요.

다른 포트는 서비스에 맞게 자유롭게 열어 써요. 쓰는 포트만 여는 방법은 기본 방화벽 가이드, 서버 이용 규칙은 이용 정책에 있어요.

함께 보면 좋은 가이드

이 가이드와 이어서 해 두면 좋은 설정이에요.

가이드 전체 보기