Postfix SPF Entegrasyonu

Bence perl, python’u döver. İkisi arasında bir boks maçı olsa kesinlikle perl’ü tutardım. Bana daha gariban geliyor, kalender bir görünümü var. Kapris nedir bilmeyen, sunucusuna göre çalışan daha bir yurdum insanı gibi… Neden olduğunu yazımın sonunda anlayacaksınız. Bu arada python piton diye okunmaz, sondaki o “ı”, “o”, “a” arasında bir harf ile okunuyor Paytııoaan. Hatta aradaki t’de d gibi okunuyor Paydııoan.

SPF Nedir?

SPF (Sender Policy Framework) spam maillerin engellenmesi amacıyla, eposta kimlik kontrolü tekniğidir. 2000 yılı öncesi, domain adına sahip olmayan eposta adresleri (örneğin: gates@microsoft.com) aracılığı ile gönderilen mailler spam süphesi taşımadan alıcıya ulaşıyordu. Alıcı bu mailin kimden geldiğine dikkat etmeden mailin sahte kimliğine ve konusuna kolayca kendisini inandırıyordu. SPF, gönderilen mailin alan adına gerçekten sahip olup olmadığını dns kayıtlarından kontrol ederek, güvenilirliğini arttırmaktadır. SPF sayesinde mail kullanıcıları günde binlerce spam mailden kurtulmuş oldular. Aşağıda örnek bir spam mail görebilirsiniz.

Sunucu üzerinde SPF kontrolü olmadığı sürece kötü niyetli kullanıcılar diledikleri domain adı ile mail gönderip, bu mailler içerisine virüslü dosyalar ekleyebilirler. Yukarıdaki mailin herhangi bir şirket muhasebe personeline gittiğini düşünün, mutlaka merak edip açmak isteyecektir.

Postfix kurulu sunucularda mutlaka SPF kontrolü eklenmelidir. Aksi takdirde sahte maillerin önüne geçmek neredeyse imkansızdır. Spamassasin gibi spam kontrol eklentileri de SPF gibi dns kayıtlarına bakmadığı için mailin sahte olup olmadığını anlaması mümkün değildir. Bugün postfix’e SPF entegrasyonunu yapacağız. Kompozisyon yazımında çok iyi olmadığım için, kelime hatalarım olursa lütfen yorumlar kısmından belirtiniz.

Kurulum Öncesi:

Bugün, Centos 7 (ubuntu da çok farklı değil) linux sunucusu üzerinde kurulum işlemi yapacağız. Bunun için sunucunuzda perl kurulu olması gerekmektedir. Ayrıca postfix’in hali hazırda sunucunuzda çalıştığını varsayıyorum.  Centos’ta perl default olarak kurulu gelmektedir. Yine de kontrol etmek için “perl –v” komutu sonrasında aşağıdaki gibi bir çıktı almalısınız.

Sunucumuzda bulunan postfix’e “postfix-policyd-spf-perl” eklentisini ekleyeceğiz. Bu paketin çalışması için bazı perl modüllerine ihtiyaç duyulmaktadır. Öncelikle bu perl modüllerini bilgisayarımıza kuralım.

Perl Modüllerinin Kurulumu:

İlk olarak “perl -MCPAN -e shell” komut dizilimini yazıp test edelim. Aşağıdaki gibi bir hata almayıp perl shell’ine düşüyorsanız bundan sonraki adımı atlayabilirsiniz.

MCPAN’ın sunucunuzda yüklü olmadığını CPAN.pm’e ulaşamadığını söylemektedir. Aşağıdaki yum paket yükleyicisi ile CPAN’I sunucumuza yükleyelim.

1
yum -y install perl-CPAN

Kurulum tamamlandıktan sonar tekrar

1
perl –MCPAN –e shell

omutunu vererek ilerleyelim. Burada perl birçok işlem gerçekleştirecek. Sunucunuzun hızına göre bu 5 dk ile 20 dk arasında sürebilir, sabırla bekleyin. Birçok paket indirip yükleyecek ve derleme yapacak.

Tüm işlemler bittikten sonra aşağıdaki gibi bir shell size bekliyor olacak:

Burada yapmanız gereken şey “q” komutu ile çıkış yapıp tekrar perl CPAN shell’e giriş yapmanız. Buradaki amaç CPAN’I güncellemek.

