메일 서버 · 2 min read · Oct 05, 2025
가상 도메인 및 사용자와 함께하는 전체 메일 서버 솔루션 (Debian Etch, Postfix, Mysql, Dovecot, DSpam, ClamAV, Postgrey, RBL) - 6페이지
V. 메일 배달 서버
메일 배달 서버는 DSPAM이라는 서비스의 베이지안 알고리즘을 사용하여 스팸을 확인하는 서버입니다. DSPAM은 매우 강력하며 다양한 설정에 대한 많은 문서가 제공됩니다. 우리의 특정 설정은 상당히 간단합니다. MX-1 및 MX-2는 LMTP를 통해 postman.internal.example.com으로 메일을 배달합니다. LMTP는 로컬 메일 전송 프로토콜로, 여기에 대한 기본 정보를 찾을 수 있습니다. DSPAM은 메일을 수신하고, 자체 알고리즘에 대해 확인한 후 ClamAV에 전달하여 바이러스 검사를 수행합니다. 모든 것이 잘 되었다고 가정하면, 메일은 Dovecot에 전달되어 최종 배달됩니다.
섹션을 하나씩 살펴보겠습니다. 그러니 postman.internal.example.com에서 작업을 시작해 봅시다.
A. NFS 설정
Dovecot이 우리를 위해 메일을 배달할 것이므로, 메일 배달 서버에 vmail 디렉토리를 매핑해야 합니다.
다음과 같이 vmail 사용자 및 디렉토리를 생성하세요:
# useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "가상 사서함" vmail
# mkdir /var/vmail
# chmod 770 /var/vmail/
# chown vmail:mail /var/vmail/이제 NFS 클라이언트 도구를 설치해야 합니다:
# apt-get install nfs-common portmap그런 다음 디렉토리를 NFS 공유에 마운트해야 합니다. 간단한 테스트를 위해 다음을 실행하세요:
# mount files-1.internal.example.com:/vmail /vmail이제 files-1에서 /vmail 공유에 접근할 수 있어야 합니다. 파일을 작성해 보세요:
# cd /vmail
# touch tmp이번에는 잘 작동해야 합니다 (postman은 NFS 마운트에 대한 읽기-쓰기 접근 권한이 있습니다… MX 서버는 읽기 접근 권한만 있었습니다).
모든 것이 잘 작동한다고 가정하고, NFS를 언마운트하세요:
# cd /
umount /vmail그런 다음 다음을 /etc/fstab에 추가하여 마운트를 영구적으로 만드세요:
[...]
files-1.internal.example.com:/vmail /vmail nfs rw,rsize=4096,wsize=4096,hard,intr,tcp,noatime,nodev,async 0 0파일 시스템을 마지막으로 마운트하세요:
# mount /vmail… 그리고 준비가 완료되었습니다!
B. DSPAM 설치
다시 한 번, 데비안은 이것을 믿을 수 없을 만큼 간단하게 만듭니다:
# apt-get install dspam dspam-doc libdspam7-drv-mysqllibdspam7-drv-mysql의 데이터베이스를 dbconfig-common으로 구성할 것인지 묻는 메시지가 표시됩니다. ‘아니오’를 선택하세요. 솔직히 dbconfig를 사용하고 싶다면 아무도 당신을 막을 수 없지만, 문서화의 목적을 위해 설정을 명시하겠습니다.
C. MySQL 데이터베이스 설정
MySQL 데이터베이스에 몇 개의 테이블을 설정해야 하므로, sql-1.internal.example.com에 로그인하고 루트로 mysql 클라이언트를 실행하세요:
# mysql -u root -p그런 다음 새 DSPAM 데이터베이스와 사용자를 생성하세요:
MYSQL> CREATE DATABASE dspam_db;
MYSQL> GRANT ALL PRIVILEGES ON dspam_db.* TO 'dspam_user'@'postman.internal.example.com' IDENTIFIED BY 'dspam_user_password';참고: dspam_user_password를 안전한 비밀번호로 변경하세요!
D. MySQL용 DSPAM 설정
이제 MySQL에 DSPAM 데이터베이스와 사용자 계정이 있으므로, DSPAM MySQL 드라이버에서 테이블을 가져올 수 있습니다. 이들은 메일 배달 서버(postman.internal.example.com)의 /usr/share/doc/libdspam7-drv-mysql에 저장되어 있습니다. 스키마에는 속도를 위해 구축된 것과 하드 디스크 공간을 절약하기 위해 구축된 두 가지 버전이 있습니다. 우리는 속도를 위한 것을 사용할 것이지만, 원하는 것을 선택할 수 있습니다. 문서를 읽는 것을 잊지 마세요, 그것이 존재하는 이유입니다!
주 스키마를 설치하세요:
# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/mysql_objects-speed.sql권한 오류가 발생하면 mysql 서버로 돌아가서 사용자를 올바르게 만들었는지 확인하세요.
모든 것이 잘 진행되었다고 가정하고, 가상 사용자에 대한 테이블도 추가해야 합니다:
# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/virtual_users.sql이제 DSPAM에 MySQL DB와 통신하는 방법을 알려줘야 합니다. 이는 /etc/dspam/dspam.d/mysql.conf 파일을 통해 수행됩니다. 적절히 편집하세요:
[...]
MySQLServer sql-1.internal.example.com
MySQLPort 3306
MySQLUser dspam_user
MySQLPass dspam_user_password
MysqLDb dspam_db
[...]
MySQLVirtualTable dspam_virtual_uids
MySQLVirtualUIDField uid
MySQLVirtualUsernameField username
[...] 이제 DSPAM은 모든 정보를 MySQL DB에 저장합니다.
참고: 이것은 임시 설정입니다. 이 가이드를 작성하기 전에 DSPAM 가상 사용자 설치를 완료하지 않았기 때문입니다. 이상적으로는, 모든 토큰 정보가 올바르게 저장되도록 Postfix와 동일한 가상 사용자 테이블을 DSPAM이 참조하도록 하고 싶습니다. 변경이 완료되는 대로 가이드를 업데이트하겠습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.