Ubuntu Sunucusu 12.04LTS’de openDKIM ve Postfix
Geri dönüp bunu daha iyi biçimlendirmeye çalışacağım. Ancak cevabımı gönderme isteği geldiğinden, doğru biçimlendirmek için zamanım olana kadar beklemek yerine şimdi göndermek istiyorum. Zaman yetersizliğinden dolayı tüm cevabımı bir blok alıntı olarak tamamladım. Umarım bu çözüm yardımcı olur.
Bunlar benim referanslarım:
ve Wikipedia'nın konuyla ilgili iyi bir girişi var.
En azından ihtiyacınız olacak:
- Posta sunucunuza kök erişimi
- Alan adınız için dns kayıtlarını güncelleme erişimi
Opendkim'i depolardan yükleyin:
# sudo apt-get install opendkim opendkim-tools
Hangi “seçiciyi” kullanmak istediğinize karar vermelisiniz. Seçici, kullanmak istediğiniz anahtarı tanımlayan bir kelimedir. Burada anahtar, Mayıs 2012'de geçerli olacak şekilde 201205 seçicisini kullanacağım (kurnaz ha?). Çeşitlilik için iki örnek verdim, umarım netlik getirecektir. Sadece BİR anahtar oluşturmanız gerekir. Ancak, iki örneği de veriyorum, böylece bunları karşılaştırabilirsiniz.
- 201205 (1. anahtar)
- my_selector (2. anahtar)
Etki example.com
alanım olacak , ancak ikinci örneğim için bir alt etki alanı kullanacağım :
- example.com (1. anahtar)
- mail.example.com (2. anahtar)
Aşağıdaki dizinde çalışmaya karar verdim:
# mkdir /etc/opendkim/
# cd /etc/opendkim
Seçtiğiniz seçiciyi ve etki alanını kullanarak geçerli dizindeki anahtarları oluşturun.
# opendkim-genkey -s 201205 -d example.com
Sahipliği değiştirmeniz gerekebilir veya gerekmeyebilir. Sahiplik ve izinlerin ne olması gerektiğine ilişkin aşağıdaki 2. anahtar için benim örneğimdeki ayrıntılara bakın.
İlk önce bir opendkim
kullanıcı olup olmadığını kontrol etmelisiniz (kullanıcı / grup kimliğiniz farklı olabilir):
# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false
Ve muhtemelen bunu yapmanız gerekir:
# chmod 700 /var/run/opendkim
NOT: Bu sonraki iki komuta Ubuntu 12.04’te gerekli DEĞİLDİR. Ancak yukarıdaki komut kullanıcı opendkim'in uygun şekilde kurulduğunu göstermediyse, buna benzer şekilde yapın:
# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private
# cat 201205.private
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----
Şimdi genel anahtarı kontrol edin ve bir hata olduğuna dikkat edin (Ubuntu 12.04'te openDKIM 2.5.2'de)! İçerdiği yerde içermesi ;=rsa;
gerekir ;k=rsa;
. k
Eksik. Lütfen onu yerleştir.
# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com
Düzeltildikten sonra şöyle görünecek:
201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com
Ayrıca, muhtemelen bu şekilde noktalı virgüllerden kaçmanız gerekir. Bitiş yorumunu istemiyorsanız, sadece silin. Ayrıca DKIM’i test ettiğinizi, ancak henüz aktif olarak kullanmadığınızı gösteren sunucuları belirtmek için t = y işaretini eklemeniz gerektiğini unutmayın. Uygun bir kaynak kaydınız kaldı:
201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"
Yukarıdaki ortak anahtarın içeriğini yetkili DNS sunucunuzda yayınlamanız gerekir. Bir TXT kaydı kullanmanızı öneririm. Bir SPF kaydı veya her iki türün kullanılıp kullanılmayacağı konusunda biraz tartışma var gibi görünüyor. Biraz okuduktan sonra, bu konuyla ilgili son söz olduğuna inanmıyorum, ancak yalnızca TXT kayıt türüne bağlı kalmayı seçtim.
Kısa bir TTL kullanmalısınız (yaşama süresi), böylece DNS'i yayması için yaşlarını beklemeden anahtarı değiştirebilirsiniz. 180 saniye kullandım.
Bir anahtar çifti oluşturmanın ikinci örneği benim için biraz daha zordu. Ne yaptığımı açıklayacağım. İlk öğe, anahtar "mail.example.com" için kullanılmasına rağmen "example.com" alan değerini kullandım. Buna deneme yanılma ile geldim. Çalışıyor, "mail.example.com" kullanırken işe yaramadı. Ne yazık ki, bunun arkasındaki nedenlerin farkında değilim. Bu gerçekten karşılaştığım tek fark, ancak alt alanları kullanma konusundaki deneyimlerimi belgelemem gerektiğini hissettim. Bulduğum diğer başlangıç seviyesindeki eğiticilerin hiçbiri bunu yapmadı. İkinci bir anahtar oluştur:
opendkim-genkey -s my_selector -d example.com
yukarıdaki gibi özel anahtarın sahipliğini ve izinlerini kontrol edin. İşte nasıl görünmeleri gerektiği:
# ls -la /etc/opendkim
-rw------- 1 opendkim opendkim 891 May 10 07:44 my_selector.private
DNS kaydını yayınladıktan sonra, ile kontrol edin dig
. Tam olarak kaynak kaydına (RR) girdiğiniz şeyi döndürmelidir.
$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"
Şimdi anahtarı test et. Aşağıdaki komutlar, anahtarın bulunduğu dizinde olduğunuzu varsayar (benim için / etc / opendkim).
# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
Bu sonuçlar bekleniyor. "Anahtar güvenli değil" bir hata olduğunu göstermez. DNSSSEC kullanmamak beklenen bir sonucudur. DNSSEC geliyor, fakat okumaya göre henüz asal zaman için hazır değil.
2. anahtar ile örnek:
# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
Opendkim'in anahtarın güvenli olmadığını bildirdiğini unutmayın. Bu, DNSSEC'nin DNS sunucumda uygulanmadığı ve teorik olarak birisinin DNS aramasını engelleyebileceği ve kendi anahtarıyla değiştirebileceği ile ilgilidir.
OpenDKIM yapılandırma dosyasını düzenleyin:
# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain example.com
KeyFile /etc/opendkim/201205.private
Selector 201205
#
# Commonly-used options
Canonicalization relaxed/simple
Mode sv
SubDomains yes
# Log to syslog
Syslog yes
LogWhy yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask 022
UserID opendkim:opendkim
#
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
#
Socket inet:8891@localhost
#EOF
2. anahtar örneğimi kullanıyorsanız, hedeflenen "mail.example.com" alan adıyla giriş yine de sadece ana alan adına referans verecektir:
Domain example.com
KeyFile /etc/dkim/my_selector.private
Selector my_selector
-----
Kaynaklarımdan birinden not: Birden fazla Postfix örneği çalıştırıyorsanız, bunu her örnek için (veya opendkim kullanmak isteyenler için) opendkim.conf dosyasına eklemeniz gerekir.
Metin editörünüzle bir dosya oluşturun /etc/opendkim/TrustedHosts
:
OpenDKIM tarafından kullanılması gereken etki alanları, ana bilgisayar adları ve / veya ipler ekleyin. Localhost'u unutma.
127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)
(yukarıdaki son satıra ihtiyaç duymayacaksınız.) Eklenecek bir IP adresiniz varsa, yukarıdaki örneği değil kendi kodunuzu kullandığınızdan emin olun.)
Düzenle /etc/default/opendkim
:
Bu satırı uncomment ve 8891 numaralı bağlantı noktasını kullanın:
SOCKET="inet:8891@localhost" # listen on loopback on port
Güvenlik duvarınızın (iptables) localhost'ta geri tepmeye izin verdiğinden emin olun:
sudo iptables -A INPUT -i lo -j ACCEPT
Ardından, metin düzenleyicinizle bir dosya oluşturun /etc/opendkim/KeyTable
ve etki alanını KeyTable'a ekleyin.
Satır ekle:
#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private
Sonraki Metin editörünüzle bir dosya oluşturun /etc/opendkim/SigningTable
ve etki alanını SigningTable'a ekleyin
Her iki örneği de gösteriyorum. 2. anahtarım için artık "mail.example.com" tam alan adını kullanmam gerektiğini unutmayın:
example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com
OpenDKIM 2.0.1 alan adlarında büyük / küçük harf duyarlı olduğuna dikkat edin. Bu örnekte OpenDKIM'in daha yeni bir sürümünü kullanıyoruz ve bu bir sorun gibi görünmüyor.
Postfix'i yapılandır. /Etc/postfix/main.cf dosyasını düzenleyin ve satırları sonuna kadar ekleyin
milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891
Ayrıca ana bilgisayar adını da değiştirin:
#myhostname = localhost #original
myhostname = mail.example.com
Ayrıca / etc / hosts dosyasındaki ilgili girişi de değiştirmelisiniz. Bu değişiklikler, yeniden başlatmanın ardından etkili olur (hemen komutuyla hemen ayarlayabilirsiniz:) hostname NEW_NAME
.
Postfix'i yeniden başlatın ve yeniden başlatmadıysanız opendkim:
# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
* Stopping Postfix Mail Transport Agent postfix [ OK ]
* Starting Postfix Mail Transport Agent postfix [ OK ]
Test yapmak
İmzalanmış postanızın kimliğinin doğrulandığını ve DNS kayıtlarınızın doğru şekilde kurulduğunu kontrol etmenin en iyi yolu ücretsiz test hizmetlerinden birini kullanmaktır. Bunları kullandım:
- Brandon Checketts Email Validator - http://www.brandonchecketts.com/emailtest.php (en sevdiğim)
- İmzalı bir e-posta gönder: check-auth@verifier.port25.com (ayrıca favorim)
İmzalı bir e-posta gönder: sa-test@sendmail.net (test e-posta adreslerinin tümünü test etmek için tek bir giden iletinin Kime: alanına koyabilirsiniz)
İmzalı bir e-posta gönder: autorespond+dkim@dk.elandsys.com <--- BROKEN !!! Bunu kullanma.
Bunların her biri işlerin düzgün şekilde çalışıp çalışmadığını size söyleyecek ve gerekirse sorun giderme konusunda bazı öneriler verecektir.
Bir Gmail hesabınız varsa, hızlı ve kolay bir test için oraya imzalı bir mesaj da gönderebilirsiniz.
Her şeyin yolunda olduğuna sevindikten sonra, DNS TXT kaydındaki test bayrağını kaldırabilir ve TTL'yi artırabilirsiniz.
Bitti!