makaleler / Debian / Ubuntu / Pardus / Postfix Dkim Debian Kurulumu

Postfix Dkim Debian Kurulumu

17.06.2016 12:59:37

Debian Wheezy dağıtımına Postfix için DKIM yapılandırması nasıl yapılır?

Yanlışlıkla eposta sunucunuz spam olarak işaretlendi ve eposta gönderimdinde sorunlar yaşıyorsunuz bu durumda eposta sunucu yöneticilerinin izlemesi gereken yöntemlerden biride DKIM kurulumudur. Gönderilen epostaların spam olarak işaretlenmesinin genellikle nedenlerinden biri aşağıdakilerden bir tanesidir.

  • Sunucunun açık bir şekilde relay yapılması
  • Gönderenin veya sunucunun IP adresi kara listeye eklenmiş olması
  • Sunucu bir tam etki alanı adı içinde (FQDN) ve PTR kaydı yapılmamış olması
  • Sender Policy Framework (SPF) DNS kaydı eksik ya da yanlış olduğu durumlarda
  • DomainKeys Tanımlanmış Mail (DKIM) uygulaması eksik veya düzgün kurulu olmaması

Bunlar çoğunluğu (SpamAssassin'e dahil) özel ve açık kaynak spam filtreleri tarafından kontrol edilmektedir ve bunların temel bazı özellikleri vardır. Bu testleri geçen iyi bir şekilde yapılandırılmış eposta sunucusu için son derece önemlidir.

Bu makalemizde DKIM kimlik doğrulama sisteminin açık kaynak uygulaması OpenDKIM yapılandırılması üzerinde durulacaktır.

Bu makalemizde Debian, Postfix, Dovecot ve SSH gibi gerekli uygulamaların kurulu olduğunu varsayarak başlıyoruz.


Dkim Nedir?

DKIM eposta mesajı ile bir alan adı "Domain" ilişkilendirmek için bir kişi ya da kuruluşa sağlayan bir Internet standardıdır. Bu, aslında, bir mesajın yöntem olarak sorumluluğunu üstlenmesidir. Aslında, DKIM asimetrik kriptografi tarafından desteklenmektedir.

Gönderenin Mail Transfer Agent (MTA) özel bir anahtarla her gönderilen mesajı imzalar. Alıcı, gönderenin DNS kayıtlarından ortak anahtarı alır ve mesajı imzalama kısmını gerçekleştirir ayrıca ileti gövdesi ve başlık alanlarının değişikliklerini doğrular.


OpenDKIM Kurulumu

Kuruluma başlamadan önce bir sistem güncellemesi tavsiye edilir:


apt-get update && apt-get dist-upgrade

OpenDKIM ve bağımlılıklarını yükleyin:


apt-get install opendkim opendkim-tools

Ek paketler bağımlılık olarak listelenir devam etmek için 'yes' yazıp Enter tuşuna basın.


OpenDKIM yapılandırma

OpenDKIM yapılandırılması dosyaların içerikleri düzenlenerek yada oluşturularak sağlanır. Dosya düzenleme işlemlerinde şahsen Vim kullanmaktayım ama siz daha basit bir editör olan Nano yu tercih edebilirsiniz.


Nano kullanmayı tercih ederseniz:
  • Değişiklikleri kaydetmeden çıkmak için CTRL + X ardından N tuşuna basmalısınız.
  • Değişiklikleri kaydederek çıkmak için CTRL + X ardından Y tuşuna basmalısınız.

Önemli: Tüm örnek domain alanlarımızı pythontr.com olarak işleyeceğiz sizlerde yapacağınız yapılandırma işleminde kendi domain adresinizle değişitrmeyi unutmayınız.

Şimdi ana konfigürasyon dosyamızla yapılandırmaya başlayalım.


vim /etc/opendkim.conf

.conf uzantılı dosyanın sonuna aşağıdaki satırları ekleyiniz. Her bir parametreyi aşağıda satır satır açıklamaya çalıştık. İsteğe bağlı olarak Socket için özel bir port numarası seçebilirsiniz. Seçtiğiniz port numarasının farklı bir uygulama tarafından kullanılmadığına emin olmalısınız.


AutoRestart             Yes
AutoRestartRate         10/1h
UMask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes

Canonicalization        relaxed/simple

ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable

Mode                    sv
PidFile                 /run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256

UserID                  opendkim:opendkim

#Socket                  inet:12301@localhost
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock
  • AutoRestart: Filtre üzerinde hata oluştuğunda tekrar başlatılmasını sağlar
  • AutoRestartRate: Filtrenin maksimum yeniden oranını belirtir, yeniden başlama "restart" bu orandan daha fazla olmaya başlar ise filtre sona erer. 10 / 1h - 10 yeniden başlatıldığında / saat en fazla izin verilir.
  • UMask: Kullanıcı Kimliği ile tanımlanan kullanıcı grubuna tam erişim izinleri verir ve diğer kullanıcıların okuma ve dosyaları çalıştırmasına izin olarak olanak sağlar, bu durumda bir Pid dosya oluşturulma ve değişiklik yapılmasını sağlayacaktır.
  • Syslog, SyslogSuccess, *LogWhy: Bu parametreler ayrıntılı bir şekilde LOG olmamızı sağlayacaklar.
  • Canonicalization: İmzalanması sırasında kullanılan kurallı yöntemleri tanımlar. relaxed/simple Mesaj üst bilgisi işleme algoritmasıdır.
  • ExternalIgnoreList: Kimlik bilgileri olmadan imzalama domainleri posta gönderilmesine olanak verir.
  • InternalHosts: İçerdeki diğer bilgisayarların listesini oluşturur. Kimin eposta sı doğrulanamadı ama bunun yerine imzalar...
  • KeyTable: İmzalama anahtarları, kilit isimleri, haritalar.
  • SigningTable: Başlıktaki, gönderen bulunan adrese dayalı bir iletiye uygulanacak imzaları listeler.
  • Mode: İşletim modu belirtir. Bu durumda bir imzalayıcı ve bir doğrulayacı olarak hareket eder.
  • PidFile: Pid dosyası yolu ve işlem kimlik numarasını içerir
  • SignatureAlgorithm: İmza oluşturma sırasında kullanılması için imza algoritması seçer.
  • UserID: Opendkim prosesi bu kullanıcı ve grup altında çalışır.
  • Soket: Postfix bu soket aracılığıyla imzalama ve doğrulamada opendkim için mesaj gönderecek; localhost @ 12301 localhost, port 12301 üzerinden dinler bu şekilde bir TCP soketi tanımlanır

Postfix için ayarlar
vim /etc/default/opendkim

Aşağıdaki satırı ekleyin özel bir port numarası düzenleyebilirsiniz düzenlediğiniz port numarasının kullanılabilir olduğundan emin olun.


#SOCKET="inet:12301@localhost"
SOCKET=/var/spool/postfix/opendkim/opendkim.sock

Şimdi Postfix main dosyasını açalım.


vim /etc/postfix/main.cf

Bu iki satır Postfix yapılandırma satırının main.cf dosyasında bulunduğundan emin olun.


milter_protocol = 6
milter_default_action = accept

postfix üzerinde socket pathi oluşturalım.


mkdir /var/spool/postfix/opendkim
chown opendkim:opendkim /var/spool/postfix/opendkim

Bu satırlar filtre (SpamAssasin, Clamav vb...) uygulamalar için Postfix tarafından kullanılıyor olabilir. Aşağıdaki parametreler varsa, sadece virgül ile ayrılarak ilave edilir. Port numarası opendkim.conf dosyasında tanımladığınız port ile aynı olmalıdır.


smtpd_milters = unix:/spamass/spamass.sock,  unix:opendkim/opendkim.sock
non_smtpd_milters = unix:/spamass/spamass.sock, unix:opendkim/opendkim.sock

Ya da sade aşağıdaki şekilde tanımlayabilirsiniz.


smtpd_milters = unix:opendkim/opendkim.sock
non_smtpd_milters = unix:opendkim/opendkim.sock

İmza tabloları ve şifrelemeler için bir dizin yapısı oluşturalım.


mkdir /etc/opendkim
mkdir /etc/opendkim/keys

Güvenilir hostları belirleyelim.
vim /etc/opendkim/TrustedHosts

ExternalIgnoreList ve InternalHosts tanımlamaları için bu dosya kullanılır. Bu Bilgisayarlar, Domainler ve IP adreslerinden gelen iletileri güvenilir ve imzalanır.

Bizim ana yapılandırma dosyası düzenli ifade dosyası (refile) olarak TrustedHosts bildirir, çünkü biz joker karakterler belirleyip kullanabiliriz *.pythontr.com pythontr.com'un en alt etki alanları gelen mesajları güvenilir olacağı anlamına gelir.

Yeni oluşturacağımız dosya ya aşağıdaki satırları ekleyin. Birden fazla domain tanımlayabilirsiniz. İlk iki satıra dokunmalayabilirsiniz üçüncü satırı kendi network yapınıza göre düzenleyiniz.


127.0.0.1
localhost
192.168.0.1/24

*.pythontr.com

#*.xxx.net
#*.xxx.org

Bir Anahtar tablo "Key Table" oluşturalım:
vim /etc/opendkim/KeyTable

Her domain için bir anahtar tablo "Key Table" oluşturmalıyız.


mail._domainkey.pythontr.com pythontr.com:mail:/etc/opendkim/keys/pythontr.com/mail.private

#mail._domainkey.xxx.net xxx.net:mail:/etc/opendkim/keys/xxx.net/mail.private
#mail._domainkey.xxx.org xxx.org:mail:/etc/opendkim/keys/xxx.org/mail.private

Bir imza tablo oluşturalım:


vim /etc/opendkim/SigningTable

Bu dosya adları / e-posta adresleri ve domain tanımları için kullanılır.


*@pythontr.com mail._domainkey.pythontr.com

#*@xxx.net mail._domainkey.xxx.net
#*@xxx.org mail._domainkey.xxx.org

Public ve Private keylerin oluşturulması

keys dizinine gidelim.


cd /etc/opendkim/keys

Keyleri tutmak ve domainleri ayırmak için ayrı bir klasör oluşturalım.


mkdir pythontr.com
cd pythontr.com

Key oluşturma
opendkim-genkey -s mail -d pythontr.com

-s seçici belirtir -d ise domaini belirtir, bu komut iki dosya oluşturur mail.private bizim anahtarımızdır. Diğer dosya mail.txt ortak anahtarı içerir.


Özel anahatarın opendkim sahibini değiştirme:
chown opendkim:opendkim mail.private

Domainlerin, DNS kayıtlarına genel anahtarı eklenmesi:

mail.txt dosyasını açalım.


vim mail.txt

Ortak anahtar p parametresi altında tanımlanır. Aşağıdaki örnek keyi kullanmayın, sadece bir örnek olarak paylaşılmıştır ve sunucu üzerinde çalışmaz.


vim /etc/bind/zones/pythontr.com.db

mail._domainkey IN TXT "v=DKIM1; k=rsa; p=ADADFR0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKdddd7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDDDDD" ; ----- DKIM key mail for pythontr.com

postfix kullanıcısını opendkim grubuna ekleyelim.


adduser postfix opendkim

Servisleri sırasıyla restart edelim.


service bind9 restart
service postfix restart
service opendkim restart

Kurulumun testi için bu adresi kullanabilirsiniz https://www.mail-tester.com/spf-dkim-check [mail-tester.com]


Notlar


postfix/cleanup: warning: connect to Milter service unix:/var/run/opendkim/opendkim.sock: No such file or directory
Çözümü
vim /etc/postfix/master.cf
# service type  private unpriv  chroot  wakeup  maxproc command + args
cleanup   unix  n       -       n       -       0       cleanup
yazar husonet

Yorumlar

Bu içerik için sizde yorum yapabilirsiniz!
anasayfa | makaleler | haberler | dosyalar | linkler | hakkımızda