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

mailtester result
mail-tester.com 10/10 인증샷