Mail Gateway 的作用是在電郵到達電郵伺服器前, 預先過濾或處理不當電郵 (例如帶有病毒的郵件及垃圾電郵), 再將電郵轉送到後端的電郵伺服器。其他人只會從 MX record 知道 Mail Gateway 的位置, 但不會知道電郵伺服器的位置。
系統管理員架設起 Mail Gateway 後, 只要將域名的 MX record 指向 Mail Gateway 的 IP 便可以, 對其他使用者幾乎不會察覺有轉換。而且後端如果有多於一台電郵伺服器, 可以按域名將電郵轉送到指定的電郵伺服器。
要架設 Mail Gateway 不會太難, 只是如果 Mail Gateway 需要具備過濾病毒及垃圾郵件的功能, 需要多點步驟而已。以下是在 CentOS 8 用 Postfix 架設 Mail Gateway, 以及安裝 Mail Scanner, ClamAV 及 Spamassassin 過濾垃圾電郵及病毒的方法。
安裝及設定 Postfix
用 dnf 或 yum 安裝 Postfix:
Postfix 的設定檔在 /etc/postfix/main.cf, 開啟進行幾個設定:
inet_interfaces
1 2 3 4 5 |
# 設定 inet_interfaces 成為 all, 確定其他幾行 inet_interfaces 註釋掉 inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost |
relay_domains
設定要轉寄郵件的域名, 如果有多於一個域名, 可以用空格或逗號分隔
1 |
relay_domains = domain1.com, domain2.com |
transport_maps
1 |
transport_maps = hash:/etc/postfix/transport |
設定好上面的幾個選項後, 儲存檔案。根據地上面的例子, 加入 domain1.com 及 domain2.com 到檔案 /etc/postfix/transport:
1 2 |
domain1.com smtp:[mail-server-ip] domain2.com smtp:[mail-server-ip] |
上面的 “mail-server-ip” 改成後端電郵伺服器的 IP, 然後執行以下指令執建立 transport.db:
設定 Firewalld 開啟 port 25:
# firewall-cmd –reload
最後重新啟動 Postfix 及開機自動啟動:
# systemctl enable postfix
這時 Mail Gateway 已經可以轉送郵件。
現在開始安裝 Mail Scanner, ClamAV 及 Spamassassin, 對郵件進行病毒掃瞄及垃圾電郵過濾。
安裝 ClamAV
先開啟 EPEL:
安裝 ClamAV:
安裝好後, 下載最新病毒定義檔:
然後執行以下指令設定 ClamAV:
1 2 3 |
# sed -i 's/#LocalSocket \/run/LocalSocket \/run/g' /etc/clamd.d/scan.conf # sed -i 's/scanner (%i) daemon/scanner daemon/g' /usr/lib/systemd/system/clamd@.service # sed -i 's/\/etc\/clamd.d\/%i.conf/\/etc\/clamd.d\/scan.conf/g' /usr/lib/systemd/system/clamd@.service |
然後啟動 ClamAV:
# systemctl start clamd@scan
執行 crontab 設定自動更新病毒定義檔:
加入以下一行:
1 |
0 * * * * /usr/bin/freshclam –quiet |
安裝 Spamassassin
執行以下指令安裝 Spamassassin:
更新 Spamassassin 的規則:
啟動 Spamassassin 及設定開機自動啟動
# systemctl start spamassassin
安裝 MailScanner
在安裝 MailScanner 前, 需要先安裝必以下套件:
現在用 git 下載 MailScanner, 目前最新版是 5.3.3-1:
# git clone https://github.com/MailScanner/v5.git
# cd v5
目錄下有幾個可執行檔, 分別是:
Build.all
Build.debian
Build.nix
Build.rhel
Build.suse
根據安裝的環境執行相關 Build 檔案, 例如 RHEL 及 CentOS 執行 Build.rhel:
然後在 /root/ 目錄下會產生一個 msbuilds 目錄, 裡面有一個 MailScanner-5.3.3-1.rhel.noarch.rpm 檔案, 安裝這個 rpm 檔:
# /usr/sbin/ms-configure
在畫面按照自己的需要回答問題, 除了 MTA 需要選擇 Postfix 外, 其他選用預設值即可。
之後 MailScanner 會進行安裝, 這個過程需要點時間, 讓它自動執行。
程式執行完成後, 現在設定 Postfix 配合 MailScanner:
# chown postfix /var/spool/MailScanner/spamassassin
# chown postfix.postfix /var/spool/MailScanner/incoming
# chown postfix.postfix /var/spool/MailScanner/quarantine
開啟 MailScanner 的設定檔 /etc/MailScanner/MailScnner.conf
修改以下幾個項目, 改成這樣:
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
然後開啟 Postfix 的設定檔 /etc/postfix/main.cf:
找到 header_checks = regexp:/etc/postfix/header_checks 這一行, 將最前面的 “#” 刪除.
開啟檔案 /etc/postfix/header_checks
加入以下內容:
以上動作是為了讓 Postfix 把收到的郵件先儲存在某個目錄, 待 MailScanner 進行掃瞄。
如果 ClamAV 及 Spamassassin 是用 yum 或 dnf 安裝, MailScanner 預設會找到它們。
最後開啟 /etc/MailScanner/defaults:
將 run_mailscanner 改成 1:
run_mailscanner=1
最後修改 /etc/MailScanner/defaults 設定run_mailscanner=1 才可以將服務啟動
run_mailscanner=1
執行 systemctl 啟動及開機自動執行 MailScanner:
# systemctl start mailscanner
要使用 Mail Gateway, 現在只要將域名的 MX record 指向 Mail Gateway, 等 DNS update 生效即可。當郵件透過 Mail Gateway 轉送到 Mail Server 後, 郵件最後會加入以下字串:
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
如果看到便安裝成功了。