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.
如果看到便安装成功了。