Howto ini menunjukkan langkah-langkah untuk menginstal ASSP pada instalasi CentOS 7 minimal. Itu tidak mencakup instalasi CentOS atau pengaturan server email. Gambar CentOS-7.0-1406-x86_64-Minimal.iso cocok untuk pengaturan ini. Jika Anda memiliki gambar DVD, pilih Minimal Install dan lanjutkan dengan instalasi.
Setelah reboot
Nonaktifkan NetworkManager dan FirewallD dan aktifkan layanan jaringan
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl disable firewalld
systemctl stop firewalld
systemctl enable network
systemctl start network
Edit konfigurasi kartu jaringan (kami menganggap satu kartu jaringan terpasang di sistem)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Ganti IPADDR0=a.b.c.d
Dengan IPADDR=a.b.c.d
Ganti PREFIX0=xx
Dengan PREFIX=xx
Ganti GATEWAY0=aa.bb.cc.dd
Dengan GATEWAY=aa.bb.cc.dd
Perbarui OS
yum -y update
reboot
yum install wget perl
Dapatkan perangkat lunak tambahan untuk Centos dari repositori epel, repoforge, remi:
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
Instal repositori
yum localinstall rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm epel-release-7-5.noarch.rpm remi-release-7.rpm
Instal firewall shorewall (pengelola iptables):
yum install shorewall
Mari kita edit firewall kita. Opsi dan file contoh ini adalah minimum untuk membuatnya berfungsi. Diperlukan konfigurasi lebih lanjut. Untuk informasi lebih lanjut tentang shorewall dan cara mengkonfigurasinya, kunjungi http://shorewall.net
Pertama, file antarmuka:
vi /etc/shorewall/interfaces
net eth0
File kebijakan:
vi /etc/shorewall/policy
$FW net ACCEPT
net all DROP
all all REJECT
File aturan:
vi /etc/shorewall/rules
Di bawah ?BAGIAN BARU tambahkan aturan di bawah ini:
# 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
File shorewall.conf:
# vi /etc/shorewall/shorewall.conf
Ganti STARTUP_ENABLED=Tidak dengan STARTUP_ENABLED=Ya
Dan akhirnya file zona:
vi /etc/shorewall/zones
fw firewall
net ipv4
Aktifkan firewall
systemctl enable shorewall
systemctl start shorewall
Periksa apakah firewall berjalan dengan perintah status shorewall:
shorewall status | grep running
Shorewall is running
Instal perangkat lunak yang diperlukan untuk ASSP2 &Modul:
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
Pembaruan opsional CPAN
perl -MCPAN -e shell
Terima opsi default dan lanjutkan untuk meningkatkan:
cpan> install CPAN
cpan> reload cpan
Aktifkan ClamAV saat boot
systemctl aktifkan 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, ...).
Sunting /etc/clamd.conf:
vi /etc/clamd.conf
Ganti nilai Anda dengan yang di bawah ini:
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
Edit /etc/freshclam.conf:
vi /etc/freshclam.conf
Tambahkan atau batalkan komentar LogRotate yes
Mulai ClamAV:
systemctl start clamd
Instal modul CPAN untuk ASSP:
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
Jawab pertanyaan apa pun dengan menekan tombol Enter (ini akan menjadi opsi default dalam tanda kurung [ ])
Mungkin Mail::SPF::Query dan File::Scan::ClamAV tidak akan diinstal tanpa paksaan. Dalam hal ini:
perl -MCPAN -e shell
cpan> force install Mail::SPF::Query
cpan> force install File::Scan::ClamAV
Saya akan merekomendasikan untuk menginstal modul Perl satu per satu untuk menangkap potensi kesalahan dan/atau dependensi yang hilang:
perl -MCPAN -e shell
cpan> install
Unduh ASSP v.2 dari http://sourceforge.net/projects/assp/ ke server Anda dan unzip:
unzip ASSP__Install.zip
mv -f assp/ /var/db/assp/
cd /var/db/assp
Mulai assp untuk pertama kalinya:
perl assp.pl
Setiap kesalahan tentang modul perl akan dilaporkan ke /var/db/assp/moduleLoadErrors.txt. Kesalahan lainnya akan dicetak di konsol (assp akan tetap berada di latar depan).
Mulai mengonfigurasi ASSP dengan masuk ke antarmuka web:
http://
pengguna:root
sandi:nospam4me
Secara default assp mengikat ke port 25/tcp pada setiap alamat ipv4 (0.0.0.0:25). Ini akan menghasilkan konflik dengan server email lokal (postfix, exim, sendmail, opensmtpd). Informasi ini akan dicetak ke file log assp (/var/db/assp/logs/maillog.txt) dan di konsol, jika assp berjalan di latar depan:
[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
Dalam hal ini kita akan menyiapkan postfix dan harus mengubah port defaultnya (25/tcp) menjadi misalkan 125/tcp dan hanya mengikat ke localhost:
vi /etc/postfix/master.cf
Ganti
smtp inet n - n - - smtpd
Dengan
localhost:125 inet n - n - - smtpd
Mari kita mulai ulang 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.
Kesalahan di atas adalah karena selinux tidak mengizinkan postfix untuk mengikat ke port lain selain 25, 465 dan 587
Untuk membuat postfix mengikat ke port 125, nonaktifkan selinux (tidak disarankan) atau tambahkan port lain ke kebijakan selinux agar postfix dapat diikat:
semanage port -a 125 -t smtp_port_t -p tcp
Dan periksa apakah port 125 ada dalam daftar port yang diizinkan:
semanage port -l | grep smtp_port_t
smtp_port_t tcp 125, 25, 465, 587
Sekarang kita dapat memulai kembali postfix tanpa kesalahan:
systemctl restart postfix
Cara lain untuk melakukan sesuatu adalah dengan mengaktifkan smtp di localhost, dan di assp web config aktifkan port 25 pada alamat ip publik/pribadi dari server masing-masing. Dengan cara ini tidak ada konfigurasi selinux yang terlibat.
Di /etc/postfix/master.cf:
vi /etc/postfix/master.cf
Ganti
smtp inet n - n - - smtpd
Dengan
localhost:smtp inet n - n - - smtpd
Dalam konfigurasi web assp Network Setup->SMTP Listen Port berubah dari 25 menjadi
Terapkan perubahan menggunakan tombol Terapkan pada antarmuka web.
Untuk membuat assp mulai saat boot, dalam konfigurasi web assp pergi ke Server Setup dan di bawah Run ASSP as a Daemon pilih Yes – externally controlled
Kami kemudian membuat skrip assp systemd:
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
Muat ulang systemd:
systemctl daemon-reload
Aktifkan skrip ASSP saat boot:
systemctl enable assp.service
Nyalakan ulang server dan periksa apakah layanan aktif dan berjalan. Kemudian Anda dapat melanjutkan untuk menyempurnakan ASSP dan postfix (atau daemon email pilihan Anda).
Tautan
- ASSP
- CentOS