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-26]

    Zimbra Collaboration Open Source 버전 : 8.8.15

    『Zimbra 문서 참고』

     

    물리 서버 또는 클라우드(가상 서버) 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    [빠른 테스트를 위해 비활성화, 서버 재시작 필요]

     

    □ [root@localhost ~]# /opt/zimbra/    [설치 경로]

    ※ 만약 실제 물리서버를 운영한다면 /opt 마운트를 별도로 구성하는게 좋습니다.

     

    ※ Zimbra는 설치 스크립트를 제공을 합니다. 소프트웨어에 필요한 모든 오픈 소스들을 자동으로 설치합니다. 다만, 설치 과정 중 DNS 네임서버를 체크하는 부분이 있는데 도메인이 없거나 네임서버의 A/MX 레코드 값이 세팅이 되어 있지 않다면 설치 도중 중단합니다. 여기서는 실제 도메인을 구입하여 세팅하는 방법을 알아보도록 하겠습니다.


    STEP01 → 호스트 파일 및 DNS(네임서버) A/MX 레코드 추가하기

    ※ 필자는 테스트하기 위해 별도의 개인 도메인을 구매하였습니다. 도메인을 판매하는 업체는 다양하므로 원하는 업체에서 도메인을 구입 후 네임서버 DNS 관리 툴에서 세팅을 하시면 됩니다.

     

    ① DNS(네임서버) A/MX 레코드 추가하기 [예시]

    타입 호스트 값/위치 TTL 우선 순위
    A zmail 물리서버 또는 클라우드(가상서버) 공인 IP 입력 600  
    MX @ zmail.mydomain. 600 10

    서브 도메인 A레코드 호스트는 원하시는 것으로 하셔도 됩니다. 예시.. mail, webmail 등 저는 구분하기 편하게 Zimbra 앞글자를 따서 zmail이라는 호스트 이름으로 등록하였습니다. 단 한번 정하시면 이후에 세팅은 모두 동일하게 해 주시기 바랍니다.

     

    ② 서버 호스트네임 및 호스트 파일 수정

    [root@zmail ~]# hostnamectl set-hostname zmail.foxydog.pe.kr    [호스트네임 수정]
    [root@zmail ~]# hostname    [변경 확인]
    zmail.foxydog.pe.kr

     

    [root@zmail ~]# vi /etc/hosts    [호스트 파일 수정]

    119.xxx.xxx.xxx zmail.foxydog.pe.kr zmail    [본인 호스트 및 공인 IP 입력 추가]

     

    ③ DNS(호스트) 연결 테스트

    [root@zmail ~]# host -t mx foxydog.pe.kr    [MX 레코드 테스트]

    foxydog.pe.kr mail is handled by 10 zmail.foxydog.pe.kr.    [정상 질의]

    [root@zmail ~]# host -t a zmail.foxydog.pe.kr    [A레코드 테스트]

    zmail.foxydog.pe.kr has address 119.xxx.xxx.xxx    [정상 질의]

    ※만약 실패하면 아래와 같이 연결 실패가 뜹니다.(예시)

    DNS세팅을 잘못하였거나 적용 후 전파시간이 있을 수 있으므로 다시 한번 DNS툴 세팅을 확인합니다.

    [root@zmail ~]# host -t a mail.foxydog.pe.kr
    Host mail.foxydog.pe.kr not found: 3(NXDOMAIN)


    STEP02 → Zimbra 오픈 소스 다운

    ※ 여기서부터는 기존 테스트랑 비슷합니다.

     

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

    [root@zmail ~]# systemctl stop firewalld

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

     

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

     

    ※ 2023-08-21 확인 기준으로 홈페이지 개편 및 오픈소스 솔루션은 더이상 지원하지 않는 것으로 보입니다. 현재는 [공식 다운로드 사이트] 링크주소를 확인해주시면 됩니다.

    오픈 소스로 제공하되 짐브라 네트워크 에디션으로 콜라보(통합)한것으로 보이며, 일부 기능만 유료로 사용할 경우 라이선스 키가 필요할 뿐 일반적인 메일 사용에는 문제가 없을 것으로 보입니다.

     

    ③ 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 패키지만 직접 수동 설치,

    테스트 때랑 똑같은 거 봐서는 Rocky Linux 설치 패키지에만 버그가 있는 게 맞는 것 같네요.

    [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.20220926-003410.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: [zmail.foxydog.pe.kr] foxydog.pe.kr  [도메인 생성]

    ※ 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@foxydog.pe.kr (min 6 characters): [sjExTRKsa] 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.33703] [Enter]

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

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

    Setting local config values...done.

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

    Notify Zimbra of your installation? [Yes] [Enter]

    Moving /tmp/zmsetup.20220926-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에서 사용되는 포트 참고」

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

    여기서는 실서버이므로 사용할 포트를 직접 추가해야 합니다.

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

     

    [root@zmail zones]# firewall-cmd --permanent --add-port=25/tcp --add-port=587/tcp --add-port=465/tcp --add-port=80/tcp --add-port=443/tcp --add-port=8443/tcp --add-port=7071/tcp --add-port=110/tcp --add-port=995/tcp --add-port=143/tcp --add-port=993/tcp    [Zimbra 사용 포트 허용, 전체 한 줄]

    success

     

    [root@zmail zones]# firewall-cmd --reload    [적용]

    success

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

    public (active)

      target: default

      icmp-block-inversion: no

      interfaces: ens192

      sources:

      services: cockpit dhcpv6-client

      ports: 25/tcp 587/tcp 465/tcp 80/tcp 443/tcp 8443/tcp 7071/tcp 110/tcp 995/tcp 143/tcp 993/tcp
      [포트 오픈 확인]

      protocols:
      forward: no
      masquerade: 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 웹 관리자 및 메일 접속 확인

     

    ※ 필자는 실서버 및 A레코드가 부여되어 호스트로도 접속이 가능합니다.

    ① 웹 관리자 접속 URLhttps://서버IP(호스트이름):7071/zimbraAdmin

    ※ 만약 관리자 패스워드를 잊어버렸다면? 서버에서 명령어 진행

    [root@zmail zcs]# su - zimbra
    [zimbra@zmail ~]$ zmprov sp admin@mydomain mypassword    [관리자 패스워드 변경]

     

    ② 계정 생성

    계정 생성은 메인 화면에 보이는 3 계정 추가에서 해도 되지만, [관리] ▷ [계정] ▷ [톱니바퀴] ▶ [새로 만들기]에서 추가하면 됩니다.

     

    ③ 웹 메일 접속 URL https://서버IP(호스트이름)


    STEP06 → Zimbra 수발신 테스트 및 POP3/IMAP 연결 테스트

     

    ① 수신 발신 테스트

    국내 네이버(Naver)와 해외 구글(Gmail) 2곳에 발송해보았는데 네이버는 바로 수신을 받았습니다. 회신도 정상적으로 되네요. Gmail의 경우는 아직 SPF, DKIM, DMARK 등이 등록되어 있지 않아서 메일을 차단해버리네요. 외부로 발송 시도는 되었으니 메일서버 구성에는 문제가 없다는 뜻입니다.

     

    ② 클라이언트(아웃룩) POP3/IMAP 연결 테스트

    POP3/IAMP 기본 포트인 110/143 포트로는 연결해보니 거부를 하는 것으로 보아 Zimbra 솔루션 기본 구성에서는 보안때문에 막은 것으로 보입니다. 아래와 같이 TLS/SSL 연결로 995/993포트로는 정상적으로 연결되는게 확인 되었습니다. SMTP는 기본포트인 25말고 TLS/SSL 465포트로 연결하시면 됩니다.


    마치며

    테스트 서버에서 했던 것과 동일하게 진행해보니 실서버 구축에도 큰 문제없이 설치가 잘 되었습니다. 역시 솔루션 설치 스크립트를 제공하고 있으니, RoundCube때처럼 모든 오픈소스를 직접 설치해야 하는 불편함이 없어서 좋습니다. 또한 상용 솔루션과 맞먹는 기능을 오픈 소스로도 제공을 하고 있으니 물리서버 및 클라우드(가상서버)만 준비하면 솔루션 비용을 대폭 줄일 수 있을 것으로 생각이 됩니다. 다음에는 서버에 인증서를 적용 테스트를 해보도록 하겠습니다. 인증서까지 적용 테스트 완료가 되면 운영 관련 포스팅을 계속 진행하도록 하겠습니다.

    Designed by JB FACTORY