Multi-Domain
도메인 통합
8개의 도메인을 통합하면서 기록 해 두었던 내용입니다.
가상계정을 이용하여 구성하였습니다.
로그인 id가 user1@domain2.com형식으로 사용됩니다.
그동안 Ai와 작업하면서 꼼꼼하게 기록한다고 했는데
아마도 빠진 부분이 있을 수 있습니다.
중요한 내용은 대부분 기록되었으니
혹시나 작업하다 막히는 부분은
Ai의 도움을 받으면 쉽게 해결이 되리라 생각합니다.
초보 분들에게 도움이 되었으면 합니다.
vmail 계정 확인
없으면 먼저 생성하세요. id vmail
Dovecot 핵심 설정
sudo doveconf -n | sed -n '/userdb {/,/}/p'
반드시 아래가 있어야 합니다.
userdb(없으면 LMTP temp_fail 발생)
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
/etc/dovecot/conf.d/10-auth.conf
sudo nano /etc/dovecot/conf.d/10-auth.conf
아래 내용 입력(중복은 삭제 혹은 주석처리, 없는 것은 추가)
disable_plaintext_auth = no
auth_username_format = %Lu
auth_mechanisms = plain login
passdb {
driver = passwd-file
args = scheme=SHA512-CRYPT /etc/dovecot/passwd
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
Postfix main.cf 설정 확인
sudo nano /etc/postfix/main.cf
아래 설정이 반드시 있어야 합니다.
가상 도메인 목록(8개 도메인 리스트)
virtual_mailbox_domains = hash:/etc/postfix/virtual_domains
가상 사용자 목록(user1@domain2.com ... 리스트)
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
Dovecot에게 배달을 맡기는 설정(LMTP)
virtual_transport = lmtp:unix:private/dovecot-lmtp
메일이 저장되는 최상위 통로
virtual_mailbox_base = /var/mail/vhosts
main.cf 설정 연결
sudo nano /etc/postfix/main.cf
아래 내용 순서대로 추가 또는 수정
sender_login 보호(주소 위조 방지)
smtpd_sender_login_maps = hash:/etc/postfix/sender_login_maps
smtpd_client_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_pipelining,
reject_unknown_client_hostname,
reject_rbl_client zen.spamhaus.org(선택사항)
smtpd_sender_restrictions =
reject_sender_login_mismatch,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit_sasl_authenticated,
permit_mynetworks
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unknown_client_hostname,
reject_rbl_client zen.spamhaus.org,(선택사항)
reject_unauth_destination
sudo nano /etc/dovecot/conf.d/10-master.conf
아래 내용을 입력하세요.
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
submission(587) 포트 설정
sudo nano /etc/postfix/master.cf
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
submissions inet n - y - - smtpd
-o syslog_name=postfix/submissions
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
가상 도메인 파일
sudo nano /etc/postfix/virtual_domains
domain1.com OK
domain2.com OK
sudo postmap /etc/postfix/virtual_domains
가상 사용자 매핑 시킵니다
sudo nano /etc/postfix/virtual_mailbox_maps
없으면 새로 만들고 추가하고 입력하세요.
user1@domain1.com domain1.com/user1/
user1@domain2.com domain2.com/user1/
...
저장 후 종료하고 반영
sudo postmap /etc/postfix/virtual_mailbox_maps
발신자 로그인 가상 사서함 계정 기반 매핑
sudo nano /etc/postfix/sender_login_maps
user1@domain1.com user1@domain1.com
user1@domain2.com user1@domain2.com
...
저장 후 Postfix가 읽을 수 있도록 바이너리 인덱스 파일을 생성
sudo postmap /etc/postfix/sender_login_maps
메일 저장 폴더 생성
sudo mkdir -p /var/mail/vhosts/domain2.com/user1
권한 설정
sudo chown -R vmail:vmail /var/mail/vhosts
sudo chmod -R 750 /var/mail/vhosts
아래는 선택(개별 사용자 권한 강조 시)
sudo chmod 700 /var/mail/vhosts/domain2.com/user1
sudo chmod g-s /var/mail/vhosts/domain2.com/user1
확인
ls -ld /var/mail/vhosts
drwxr-s--- vmail vmail
Dovecot 설정
패스워드 생성
doveadm pw -s SHA512-CRYPT
비번 입렵 후 결과 복사
복사한 해시 = {SHA512-CRYPT}...
패스워드 파일 열기
sudo nano /etc/dovecot/passwd
복사한 비번 추가
user1@domain1.com:{SHA512-CRYPT}...:1005:1005::/var/mail/vhosts/domain1.com/user1
user1@domain2.com:{SHA512-CRYPT}...:1005:1005::/var/mail/vhosts/domain2.com/user1
uid/gid 1005가 실제 vmail 계정과 동일해야 합니다.
id vmail
uid=1005(vmail) gid=1005(vmail)
저장 후 권한 설정
sudo chown root:dovecot /etc/dovecot/passwd
sudo chmod 640 /etc/dovecot/passwd
설정 점검 후 재시작
postfix check
sudo systemctl restart dovecot
sudo systemctl restart postfix
내부 인증 테스트
doveadm auth test user1@domain2.com 비밀번호
아래 나오면 성공
passdb: user1@domain2.com auth succeeded
최종 설정 백업
sudo -i
postconf -n > /root/postfix_final.conf
doveconf -n > /root/dovecot_final.conf
exit
