Farklı birinden gidiyormuş gibi gönderilen postaları engellemek için SPF kullanılabilir.
SPF sayesinde her posta için, o postayı gönderen sunucunun IP adresini postadaki eposta alan adının DNS sunucusuna sorulur. Eğer ki DNS sunucusu, kendi alan adındaki posta sunucusuna onay verirse, SPF denetimi başarılı olur.
DNS'te SPF kaydı oluşturmak zaten çok basit. Hızlı bir web tarama ile hemen kullanabilirsiniz. Postfix ile giden gelen postaları SPF denetiminden geçirmek isterseniz, aşağıdaki işlemler uygulanabilir.
Aşağıdaki işlemler, Debian tabanlı (Ubuntu da olabilir tabiiki) sistemler için bahsedilmiştir.
- SPF için gerekli paketleri kur:
sudo apt-get install postfix-policyd-spf-perl
- /etc/postfix/main.cf dosyasının üst taraflarinda bir yerde, SPF zaman aşımı süresini belirt:
spf-policyd_time_limit = 3600s
- /etc/postfix/main.cf içerisinde, smtpd_recipient_restrictions kısmını bul ve reject_unauth_destination seçeneğinin hemen arkasına şunu ekle:
check_policy_service unix:private/policy-spf
- /etc/postfix/master.cf dosyasının en altına da şunları (ikinci satırın başındaki boşluk önemli) ekle:
policy-spf unix – n n – – spawn
user=nobody argv=/usr/sbin/postfix-policyd-spf-perl
- Postfix'i yeniden yükle:
/etc/init.d/postfix reload
Bu kadar. log doayasından giden/gelen postalar için SPF il ilgili satırları bir süre incelemekte fayda var.
Test aşaması:
SPF için kullanılan betiğe test amaçlı bazı parametreler göndererek SPF denetiminin çalışıp çalışmadığını test edebilirsiniz. Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 |
# perl /usr/sbin/postfix-policyd-spf-perl request=smtpd_access_policy protocol_state=RCPT protocol_name=SMTP helo_name=gmail.com queue_id=8045F2AB23 sender=cunyor@gmail.com recipient=cunyor@gmail.com client_address=192.168.120.5 client_name=cunyor@gmail.com action=PREPEND Received-SPF: neutral (gmail.com ... _spf.google.com: Domain does not state whether sender is authorized to use 'cunyor@gmail.com' in 'mfrom' identity (mechanism '?all' matched)) receiver=posta.bilecik.edu.tr; identity=mailfrom; envelope-from="cunyor@gmail.com"; helo=gmail.com; client-ip=192.168.120.5 |
Görüldüğü gibi, belirtilen domain ve IP adresi için PF kayıdı tutarsız olduğu için, doğrulama yapılamıyor. Başarılı bir doğulama için örnek:
1 2 3 4 5 6 7 8 9 10 11 |
request=smtpd_access_policy protocol_state=RCPT protocol_name=SMTP helo_name=gmail.com queue_id=8045F2AB23 sender=cunyor@gmail.com recipient=cunyor@gmail.com client_address=209.85.213.54 client_name=cunyor@gmail.com action=PREPEND Received-SPF: pass (gmail.com ... _spf.google.com: 209.85.213.54 is authorized to use 'cunyor@gmail.com' in 'mfrom' identity (mechanism 'ip4:209.85.128.0/17' matched)) receiver=posta.bilecik.edu.tr; identity=mailfrom; envelope-from="cunyor@gmail.com"; helo=gmail.com; client-ip=209.85.213.54 |
Üstteki örnekte gerçekten gmail'e ait olan bir IP adresi verilmiş ve denetimin başarılı olduğu görülmüştür.
Kaynaklar:
- https://help.ubuntu.com/community/Postfix/SPF
- http://www.howtoforge.com/postfix_spf
- http://www.openspf.org/SPF_Record_Syntax