如何在 CentOS 7 64 位上安装 ASSP v.2
本指南展示了在最小 CentOS 7 安装上安装 ASSP 的步骤。它不包括 CentOS 的安装和邮件服务器的设置。 CentOS-7.0-1406-x86_64-Minimal.iso 映像适用于此设置。如果您有 DVD 映像,请选择最小安装并继续安装。
重启后
禁用 NetworkManager 和 FirewallD 并启用网络服务
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl disable firewalld
systemctl stop firewalld
systemctl enable network
systemctl start network
编辑网卡配置(我们假设系统上安装了一张网卡)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
将 IPADDR0=a.b.c.d
替换为 IPADDR=a.b.c.d
将 PREFIX0=xx
替换为 PREFIX=xx
将 GATEWAY0=aa.bb.cc.dd
替换为 GATEWAY=aa.bb.cc.dd
更新操作系统
yum -y update
reboot
yum install wget perl
从 epel、repoforge、remi 存储库获取 Centos 的额外软件:
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
安装存储库
yum localinstall rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm epel-release-7-5.noarch.rpm remi-release-7.rpm
安装shorewall防火墙(iptables管理器):
yum install shorewall
让我们编辑我们的防火墙。这些选项和示例文件是使其工作的最低要求。需要进一步配置。有关 shorewall 及其配置方法的更多信息,请访问 http://shorewall.net
一、接口文件:
vi /etc/shorewall/interfaces
net eth0
策略文件:
vi /etc/shorewall/policy
$FW net ACCEPT
net all DROP
all all REJECT
规则文件:
vi /etc/shorewall/rules
在 ?SECTION NEW 下添加以下规则:
# Enable access from the internet to ssh, smtp and assp web interface services
# For security reasonsYou might want to limit ssh access to a single or a class of
# trusted IP's
ACCEPT net $FW tcp 22,25,55555
# Enable ping (1 request per second with a burst of one)
ACCEPT net $FW icmp 8 - - 1/sec:1
shorewall.conf 文件:
# vi /etc/shorewall/shorewall.conf
将 STARTUP_ENABLED=No 替换为 STARTUP_ENABLED=Yes
最后是区域文件:
vi /etc/shorewall/zones
fw firewall
net ipv4
启用防火墙
systemctl enable shorewall
systemctl start shorewall
使用 shorewall status 命令检查防火墙是否正在运行:
shorewall status | grep running
Shorewall is running
安装 ASSP2 和模块所需的软件:
yum install gcc openssl-devel perl-Net-SMTPS perl-IO-Compress-Zlib perl-Text-Glob perl-Number-Compare perl-Convert-TNEF perl-Digest-SHA1 perl-Email-MIME perl-Email-Send perl-Email-Valid perl-File-ReadBackwards perl-MIME-Types perl-Mail-DKIM perl-Mail-SPF perl-Net-CIDR-Lite perl-Net-DNS perl-Net-IP-Match-Regexp perl-Net-SMTP-SSL perl-Time-HiRes perl-Crypt-CBC perl-IO-Socket-SSL perl-Sys-MemInfo perl-Time-HiRes perl-Tie-DBI perl-LWP-Authen-Negotiate clamd perl-Net-IP perl-Text-Unidecode perl-Schedule-Cron-Events perl-BerkeleyDB perl-LDAP perl-CPAN perl-local-lib perl-CPAN-Meta-Requirements unzip deltarpm net-tools policycoreutils-python
可选更新 CPAN
perl -MCPAN -e shell
接受默认选项并继续升级:
cpan> install CPAN
cpan> reload cpan
在启动时启用 ClamAV
systemctl 启用 clamd
clamd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig clamd on
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
编辑 /etc/clamd.conf:
vi /etc/clamd.conf
用以下值替换您的值:
LogFileMaxSize 2m
LogRotate yes
LocalSocketGroup clamav
LocalSocket /var/clamav/clamd.sock
# TCPSocket 3310
# TCPAddr 127.0.0.1
PidFile /var/clamav/clamd.pid
TemporaryDirectory /var/tmp
IdleTimeout 60
编辑 /etc/freshclam.conf:
vi /etc/freshclam.conf
添加或取消注释 LogRotate yes
启动 ClamAV:
systemctl start clamd
为 ASSP 安装 CPAN 模块:
cpan -i Unicode::GCString Sys::CpuAffinity Thread::State Thread::Queue Schedule::Cron File::Scan::ClamAV Sys::Syslog IO::Socket::INET6 Lingua::Stem::Snowball Lingua::Identify Archive::Extract Archive::Zip Archive::Tar Mail::SRS Net::SenderBase Tie::DBI Crypt::OpenSSL::AES Regexp::Optimizer Schedule::Cron::Events Mail::SPF::Query File::Scan::ClamAV
按 Enter 键回答任何问题(这将是 [ ] 括号内的默认选项)
可能 Mail::SPF::Query 和 File::Scan::ClamAV 不会在没有强制的情况下安装。在这种情况下:
perl -MCPAN -e shell
cpan> force install Mail::SPF::Query
cpan> force install File::Scan::ClamAV
我会建议一个一个地安装 perl 模块以捕获潜在的错误和/或缺少的依赖项:
perl -MCPAN -e shell
cpan> install
从 http://sourceforge.net/projects/assp/ 下载 ASSP v.2 到你的服务器上并解压:
unzip ASSP__Install.zip
mv -f assp/ /var/db/assp/
cd /var/db/assp
第一次启动assp:
perl assp.pl
关于 perl 模块的任何错误都将报告到 /var/db/assp/moduleLoadErrors.txt。任何其他错误都将打印在控制台上(assp 将保留在前台)。
通过登录到 Web 界面开始配置 ASSP:
用户:root
密码:nospam4me
默认情况下,assp 绑定到每个 ipv4 地址 (0.0.0.0:25) 上的端口 25/tcp。这将与本地电子邮件服务器(postfix、exim、sendmail、opensmtpd)产生冲突。如果 assp 在前台运行,此信息将打印到 assp 日志文件 (/var/db/assp/logs/maillog.txt) 和控制台上:
[init] Error: couldn't create server socket on port '25' -- maybe another service is running or I'm not root (uid=0)? -- or a wrong IP address is defined? -- Address already in use
在这种情况下,我们将设置 postfix,并且必须将其默认端口 (25/tcp) 更改为 125/tcp 并仅绑定到本地主机:
vi /etc/postfix/master.cf
代替
smtp inet n - n - - smtpd
和
localhost:125 inet n - n - - smtpd
让我们重新启动后缀:
systemctl restart postfix
Job for postfix.service failed. See 'systemctl status postfix.service' and 'journalctl -xn' for details.
systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
Active: failed (Result: exit-code) since Sun 2014-12-21 15:34:11 ICT; 6s ago
Process: 30186 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
Process: 30200 ExecStart=/usr/sbin/postfix start (code=exited, status=1/FAILURE)
Process: 30198 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 30195 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
Main PID: 29346 (code=killed, signal=TERM)
systemd[1]: Starting Postfix Mail Transport Agent...
postfix/master[30272]: fatal: bind 127.0.0.1 port 125: Permission denied
postfix/master[30271]: fatal: daemon initialization failure
systemd[1]: postfix.service: control process exited, code=exited status=1
systemd[1]: Failed to start Postfix Mail Transport Agent.
systemd[1]: Unit postfix.service entered failed state.
上面的错误是因为 selinux 不允许 postfix 绑定到 25、465 和 587 以外的其他端口
要使 postfix 绑定到端口 125,请禁用 selinux(不推荐)或将另一个端口添加到 selinux 策略以供 postfix 绑定:
semanage port -a 125 -t smtp_port_t -p tcp
并检查端口 125 是否在允许的端口列表中:
semanage port -l | grep smtp_port_t
smtp_port_t tcp 125, 25, 465, 587
现在我们可以重新启动 postfix 而不会出现错误:
systemctl restart postfix
另一种方法是在本地主机上启用 smtp,并在 assp web config 中分别在服务器的公共/私有 ip 地址上启用端口 25。这样就没有涉及 selinux 配置。
在 /etc/postfix/master.cf 中:
vi /etc/postfix/master.cf
代替
smtp inet n - n - - smtpd
和
localhost:smtp inet n - n - - smtpd
在 assp web config Network Setup->SMTP Listen Port 从 25 更改为
使用 Web 界面上的应用按钮应用更改。
要使 assp 在启动时启动,请在 assp web 配置中转到服务器设置,然后在作为守护程序运行 ASSP 下选择是 - 外部控制
然后我们创建 systemd assp 脚本:
vi /etc/systemd/system/assp.service
[Unit]
Description=AntiSpam SMTP Proxy
After=network.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/perl /var/db/assp/assp.pl /var/db/assp/
ExecStop=/usr/bin/killall /usr/bin/perl
[Install]
WantedBy=multi-user.target
重新加载系统:
systemctl daemon-reload
在启动时启用 ASSP 脚本:
systemctl enable assp.service
重新启动服务器并检查服务是否已启动并正在运行。然后您可以继续微调 ASSP 和 postfix(或您选择的电子邮件守护程序)。
链接
- ASSP
- 中央操作系统