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