Configure an antispam gateway (part I)
In this tutorial i’ll show how to ensure and apply many feature for our mail gateway try to avoid most of the mail spam. I’ll explain all the options that we’ll setup to understand it and modify it to any scenario. For this tutorial I used a machine with Centos 6.0 with the postfix mail software and other virtual machine Debian Squeeze running bind9 for DNS request. We’ll configure SPF (sender profile framework) to check the DNS records txt for check which servers are allowed to send mails with the domains that we’ll received mails in our servers, also we’ll configure some RBL to check in real time server black list and avoid these servers.

1.- Install postfix and setup to autostart service:
2.- Edit some options for ensure our mail server and avoid a lot of spam:
3.- Edit the file relay_domains to add the domain names that are allowed for send mails to our server:
4.- Compile our relay_domains file:
5.- Configure SPF in our domain (192.168.1.57):
6.- Configure spf in postfix:
7.- Download spf software and setup postfix:
8.- Configure database RBL (Realtime Blackhole List):
8.- Add Iptables rule:

9.- Restart services postfix and iptables:
Test our configuration postfix:
- forces to use ehlo to establish a connection with mail server:

- Domains don’t listed in relay_domains file are not allowed to send mails with our server:

- check SPF records and reject non valid mails from other servers:

logs for spf:
1.- Install postfix and setup to autostart service:
# yum install postfix# chkconfig --levels 235 postfix on |
# vi /etc/postfix/main.cf
|
myorigin = mydomain.com #Domain name for mail senders |
mydestination = mydomain.com #Local domains |
mynetworks = 127.0.0.1/32, 192.168.1.0/24 # Networks that are allowed to send |
inet_interfaces = localhost, 192.168.1.200 |
relay_domains = hash:/etc/postfix/relay_domains #File with accepted domains |
parent_domain_matches_subdomains = debug_peer_list smtpd_access_maps #Not accept subdomains |
smtpd_recipient_restrictions =reject_unauth_destination #Deny domains that are not included in relay_domainscheck_policy_service unix:private/policy #Check SPF policyreject_unauth_pipeliningreject_unknown_sender_domain #Deny the request for the mail from address for non exist domain namereject_unknown_recipient_domain #Deny the request for the rcpt to address for non exist domain namereject_invalid_hostname #Deny the helo request for invalid FQDN host namereject_non_fqdn_helo_hostname #Deny the helo request for non exist FQDN host namereject_non_fqdn_sender #Deny the request for mail from address that don't follow a FQDNreject_non_fqdn_recipient #Deny the request for rcpt to address that don't follow a FQDNpermit_mynetworks #Allow send mails from our network |
smtpd_banner = $myhostname Microsoft ESMTP MAIL service ready |
smtpd_helo_required = yes |
# vi /etc/postfix/relay_domainsmydomain.com OK |
# postmap /etc/postfix/relay_domains |
@ IN TXT "v=spf1 mx ip4:192.168.1.200/24 ~all" |
6.- Configure spf in postfix:
# yum install perl-CPAN wget perl-NetAddr-IP perl-Module-Build perl-Test-Base perl-Net-DNS perl-Net-DNS-Nameserver# perl -MCPAN -e shellcpan[1]> install Net::DNS::Resolver::programmablecpan[2]> install Errorcpan[3]> q# perl -MCPAN -e "get('Mail::SPF')"# cd /root/.cpan/sources/authors/id/J/JM/JMEHNLE/mail-spf# tar -xzvf Mail-SPF-v2.8.0.tar.gz# cd Mail-SPF-v2.8.0/# perl Build.PL# ./Build# ./Build test# ./Build install |
7.- Download spf software and setup postfix:
# wget https://launchpad.net/postfix-policyd-spf-perl/trunk/2.009/+download/postfix-policyd-spf-perl-2.009.tar.gz# tar -xzvf postfix-policyd-spf-perl-2.009.tar.gz# cp postfix-policyd-spf-perl-2.009/postfix-policyd-spf-perl /usr/libexec/postfix/postfix-policyd-spf-perl# vi /etc/postfix/master.cfpolicy unix - n n - - spawnuser=nobody argv=/usr/bin/perl /usr/libexec/postfix/policyd-spf-perl |
8.- Configure database RBL (Realtime Blackhole List):
# vi /etc/postfix/main.cfsmtpd_recipient_restrictions=...reject_rbl_client zen.spamhaus.orgreject_rbl_client relays.ordb.orgreject_rbl_client blackholes.wirehub.netreject_rbl_client list.dsbl.orgpermit_mynetworks |
8.- Add Iptables rule:
# vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT |
9.- Restart services postfix and iptables:
# service iptables restart# service postfix restart |
- forces to use ehlo to establish a connection with mail server:
- Domains don’t listed in relay_domains file are not allowed to send mails with our server:
- check SPF records and reject non valid mails from other servers:
logs for spf:
Nhận xét
Đăng nhận xét