๋๊ท๋ชจ Zimbra OSE ์ธํ๋ผ ๊ตฌ์ถ์ ์ฃผ์ ์์ ์ค ํ๋๋ ์ ์ ํ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋๋ค. ์๋น์ค์ ๋ด๊ฒฐํจ์ฑ์ ๋์ด๋ ๊ฒ ์ธ์๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์์ด๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋์ผํ ์๋น์ค ์๋ต์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ฒ ๊ฐ์ ์์ฒญ์ ์ฌ๋ถ๋ฐฐํ๋ ์ํํธ์จ์ด ๋ฐ ํ๋์จ์ด ์๋ฃจ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ์ค์๋ ๋จ์ํ ๋ค์ ์์ฒญ์ ๋ชฉ๋ก์ ๋ค์ ์๋ฒ๋ก ๋ณด๋ด๋ RoundRobin๊ณผ ๊ฐ์ ๋ค์ ์์์ ์ธ ๊ฒ์ด ์๊ณ HAProxy์ ๊ฐ์ ๋ ์ง๋ณด๋ ๊ฒ์ด ์์ต๋๋ค. ๋ง์ ์ค์ํ ์ด์ . HAProxy ๋ก๋ ๋ฐธ๋ฐ์์ Zimbra OSE๊ฐ ์ด๋ป๊ฒ ํจ๊ป ์๋ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ฐ๋ผ Zimbra ํ๋ก์ 1000๊ฐ, LDAP ๋ฐ LDAP ๋ณต์ ์๋ฒ 192.168.0.57๊ฐ, ๊ฐ๊ฐ 192.168.0.58๊ฐ์ ์ฌ์ํจ์ด ์๋ 192.168.0.77๊ฐ์ ๋ฉ์ผ ์ ์ฅ์ ๋ฐ 192.168.0.78๊ฐ์ MTA๊ฐ ์๋ Zimbra OSE ์ธํ๋ผ๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฉ์ผ ์๋ฒ๋ฅผ ๋ค๋ฃจ๊ณ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๊ท ํ์ ๋ง์ถฐ์ผ ํ๋ ์ธ ๊ฐ์ง ์ ํ์ ํธ๋ํฝ, ์ฆ ์น ํด๋ผ์ด์ธํธ ๋ค์ด๋ก๋๋ฅผ ์ํ HTTP์ ์ด๋ฉ์ผ ์ ์ก์ ์ํ POP ๋ฐ SMTP๊ฐ ์์ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ HTTP ํธ๋ํฝ์ IP ์ฃผ์๊ฐ XNUMX ๋ฐ XNUMX์ธ Zimbra ํ๋ก์ ์๋ฒ๋ก ์ด๋ํ๊ณ SMTP ํธ๋ํฝ์ IP ์ฃผ์๊ฐ XNUMX ๋ฐ XNUMX์ธ MTA ์๋ฒ๋ก ์ด๋ํฉ๋๋ค.
์ด๋ฏธ ์ธ๊ธํ๋ฏ์ด ์๋ฒ ๊ฐ์ ์์ฒญ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๊ธฐ ์ํด Ubuntu 18.04๋ฅผ ์คํํ๋ Zimbra ์ธํ๋ผ์ ์ ๋ ฅ ๋ ธ๋์์ ์คํ๋๋ HAProxy ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ์ด ์ด์ ์ฒด์ ์ haproxy ์ค์น๋ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. sudo apt-get ์ค์น haproxy. ๊ทธ ํ ํ์ผ์์ ํ์ํฉ๋๋ค. /etc/default/ํํ๋ก์ ๋งค๊ฐ๋ณ์ ๋ณ๊ฒฝ ํ์ฑํ๋จ=0 ์ ํ์ฑํ๋จ=1. ์ด์ haproxy๊ฐ ์๋ํ๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ ๋ ฅํ์ญ์์ค. ์๋น์ค haproxy. ์ด ์๋น์ค๊ฐ ์คํ ์ค์ธ ๊ฒฝ์ฐ ๋ช ๋ น ์ถ๋ ฅ์์ โโ์ง์์ง๋๋ค.
HAProxy์ ์ฃผ์ ๋จ์ ์ค ํ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ์ IP ์ฃผ์๋ฅผ ์ ์กํ์ง ์๊ณ ์์ฒด IP ์ฃผ์๋ก ๋์ฒดํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ก ์ธํด ๊ณต๊ฒฉ์๊ฐ ๋ณด๋ธ ํธ์ง๋ฅผ ๋ธ๋๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ธฐ ์ํด IP ์ฃผ์๋ก ์๋ณํ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฌธ์ ๋ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ํ์ผ์ ํธ์งํด์ผ ํฉ๋๋ค. /opt/zimbra/common/conf/master.cf.in Postfix ์๋ฒ์์ ๋ค์ ํ์ ์ถ๊ฐํ์ญ์์ค.
26 inet n - n - 1 postscreen
-o postscreen_upstream_proxy_protocol=haproxy
466 inet n - n - - smtpd
%%uncomment SERVICE:opendkim%% -o content_filter=scan:[%%zimbraLocalBindAddress%%]:10030
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=
-o smtpd_data_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o syslog_name=postfix/smtps
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_upstream_proxy_protocol=haproxy
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_filter=[%%zimbraLocalBindAddress%%]:10027
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_options=speed_adjust
588 inet n - n - - smtpd
%%uncomment SERVICE:opendkim%% -o content_filter=scan:[%%zimbraLocalBindAddress%%]:10030
-o smtpd_etrn_restrictions=reject
-o smtpd_sasl_auth_enable=%%zimbraMtaSaslAuthEnable%%
-o smtpd_tls_security_level=%%zimbraMtaTlsSecurityLevel%%
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_data_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o syslog_name=postfix/submission
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_upstream_proxy_protocol=haproxy
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_filter=[%%zimbraLocalBindAddress%%]:10027
%%uncomment LOCAL:postjournal_enabled%% -o smtpd_proxy_options=speed_adjust
์ด๋ก ์ธํด HAProxy์์ ๋ค์ด์ค๋ ํธ๋ํฝ์ ์์ ํ ํฌํธ 26, 466 ๋ฐ 588์ ์ด ๊ฒ์ ๋๋ค. ํ์ผ์ ์ ์ฅํ ํ zmmtactl restart ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์๋ฒ์์ Postfix๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
๊ทธ๋ฐ ๋ค์ HAProxy ๊ตฌ์ฑ์ ์์ํ๊ฒ ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋จผ์ ์ค์ ํ์ผ์ ๋ฐฑ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ญ๋๋ค. cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak. ๊ทธ๋ฐ ๋ค์ ํ ์คํธ ํธ์ง๊ธฐ์์ ์์ค ํ์ผ์ ์ฝ๋๋ค. /etc/haproxy/haproxy.cfg ํ์ํ ์ค์ ์ ์ ์ฐจ์ ์ผ๋ก ์ถ๊ฐํ๊ธฐ ์์ํ์ญ์์ค. ์ฒซ ๋ฒ์งธ ๋ธ๋ก์ ๋ก๊ทธ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋ฒ๋ฅผ ์ถ๊ฐํ๊ณ , ํ์ฉ๋๋ ์ต๋ ๋์ ์ฐ๊ฒฐ ์๋ฅผ ์ค์ ํ๊ณ , ์คํ ๊ฐ๋ฅํ ํ๋ก์ธ์ค๊ฐ ์ํ ์ฌ์ฉ์์ ์ด๋ฆ๊ณผ ๊ทธ๋ฃน์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค.
global
user daemon
group daemon
daemon
log 127.0.0.1 daemon
maxconn 5000
chroot /var/lib/haproxy
๋์ ์ ์์ 5000๋ช ์ด๋ผ๋ ์์น๊ฐ ๋์จ ๋ฐ๋ ์ด์ ๊ฐ ์๋ค. ์ฐ๋ฆฌ ์ธํ๋ผ์๋ 4000๊ฐ์ ์ฌ์ํจ์ด ์์ผ๋ฏ๋ก ๋ชจ๋ ์ฌ์ํจ์ด ๋์์ ์์ ๋ฉ์ผ๋ก ์ด๋ํ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋ํ ๊ฐ์๊ฐ ๋์ด๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ฝ๊ฐ์ ์ฌ๋ฐฑ์ ๋จ๊ฒจ ๋ ํ์๊ฐ ์์ต๋๋ค.
์ด์ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ๋ธ๋ก์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
defaults
timeout client 1m
log global
mode tcp
timeout server 1m
timeout connect 5s
์ด ๋ธ๋ก์ ์ฐ๊ฒฐ์ด ๋ง๋ฃ๋ ๋ ์ฐ๊ฒฐ์ ๋ซ๊ธฐ ์ํ ์ต๋ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ๋๊ธฐ ์๊ฐ์ ์ค์ ํ๊ณ HAProxy ์๋ ๋ชจ๋๋ ์ค์ ํฉ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๋ก๋ ๋ฐธ๋ฐ์๋ TCP ๋ชจ๋์์ ์๋ํฉ๋๋ค. ์ฆ, ๋ด์ฉ์ ๋ถ์ํ์ง ์๊ณ ๋จ์ํ TCP ํจํท์ ์ ์กํฉ๋๋ค.
๋ค์์ผ๋ก ๋ค์ํ ํฌํธ์ ์ฐ๊ฒฐ์ ๋ํ ๊ท์น์ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด SMTP ์ฐ๊ฒฐ ๋ฐ ๋ฉ์ผ ์ ์ก์ ํฌํธ 25๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ธํ๋ผ์ ์๋ MTA๋ก ์ฐ๊ฒฐ์ ์ ๋ฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฐ๊ฒฐ์ด ํฌํธ 80์ ์๋ ๊ฒฝ์ฐ Zimbra ํ๋ก์๋ก ์ ๋ฌํด์ผ ํ๋ http ์์ฒญ์ ๋๋ค.
ํฌํธ 25์ ๋ํ ๊ท์น:
frontend smtp-25
bind *:27
default_backend backend-smtp-25
backend backend-smtp-25
server mta1 192.168.0.77:26 send-proxy
server mta2 192.168.0.78:26 send-proxy
ํฌํธ 465์ ๋ํ ๊ท์น:
frontend smtp-465
bind *:467
default_backend backend-smtp-465
backend backend-smtp-465
server mta1 192.168.0.77:466 send-proxy
server mta2 192.168.0.78:466 send-proxy
ํฌํธ 587์ ๋ํ ๊ท์น:
frontend smtp-587
bind *:589
default_backend backend-smtp-587
backend backend-smtp-587
server mail1 192.168.0.77:588 send-proxy
server mail2 192.168.0.78:588 send-proxy
ํฌํธ 80์ ๋ํ ๊ท์น:
frontend http-80
bind *:80
default_backend http-80
backend http-80
mode tcp
server zproxy1 192.168.0.57:80 check
server zproxy2 192.168.0.58:80 check
ํฌํธ 443์ ๋ํ ๊ท์น:
frontend https
bind *:443
default_backend https-443
backend https-443
mode tcp
server zproxy1 192.168.0.57:80 check
server zproxy2 192.168.0.58:80 check
TCP ํจํท์ MTA๋ก ์ ๋ฌํ๋ ๊ท์น์์ ํด๋น ์ฃผ์ ์์ ๋งค๊ฐ๋ณ์๊ฐ ์์์ ์ ์ํ์ญ์์ค. ์ก์ ํ๋ก์. ์ด์ ์ ๋ณ๊ฒฝํ Postfix ์ค์ ์ ๋ฐ๋ผ ๋ฐ์ ์์ ์๋ IP ์ฃผ์๋ TCP ํจํท๊ณผ ํจ๊ป ์ ์ก๋๋๋ก ํ๊ธฐ ์ํด ํ์ํฉ๋๋ค.
์ด์ HAProxy์ ํ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋์์ผ๋ฏ๋ก ๋ค์ ๋ช ๋ น์ผ๋ก ์๋น์ค๋ฅผ ๋ค์ ์์ํ ์ ์์ต๋๋ค. ์๋น์ค haproxy ์ฌ์์ ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ธฐ ์์ํ์ญ์์ค.
Zextras Suite์ ๊ด๋ จ๋ ๋ชจ๋ ์ง๋ฌธ์ Zextras Ekaterina Triandafilidi ๋ํ์๊ฒ ์ด๋ฉ์ผ๋ก ๋ฌธ์ํ ์ ์์ต๋๋ค. [์ด๋ฉ์ผ ๋ณดํธ]
์ถ์ฒ : habr.com