개인용 우분투에 메일서버를 설치하고, 관리자만 메일을 보내거나 받을 수 있게 설정할 수 있을까?

개인용 우분투에 메일서버를 설치하고, 관리자만 메일을 보내거나 받을 수 있게 설정할 수 있을까? 보안기능이 있어서 스팸메일로 다른사람들이 광고나 홍보나 다른 나쁜 용도로 활용하지 못해야해.

우분투(Ubuntu) 개인 서버에 **Postfix(메일 발송)**와 **Dovecot(메일 수신)**을 설치하여 “나만 사용할 수 있는 메일 서버”를 구축할 수 있습니다.

특히 우려하시는 스팸 릴레이(Open Relay) 방지는 메일 서버 구축 시 가장 중요한 보안 사항입니다. 인증된 사용자(관리자)만 메일을 보낼 수 있도록 **SMTP 인증(SASL)**을 강제하고, 외부에서 제3자가 내 서버를 경유하여 메일을 보내는 것을 차단하는 설정을 적용해야 합니다.

다음은 보안을 강화한 개인용 메일 서버 구축의 핵심 단계입니다.


사전 준비 사항 (필수)

본격적인 설치 전, 다음 조건이 갖춰져야 정상적인 메일 서버 운영이 가능합니다.

  1. 도메인 (Domain): 예: mydomain.com (가비아, 후이즈 등에서 구매)

  2. 고정 IP: 유동 IP는 스팸으로 분류될 확률이 매우 높습니다.

  3. DNS 설정: A 레코드(IP 연결), MX 레코드(메일 수신용), SPF/DKIM(스팸 분류 방지용) 설정이 필요합니다.


1단계: 패키지 설치

터미널에서 필수 패키지를 설치합니다.

Bash

sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd
  • 설치 중 설정 화면이 나오면 **’Internet Site’**를 선택하고, System mail name에 도메인 주소(예: mydomain.com)를 입력합니다.


2단계: Postfix 설정 (보내기 및 보안 설정)

외부인이 내 서버를 통해 스팸을 보내지 못하게 막는 핵심 단계입니다.

/etc/postfix/main.cf 파일을 열어 수정합니다.

Bash

sudo nano /etc/postfix/main.cf

다음 설정들을 찾아 수정하거나 추가합니다.

Ini, TOML

# --- 기본 설정 ---
myhostname = mail.mydomain.com
mydomain = mydomain.com
myorigin = /etc/mailname
mydestination = $myhostname, $mydomain, localhost, localhost.localdomain
inet_interfaces = all

# --- 보안 및 인증 설정 (가장 중요) ---
# SASL 인증 활성화 (아이디/암호가 없으면 발송 불가)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# --- 릴레이 제한 (스팸 방지 핵심) ---
# 설명:
# permit_mynetworks: 내 서버 내부(localhost)에서의 발송 허용
# permit_sasl_authenticated: 아이디/암호로 로그인한 사람(관리자)만 허용
# reject_unauth_destination: 그 외 모든 외부 발송 요청 거부 (이것이 스팸 릴레이를 막습니다)
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

# --- TLS 암호화 설정 (통신 보안) ---
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes

3단계: Dovecot 설정 (받기 및 인증 연동)

Dovecot은 메일을 받아 저장하고, Postfix에게 “이 사용자가 맞는지 확인해줘”라고 인증 정보를 제공하는 역할을 합니다.

1. 인증 설정 파일 수정 /etc/dovecot/conf.d/10-master.conf 파일을 엽니다.

Bash

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}
  • 이 설정은 Postfix가 Dovecot을 통해 로그인을 처리할 수 있게 길을 열어주는 것입니다.

2. 인증 방식 설정 /etc/dovecot/conf.d/10-auth.conf 파일에서 다음 주석을 해제하고 수정합니다.

Bash

disable_plaintext_auth = yes
auth_mechanisms = plain login

4단계: 관리자 계정 생성 및 적용

서버에 존재하는 리눅스 계정을 이메일 계정으로 사용합니다.

  1. 관리자 계정 생성: (이미 우분투 계정이 있다면 생략 가능)

    Bash

    sudo adduser adminuser
    
  2. 이 adminuser의 아이디와 비밀번호가 곧 이메일의 로그인 정보가 됩니다.

  3. 다른 사용자를 추가하지 않으면, 오직 이 계정만 메일 서버에 접속할 수 있습니다.


5단계: 서비스 재시작 및 방화벽 설정

설정을 적용하고 포트를 엽니다.

Bash

sudo systemctl restart postfix dovecot
sudo ufw allow 25/tcp   # SMTP (메일 수신)
sudo ufw allow 587/tcp  # SMTP Submission (메일 발송 - 클라이언트용)
sudo ufw allow 143/tcp  # IMAP (메일 확인)

6단계: 보안 검증 (테스트)

이제 메일 클라이언트(Outlook, Thunderbird, 스마트폰 메일 앱)에서 설정을 해봅니다.

  • 받는 메일 서버: https://www.google.com/url?sa=E&source=gmail&q=mail.mydomain.com (포트 143)

  • 보내는 메일 서버: https://www.google.com/url?sa=E&source=gmail&q=mail.mydomain.com (포트 587, 인증 필요, STARTTLS)

  • 아이디/암호: 우분투 계정 정보

스팸 릴레이 테스트: 외부(다른 PC)에서 텔넷(telnet) 등을 이용해 인증 없이 메일을 보내보려 시도했을 때 Relay access denied라는 메시지가 뜨면 보안 설정이 성공한 것입니다.

추가적인 보안 제안 (강력 추천)

  1. SSL/TLS 인증서 적용: 무료인 Let’s Encrypt를 사용하여 메일 서버에 인증서를 설치하세요. 암호화되지 않은 메일 전송은 중간에 탈취될 수 있습니다.

  2. Fail2Ban 설치: 비밀번호를 무작위로 대입하여 뚫으려는 시도를 막기 위해, 로그인 실패가 5회 이상 발생하면 해당 IP를 자동으로 차단하는 fail2ban을 꼭 설치하세요.

  3. 포트 25번 차단 주의: 가정용 인터넷(KT, SKT 등)을 사용 중이라면 통신사에서 25번 포트(메일 서버 간 통신)를 막아두는 경우가 많습니다. 이 경우 메일 수신이 불가능할 수 있으므로, 클라우드(AWS, Oracle Cloud 등) 환경이 아니라면 확인이 필요합니다.


이 과정은 리눅스 시스템에 대한 이해가 어느 정도 필요합니다.

현재 도메인을 가지고 계신 상태인가요? 아니면 로컬 네트워크에서만 테스트해보고 싶으신 건가요? 상황에 맞춰 다음 단계를 안내해 드릴 수 있습니다.

Similar Posts

답글 남기기