Rocky Linux - 짐브라(Zimbra) 메일서버 설치「로컬 테스트」

    Zimbra 소개

    공식 홈페이지 : https://www.zimbra.com/

    Zimbra는 이메일 서버와 웹 클라이언트를 포함하는 협업 소프트웨어입니다. Zimbra는 Zimbra, Inc. 에서 개발되었으며, 2005년에 처음으로 Zimbra Collaboration Suite (ZCS) 릴리스 되었습니다. 하지만 이후 여러 회사를 거처 인수(매각)가 됩니다. [2007] 「야후(Yahoo)」 ▷ [2010] 「VMware」 ▷ [2013] 「텔리전트(Telligent Systems)」 ▶ [2015~2022(현재)] 「시나코(Synacor)」 회사에 최종 인수되어 지금까지 계속 개발을 해오고 있습니다. Zimbra는 여러 버전이 있으며 상업용으로 사용되는 Network Edition과 캘린더 및 연락처 동기화를 한 Outlook 연동 버전 Connector for Outlook 그리고 포스팅에서 설치해야 할 무료 공개 버전인 「Zimbra Collaboration Open Source 」 입니다.

    설치환경 및 준비물

    마지막 릴리즈 테스트 : [2022-09-21]

    Zimbra Collaboration Open Source 버전 : 8.8.15

     

    □ VMware Workstation 가상화에서 Rocky Linux 8.6 OS 준비 [포스팅 참고]

    ※ 최소 스펙으로 4 코어(CPU) / 4GB 메모리(RAM) 이상 세팅이 필요합니다. 그 이하는 테스트해보니 설치하다가 Out of memory로 행이 걸릴 확률이 높습니다!

    □ [root@localhost ~]# dnf update [※ OS 설치 후 기본 패키지 최신 업데이트]

    □ [root@localhost ~]# cat /etc/selinux/config | grep SELINUX  [보안 설정]

    SELINUX=disabled  [빠른 테스트를 위해 비활성화, 서버 재시작 필요]

     

    ※ Zimbra는 설치 스크립트를 제공을 합니다. 소프트웨어에 필요한 모든 오픈 소스들을 자동으로 설치합니다. 다만, 설치 과정 중 DNS 네임서버를 체크하는 부분이 있는데 도메인이 없거나 네임서버의 A/MX 레코드 값이 세팅이 되어 있지 않다면 설치 도중 중단합니다. 때문에 Bind를 설치하여 내부의 가상 도메인을 인식할 수 있도록 세팅을 진행할 겁니다. 자세한 내용은 설치 과정에서 보여 드리겠습니다.


    STEP01 → 호스트 파일 및 로컬 DNS 자동 구성

    ① 스크립트 다운「git」

    자동으로 Bind를 설치하여 DNS를 구성할 수 있도록 Jmutai 개발자 분께서 스크립트를 배포 하고 있습니다.

    [root@localhost ~]# git clone https://github.com/jmutai/scripts.git

    [root@localhost ~]# cd scripts/zimbra/  [경로 이동]

     

    ② 첫 번째 스크립트 실행「prereqs」

    [root@localhost zimbra]# ./zimbra_install_prereqs_rhel.sh

     

    Internet connectivity is required for packages installation...

    Press Enter key to continue: [Enter]

    ... Zimbra에 필요한 종속성 패키지 자동 설치 진행

     

    Input Zimbra Base Domain. E.g example.com : eztest.com [본인 사용 도메인 입력]

    Input Zimbra Mail Server hostname (first part of FQDN). E.g mail : mail [해당 값은 고정]

    Please insert your IP Address : 192.168.150.153 [서버 IP 입력]

    ...

    Input your timezone value, example Africa/Nairobi: Aaia/Seoul  [시간 설정]

     

    ③ 두 번째 스크립트 실행「Bind」

    [root@localhost zimbra]# ./zimbra_bind_setup_rhel.sh

     

    Internet connectivity is required for packages installation...

    Press key enter to continue [Enter]

    ... Bind 설치 및 존파일 생성 진행

     

    ※ 본인이 세팅한 도메인 정보와 동일하게 입력해야 합니다.

    Input Zimbra Base Domain. E.g example.com : eztest.com [본인 사용 도메인 입력]

    Input Zimbra Mail Server hostname (first part of FQDN). E.g mail: mail [해당 값은 고정]

    Input Zimbra Server IP Address  : 192.168.150.153 [서버 IP 입력]

     

    ④ 레코드 질의 테스트

    [root@localhost zimbra]# dig eztest.com mx

     

    ... 응답 질의가 아래와 같이 나와야 정상입니다.

    ;; ANSWER SECTION:

    eztest.com.             86400   IN      MX      0 mail.eztest.com.  [정상 패턴]

     

    ;; ADDITIONAL SECTION:

    mail.eztest.com.        86400   IN      A       192.168.150.153  [정상 패턴]

    ns1.eztest.com.         86400   IN      A       192.168.150.153


    STEP02 → Zimbra 오픈 소스 다운

    ① 진행하기 전 방화벽 일시적 다운 및 추가 필요한 도구 툴 설치

    [root@zmail ~]# systemctl stop firewalld

    [root@zmail ~]# dnf install wget tar perl net-tools nmap-ncat -y

     

    ② Zimbra [공식 다운로드 사이트] 접속 및 정보 입력

     

    ③ Zimbra 다운로드 및 압축 해제

    [root@localhost zimbra]# wget [링크 주소 복사]

    [root@localhost zimbra]# tar zxvf zcs-8.8.15_GA_4362.RHEL8_64.20220721104405.tgz  [압축 해제]

    [root@localhost zimbra]# mv zcs-8.8.15_GA_4362.RHEL8_64.20220721104405 zcs [폴더 이름 변경]

    [root@zmail ~]# cd zcs  [경로 이동]


    STEP03 → Zimbra 설치

    ① 설치 스크립트 실행

    [root@zmail zcs]# ./install.sh

     

    ② Zimbra 설치 진행

    Do you agree with the terms of the software license agreement? [N] Y  [라이선스 동의]

     

    Use Zimbra's package repository [Y] [Enter] [Zimbra 저장소 패키지 사용]

    ※ 원하는 패키지만 설치할 수 있지만 필자는 그냥 다 설치하겠습니다.

    Select the packages to install  [패키지 설치 선택]

    Install zimbra-ldap [Y] [Enter]

    Install zimbra-logger [Y] [Enter]

    Install zimbra-mta [Y] [Enter]

    Install zimbra-dnscache [Y] [Enter]

    Install zimbra-snmp [Y] [Enter]

    Install zimbra-store [Y] [Enter]

    Install zimbra-apache [Y] [Enter]

    Install zimbra-spell [Y] [Enter]

    Install zimbra-memcached [Y] [Enter]

    Install zimbra-proxy [Y] [Enter]

    Install zimbra-drive [Y] [Enter]

    Install zimbra-imapd (BETA - for evaluation only) [N] [Enter]

    Install zimbra-chat [Y] [Enter]

     

    Installing:

        zimbra-core

        zimbra-ldap

        zimbra-logger

        zimbra-mta

        zimbra-dnscache

        zimbra-snmp

        zimbra-store

        zimbra-apache

        zimbra-spell

        zimbra-memcached

        zimbra-proxy

        zimbra-drive

        zimbra-patch

        zimbra-mta-patch

        zimbra-proxy-patch

        zimbra-chat

     

    The system will be modified.  Continue? [N] Y [설치를 계속 진행]

    ※ 예상외 에러 메시지

    Installing repo packages (11):

       zimbra-core-components

       zimbra-ldap-components

       zimbra-mta-components

       zimbra-dnscache-components

       zimbra-snmp-components

       zimbra-jetty-distribution

       zimbra-store-components

       zimbra-apache-components

       zimbra-spell-components

       zimbra-memcached

       zimbra-proxy-components

          ...

    ERROR: Unable to install required packages

    Fix the issues with remote package installation and rerun the installer

    추측 : 설치 스크립트가 Zimbra 저장소(Repo)를 찾지 못해 설치 도중 중단, Rocky Linux에서만 발생하는 버그로 보입니다. 다행히 공식 커뮤니티 사이트에 동일한 증상으로 문의한 내용이 있어 다음과 같이 해결 방법을 안내

    ※ 조치 방법

    패키지 설치 초기화 후 Zimbra Repo 패키지만 직접 수동 설치

    [root@localhost zcs]# dnf clean packages

    196 파일이 삭제되었습니다

     

    [root@localhost zcs]# dnf -y install zimbra-core-components zimbra-ldap-components zimbra-mta-components zimbra-dnscache-components zimbra-snmp-components zimbra-jetty-distribution zimbra-store-components zimbra-apache-components zimbra-spell-components zimbra-memcached zimbra-proxy-components  [전체 한 줄]

    [root@localhost zcs]# ./install.sh [다시 설치 스크립트 실행]

     

    위 ②번 순서를 다시 진행, 아래와 같이 나온다면 이전 설치 시 생성된 /opt/zimbra 폴더를 삭제할 것인지에 물어보는데 삭제하지 않고 그냥 [엔터] 진행하시면 됩니다.

    The Zimbra Collaboration Server does not appear to be installed,

    yet there appears to be a ZCS directory structure in /opt/zimbra.

     

    Would you like to delete /opt/zimbra before installing? [N] [Enter]

     

    ③ 에러가 없었을 경우 계속 진행

    Running Post Installation Configuration:

    Operations logged to /tmp/zmsetup.20220921-072118.log

    Installing LDAP configuration database...done.

    Setting defaults...

     

    DNS ERROR resolving MX for mail.eztest.com

    It is suggested that the domain name have an MX record configured in DNS

    Change domain name? [Yes] Y  [도메인 이름 변경]

    Create domain: [mail.eztest.com] eztest.com  [도메인 생성]

    ※ Zimbra 도메인 생성으로 앞에 서브도메인이 붙지 말아야 합니다.

    Port conflicts detected! - Press Enter/Return key to continue [Enter]

     

    ※ 관리자 패스워드 설정 필요

    Address unconfigured (**) items  (? - help)

    Select, or 'r' for previous menu [r] 4

    Password for admin@eztest.com (min 6 characters): [WBpbbOdu] Mail123  [패스워드 입력]

    Select, or 'r' for previous menu [r] r  [마무리]

     

    *** CONFIGURATION COMPLETE - press 'a' to apply

    Select from menu, or press 'a' to apply config (? - help) a  [설정 적용]

    Save configuration data to a file? [Yes] Y  [설정 파일 저장]

    Save config in file: [/opt/zimbra/config.77881] [Enter]

    Saving config in /opt/zimbra/config.77881...done.

    The system will be modified - continue? [No] Y [시스템 수정, 설치 진행]

    Setting local config values...done.

    Initializing core config...Setting up CA...done.

    Moving /tmp/zmsetup.20220921-072118.log to /opt/zimbra/log [세팅 로그]

    Configuration complete - press return to exit [Enter] [최종 완료]

     

    ④ Zimbra 정상 구동 상태 확인

    [root@localhost zcs]# su - zimbra    [권한 변경]

    [zimbra@mail ~]$ zmcontrol status    [상태 확인]

     

    [zimbra@mail ~]$ zmcontrol -v    [설치 버전 확인]

    Release 8.8.15_GA_4362.RHEL8_64_20220721104405 RHEL8_64 FOSS edition, Patch 8.8.15_P33

     

    [zimbra@mail ~]$ zmcontrol stop    [전체 서비스 중지]

    [zimbra@mail ~]$ zmcontrol start    [전체 서비스 시작]


    STEP04 → 방화벽 재 시작 및 허용 포트 확인

     

    「Zimbra Collaboration 에서 사용되는 포트 참고」

    로컬 자체에서 처리하는 포트를 제외하고 외부 클라이언트에서 접근하기 위한 기본 포트를 허용해야 합니다.

    STEP01 단계에서 스크립트에 의해 Firewall 방화벽에 자동으로 값이 들어가 있습니다.

    [root@mail zones]# systemctl start firewalld    [방화벽 시작]

     

    [root@mail zones]# firewall-cmd --list-all    [전체 등록 확인]

    public (active)

      target: default

      icmp-block-inversion: no

      interfaces: ens32

      sources:

      services: cockpit dhcpv6-client http https imap imaps pop3 pop3s smtp smtps ssh

      ports: 7071/tcp 8443/tcp    [포트가 오픈되어 있는지 확인]

      protocols:

      forward: no

    포트(Port) 프로토콜(Protocol) Zimbra 서비스 설명
    25 SMTP MTA Postfix로 들어오는 메일
    587 SMTP(Submission) MTA TLS를 통한 메일 발송
    465 SMTPs MTA TLS를 통해 Postfix로 받는 메일
    80 HTTP Mailbox / Proxy 웹 메일 클라이언트
    (8.0에서는 기본적으로 비활성화)
    443 HTTPs Mailbox / Proxy
    (Web Mail Client)
    TLS를 통한 HTTP 연결
    8443 HTTPs Mailbox Backend HTTP 연결
    (프록시가 동일한 호스트에 구성된 경우)
    zimbraMailSSLB 바인드 주소
    7071 HTTPs Mailbox TLS를 통한 HTTP 관리 콘솔
    110 POP3 Mailbox / Proxy 메일 클라이언트 접속
    995 POP3s Mailbox / Proxy 메일 클라이언트 접속(TLS)
    143 IMAP Mailbox / Proxy 메일 클라이언트 접속
    993 IMAPs Mailbox / Proxy 메일 클라이언트 접속(TLS)

    STEP05 → Zimbra 웹 관리자 및 메일 접속 확인

     

    ※ 테스트 가상 서버 로컬 사설 IP이므로 본인 PC에서만 접속이 가능합니다.

    ① 웹 관리자 접속 URL ▷ https://서버IP:7071/zimbraAdmin

     

    ② 웹 메일 접속 URL ▷ https://서버IP


    마치며

    아마도 Zimbra 운영을 해봐야 하는 상황이 올 수가 있어서 어떤 솔루션인지 미리 파악하기 위해 패키지 설치를 먼저 연습을 해보았습니다. 설치 스크립트를 제공하고 있어서 오히려 설치하기는 좀 더 편하네요. 일단 맛만 보았기 때문에 저도 어떤 오픈 소스로 구성되어 실행이 되고 있는지 확인 중입니다. 다음 포스팅은 개인 도메인으로 실제 네임서버에 연결하여 운영 중인 가상 서버에 직접 테스트해 볼 예정입니다.

    Designed by JB FACTORY