Postfix + MailScanner 架設過濾病毒及垃圾 Mail Gateway

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:

# dnf install postfix

Postfix 的設定檔在 /etc/postfix/main.cf, 開啟進行幾個設定:

# vi /etc/postfix/main.cf

inet_interfaces

relay_domains
設定要轉寄郵件的域名, 如果有多於一個域名, 可以用空格或逗號分隔

transport_maps

設定好上面的幾個選項後, 儲存檔案。根據地上面的例子, 加入 domain1.com 及 domain2.com 到檔案 /etc/postfix/transport:

上面的 “mail-server-ip” 改成後端電郵伺服器的 IP, 然後執行以下指令執建立 transport.db:

# postmap /etc/postfix/transport

設定 Firewalld 開啟 port 25:

# firewall-cmd –add-service=smtp –permanent
# firewall-cmd –reload

最後重新啟動 Postfix 及開機自動啟動:

# systemctl start postfix
# systemctl enable postfix

這時 Mail Gateway 已經可以轉送郵件。

現在開始安裝 Mail Scanner, ClamAV 及 Spamassassin, 對郵件進行病毒掃瞄及垃圾電郵過濾。

安裝 ClamAV

先開啟 EPEL:

# dnf –enablerepo=extras install epel-release

安裝 ClamAV:

# dnf install clamav clamav-update clamd -y

安裝好後, 下載最新病毒定義檔:

# freshclam

然後執行以下指令設定 ClamAV:

然後啟動 ClamAV:

# systemctl enable clamd@.service
# systemctl start clamd@scan

執行 crontab 設定自動更新病毒定義檔:

# crontab -e

加入以下一行:

安裝 Spamassassin

執行以下指令安裝 Spamassassin:

# dnf install spamassassin

更新 Spamassassin 的規則:

# sa-update

啟動 Spamassassin 及設定開機自動啟動

# systemctl enable spamassassin
# systemctl start spamassassin

安裝 MailScanner

在安裝 MailScanner 前, 需要先安裝必以下套件:


# dnf install perl unzip gcc patch rpm-build cpp perl-DBI perl-MIME-tools perl-DBD-SQLite binutils glibc-devel perl-Filesys-Df zlib zlib-devel automake perl-devel git

現在用 git 下載 MailScanner, 目前最新版是 5.3.3-1:

# cd /usr/local/src/
# 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:

# ./Build.rhel

然後在 /root/ 目錄下會產生一個 msbuilds 目錄, 裡面有一個 MailScanner-5.3.3-1.rhel.noarch.rpm 檔案, 安裝這個 rpm 檔:

# rpm -ivh /root/msbuilds/MailScanner-5.3.3-1.rhel.noarch.rpm
# /usr/sbin/ms-configure

在畫面按照自己的需要回答問題, 除了 MTA 需要選擇 Postfix 外, 其他選用預設值即可。

之後 MailScanner 會進行安裝, 這個過程需要點時間, 讓它自動執行。

程式執行完成後, 現在設定 Postfix 配合 MailScanner:

# mkdir /var/spool/MailScanner/spamassassin
# 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

# vi /etc/MailScanner/MailScnner.conf

修改以下幾個項目, 改成這樣:

Run As User = postfix
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:

# vi /etc/postfix/main.cf

找到 header_checks = regexp:/etc/postfix/header_checks 這一行, 將最前面的 “#” 刪除.

開啟檔案 /etc/postfix/header_checks

# vi /etc/postfix/header_checks

加入以下內容:

/^Received:/ HOLD

以上動作是為了讓 Postfix 把收到的郵件先儲存在某個目錄, 待 MailScanner 進行掃瞄。

如果 ClamAV 及 Spamassassin 是用 yum 或 dnf 安裝, MailScanner 預設會找到它們。

最後開啟 /etc/MailScanner/defaults:

# vi /etc/MailScanner/defaults

將 run_mailscanner 改成 1:

run_mailscanner=1

最後修改 /etc/MailScanner/defaults 設定run_mailscanner=1 才可以將服務啟動

run_mailscanner=1

執行 systemctl 啟動及開機自動執行 MailScanner:

# systemctl enable 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.

如果看到便安裝成功了。



你可能感興趣的內容:

Leave a Reply