서버 설정 · 3 min read · Dec 31, 2025
CentOS 5.1에서 Virtualmin으로 가상 호스팅 설정 방법 - 페이지 3
구성
Postfix 설정
소개
우리는 다음 기능을 갖춘 postfix를 설정할 것입니다:
- 가상 호스팅
- UCE 방지
- 안티 바이러스
- SMTP 인증
- TLS
- RBLs
- SPF
- 공격 완화
계정 및 도메인의 추가는 virtualmin을 통해 구성되지만 수동으로도 가능합니다. 설정은 리소스 친화적으로 설계되어 과도한 사양이 아닌 기계에서도 실행될 수 있어 리소스를 더 잘 활용할 수 있습니다. 리소스 친화적으로 만들기 위해 대부분의 다른 방법과 달리 가상 사용자 정보를 저장하기 위해 외부 데이터베이스를 사용하지 않으며, amavisd-new를 실행하는 대신 스팸 및 바이러스 검사를 위해 milters를 사용합니다.
기본 사항
우선 호스트 이름, 메일 출처, 네트워크, 해시 맵 스풀 디렉토리와 같은 기본 사항을 구성할 것입니다. 이러한 모든 구성 옵션은 명시되지 않는 한 /etc/postfix/main.cf에 추가되어야 합니다. 샘플 구성 파일은 이 페이지의 끝에서 다운로드할 수 있습니다.
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mydomain = example.com
myorigin = $mydomain
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
canonical_maps = hash:/etc/postfix/canonical
sender_canonical_maps = hash:/etc/postfix/canonical
recipient_canonical_maps = hash:/etc/postfix/canonical
virtual_alias_maps = hash:/etc/postfix/virtual
mail_spool_directory = /var/spool/mailMaildir
우리는 기본 mbox 형식 대신 훨씬 개선된 maildir 형식을 사용할 것입니다:
home_mailbox = Maildir/SASL
SMTP 인증을 수행하기 위해 SASL을 사용할 것입니다. 그러나 Cyrus SASL은 saslauthd 데몬을 실행해야 하므로 사용하지 않을 것입니다. 대신 dovecot을 IMAP 및 POP3용으로 실행할 것이므로 dovecot sasl을 사용할 것입니다. 이렇게 하면 두 가지를 한 번에 해결할 수 있습니다.
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yesTLS
우리는 SMTP 인증 중에 일반 텍스트 비밀번호가 전송되지 않도록 TLS가 필요합니다. TLS를 지원하는 서버는 이 서버와 보안 연결을 통해 통신할 수 있습니다.
cacert.org에서 서명된 서버 인증서를 생성하는 방법에 대한 지침은 여기에서 찾을 수 있습니다.
- TLS 랜덤 소스 설정:
tls_random_source = dev:/dev/urandom- 서버 TLS 활성화:
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/pki/postfix/key.pem
smtpd_tls_cert_file = /etc/pki/postfix/server.pem
smtpd_tls_CAfile = /etc/pki/postfix/root.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache- 클라이언트 TLS 활성화:
smtp_use_tls = yes
smtp_tls_key_file = /etc/pki/postfix/key.pem
smtp_tls_cert_file = /etc/pki/postfix/server.pem
smtp_tls_CAfile = /etc/pki/postfix/root.crt
smtp_tls_session_cache_database = btree:/var/spool/postfix/smtp_tls_cache
smtp_tls_note_starttls_offer = yes스팸 방지
- 유효한 EHLO / HELO 요구:
smtpd_helo_required = yes- 이메일 주소 수집 공격 방지:
disable_vrfy_command = yes- 거부 코드를 영구적으로 변경(기본적으로 postfix는 임시 실패를 의미하는 4xx 오류 코드를 발행하므로 영구 오류를 위해 5xx가 필요합니다):
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
unknown_local_recipient_reject_code = 550- 발신자 주소 확인 설정:
address_verify_map = btree:/var/spool/postfix/verify
smtpd_sender_restrictions = hash:/etc/postfix/sender_access- /etc/postfix/sender_access 생성 및 추가:
#sample /etc/postfix/sender_access contains frequently spoofed domains
aol.com reject_unverified_sender
hotmail.com reject_unverified_sender
yahoo.com reject_unverified_sender
gmail.com reject_unverified_sender
bigfoot.com reject_unverified_sender- 좀비 및 고장난 클라이언트로부터의 공격 완화:
smtpd_error_sleep_time = 5s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20- 인증된 클라이언트에서만 파이프라인 허용:
smtpd_data_restrictions = reject_unauth_pipelining- postfix-policyd-spf-perl 설치 및 SPF 지원 활성화:
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz
tar xzvf postfix-policyd-spf-perl-2.005.tar.gz
cd postfix-policyd-spf-perl-2.005
cp postfix-policyd-spf-perl /etc/postfix/이것을 /etc/postfix/master.cf에 추가:
spfpolicy unix - n n - - spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl- DKIM 지원 추가:
DKIM 지원 추가에 대한 지침은 여기에서 찾을 수 있습니다.
- domainkeys 지원 추가:
domainkeys 지원 추가에 대한 지침은 여기에서 찾을 수 있습니다.
- 모든 것이 작동하도록 하려면 smtpd_recipient_restrictions 옵션에 따라 달라지므로 아래와 같이 설정합니다:
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
check_recipient_access hash:/etc/postfix/access
reject_unknown_recipient_domain
reject_unknown_sender_domain
reject_unverified_recipient
reject_non_fqdn_recipient
reject_non_fqdn_sender
reject_invalid_hostname
reject_rbl_client list.dsbl.org
reject_rbl_client zen.spamhaus.org
reject_rbl_client l1.spews.dnsbl.sorbs.net
reject_rbl_client combined.njabl.org
reject_rbl_client bl.spamcop.net
reject_rhsbl_sender dsn.rfc-ignorant.org
reject_rhsbl_sender bogusmx.rfc-ignorant.org
reject_rhsbl_sender rhsbl.sorbs.net
reject_rhsbl_client dsn.rfc-ignorant.org
reject_rhsbl_client bogusmx.rfc-ignorant.org
reject_rhsbl_client rhsbl.sorbs.net
check_policy_service unix:private/spfpolicyMilters [SpamAssassin & ClamAV]
스팸 분류를 위해 spamassassin을 사용하고 바이러스 검사를 위해 clamav를 사용할 때, 리소스를 많이 사용하는 amavisd-new 데몬 대신 postfix의 milter 인터페이스를 사용할 것입니다. 이는 clamd를 실행할 필요조차 없이 clamav milter가 스캔을 자체적으로 수행하기 때문에 매우 효율적인 방법입니다.
smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock
non_smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sockDB 파일 생성
postmap /etc/postfix/canonical
postmap /etc/postfix/access
postmap /etc/postfix/virtual
postmap /etc/postfix/sender_access샘플 구성 파일
- main.cf
- master.cf
- canonical
- virtual
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.