Tekrar giriş yaptıkran sonra “install Mail::SPF” komutunu vererek SPF eklentisini yükleyelim.

SPF için gereken perl modüllerini yükledik. Şimdi postfix için “postfix-policyd-spf-perl” paketini yükleyelim.

postfix-policyd-spf-perl yükleme:

Bunun için şu adreste bulunan repo paketinden faydalanacağız. Aşağıdaki işlemleri sırası ile yapınız. (Ubuntu kullananların repolarında default olarak bulunabilir, apt-cache search ile aratabilirsiniz.)

1
yum install http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm
1
yum install postfix-policyd-spf-perl

Yükleme işlemi tamamlandıktan sonra /usr/bin içerisinde ”postfix-policyd-spf-perl” isimli çalıştırılabilir bir dosya oluşturmuş olması gerekiyor. Kullandığınız sunucu sürümüne göre path farklılık gösterebilir, which ile tam yoluna bakmanızı tavsiye ederim.

Bu dosya adını yolu ile birlikte bir yere not edin. Postfix içerisinde kullanacağız.

Postfix içerisine entegrasyon:

Bir editor yardımı ile /etc/postfix/master.cf dosyasını açıp en alta inerek aşağıdaki satırları yapıştırınız. master.cf dosyasına ulaşamadıysanız root folder’da “find . –name “master.cf” yaparak öğrenebilirsiniz.

1
policy  unix  -       n       n       -       -       spawn user=nobody argv=/usr/bin/perl /usr/bin/postfix-policyd-spf-perl

argv=/usr/bin/perl’den sonra bir boşluk bırakarak yukarıda kaydettiğimiz postfix-policyd-spf-perl dosyasının tam yolunu yapıştırınız.

İkinci adımda ise; postfix’in main.cf dosyasını açınız ve aşağıdaki satırı bularak karşısına ekleyiniz.

“smtpd_recipient_restrictions=” bu satırın eşittirinden sonra postfix ayarlarınıza özgün bazı kısıtlama parametreleri mevcut olabilir, bu parametlerin en sonuna şu parametleri ekleyin:

“check_policy_service unix:private/policy”

parametlerini yan yana kullanıyorsanız aralarında virgül olması gerekiyor. Eğer satır satır kullanıyorsanız virgül olmaması gerekiyor. Aşağıdaki örnekten inceleyebilirsiniz.

1
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,check_policy_service unix:private/policy

veya

1
2
3
4
5
smtpd_recipient_restrictions =

reject_unauth_destination
check_policy_service unix:private/policy

“reject_unauth_destination” parametresinin her zaman spf kontrolünden önce olması gerekir. Aksi takdirde postfix sunucunuzda güvenlik açığı meydana gelecektir. Buna dikkat etmenizi tavsiye ederim.

Evet herşey bu kadar. Postfix’I restart ettiğinizde çalışması gerekiyor. Gelişmeleri log dosyalarından takip edebilirsiniz. (tail –f /var/log/maillog)

Şimdi başka bir sunucudan telnet ile sahte bir mail göndermeye çalışalım:

1
2
3
4
5
6
7
8
9
10
telnet domainadiniz.com 25
helo microsoft.com
mail from: gates@microsoft.com
rcpt to: isim@domainadiniz.com
data
From: gates@microsoft.com
Subject: Burada baslik olacak
Burda mailin body kısmı yer alacak.
.
quit

SPF kontrolü çalışıyor ise data kısmına geldikten sonra hata alacaksınızdır. Eğer hata almadan atıyorsa ve attığınız mail inbox’a düşüyorsa postfix loglarına bakmanızı tavsiye ederim. Ya spf’nin path’inde bir hata vardır ya da perl modüllerinde. Bu SPF eklentisi python ile de yapılmaktadır ancak ben 1-2 saat uğraşmama ragmen kurulumu tamamlayamadım. Python sürümünden kaynaklı birden çok hata mesajı aldım, pip yükleme yapmak gerekiyor, pip her bir python sürümünü beğenmiyor, modüller eksik diyor bir sürü yığınla hata. O nedenle perl ile çalışanı gerçekten zahmet gerektirmeden kuruldu.

Faydalı olması dileğiyle…

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Güvenlik Sorusu *