웹사이트 검색

CentOS 7 64비트에 ASSP v.2를 설치하는 방법


이 하우투는 최소 CentOS 7 설치에 ASSP를 설치하는 단계를 보여줍니다. CentOS 설치나 메일 서버 설정은 다루지 않습니다. CentOS-7.0-1406-x86_64-Minimal.iso 이미지가 이 설정에 적합합니다. DVD 이미지가 있는 경우 Minimal Install을 선택하고 설치를 진행합니다.

재부팅 후

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로 교체

OS 업데이트

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 enable 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

처음으로 asp를 시작합니다.

perl assp.pl

perl 모듈에 대한 모든 오류는 /var/db/assp/moduleLoadErrors.txt에 보고됩니다. 다른 모든 오류는 콘솔에 인쇄됩니다(assp는 전경에 유지됨).

웹 인터페이스에 로그인하여 ASSP 구성을 시작합니다.

사용자: 루트
비밀번호: nospam4me

기본적으로 assp는 모든 ipv4 주소(0.0.0.0:25)에서 포트 25/tcp에 바인딩됩니다. 이렇게 하면 로컬 이메일 서버(postfix, exim, sendmail, opensmtpd)와 충돌이 발생합니다. 이 정보는 assp 로그 파일(/var/db/assp/logs/maillog.txt)과 assp가 포그라운드에서 실행되는 경우 콘솔에 인쇄됩니다.

[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

이 경우 접미사를 설정하고 기본 포트(25/tcp)를 변경하여 125/tcp라고 말하고 localhost에만 바인딩해야 합니다.

vi /etc/postfix/master.cf

바꾸다

smtp inet n - n - - smtpd

와 함께

localhost:125 inet n - n - - smtpd


postfix를 다시 시작하겠습니다:

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를 비활성화하거나(권장하지 않음) postfix가 바인딩할 selinux 정책에 다른 포트를 추가하십시오.

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

작업을 수행하는 또 다른 방법은 localhost에서 smtp를 활성화하고 asp 웹 구성에서 각각 서버의 공용/개인 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에서 네트워크 설정->SMTP 수신 대기 포트가 25에서 :25로 변경되고 네트워크 설정->SMTP 대상이 125에서 127.0.0.1:25로 변경됩니다.

웹 인터페이스에서 적용 버튼을 사용하여 변경 사항을 적용합니다.


부팅 시 assp를 시작하려면 assp web config에서 Server Setup으로 이동하고 Run ASSP as a Daemon에서 Yes – externally controlled를 선택합니다.

그런 다음 systemd asp 스크립트를 만듭니다.

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
  • 센트OS