News

Information Technology [1]

Information Technology: 在 Exim 上安裝加 DomainKeys 解決寄給 Yahoo 信箱問題

Contributed by tyroneyeh on Jun 02, 2009 - 10:07 AM

原本寄到 Yahoo 的信箱都要透過 ISP 代為轉寄,一般稱為 RELAY,大部份從 Mail Server 上做 Smart Host 的設定即可! 這樣也是有好處的,做 Smart Host 也可以節省一些頻寬(同一封信有多收件者的時候),不過這樣就不知道 DomainKeys 怎麼設定。

這裡介紹是使用 Gentoo Linux + Exim MTA + DomainKeys 的方式! 

首先先把 Exim 這套 MTA (Mail Transfer Agent) 郵件伺服器讓它支援 DomainKeys,可以用 equery u exim 指令來查看一下有沒有支援 (指令的 # 井號請忽略),已安裝的 Exim 的情況!

# equery u exim

有出現 ++ domainkeys 就表示有支援

+ + domainkeys   : Adds support for Yahoo!'s DomainKey sender verification system 

如果沒有就下 echo "mail-mta/exim domainkeys" >> /etc/portage/package.use或用 vi 來編輯 package.use 這個設定檔,然後再重新編譯一下即可


# echo "mail-mta/exim domainkeys" >> /etc/portage/package.use
# emerge -N exim 

 應該這樣就會自動安裝 libdomainkeys 套件了,再來就是設定 DNS Server 的 TXT 記錄讓 DomainKeys 可以查到金鑰,先用 dknewkey myhost.mydomain.com 1024 來產生 key,1024 表示用 1024 bit 來產生金鑰,exim wiki 官網說放到 /etc/exim/dk 下


# cd /etc/exim
# mkdir dk
# cd dk
# dknewkey mail.siryeh.com 1024

下完 dknewkey 指令後會出現下面這樣的公鑰 (公開的 key),也產生了 mail.siryeh.com 的私鑰檔案,這個公鑰就是要設定到 DNS 上!

mail.siryeh.com._domainkey      IN      TXT     "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDYc+bsCO0e+yhMMXIvDtV2oHLrLEDyuIySuBf5o0CjElJ65pBfBk2ZTO82CiscI3r vlu1RsVU3/+cikFIjCBzcyP4fPQZ/E0Vx9Lg1a3wozc02/wnQ8yTldup5CvmApjOvF/vSYjdBI4H6xtAtjR4utkwRG4PmuBYoHykx03NuQIDAQAB"

不過這個部份不能直接用,要修改一下像下面這樣,要有兩行,且 _domainkey 要放到前面


_domainkey.siryeh.com.      IN      TXT             "t=y; o=-"
mail._domainkey.siryeh.com.      IN      TXT     "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDYc+bsCO0e+yhMMXIvDtV2oHLrLEDyuIySuBf5o0CjElJ65pBfBk2ZTO82CiscI3r vlu1RsVU3/+cikFIjCBzcyP4fPQZ/E0Vx9Lg1a3wozc02/wnQ8yTldup5CvmApjOvF/vSYjdBI4H6xtAtjR4utkwRG4PmuBYoHykx03NuQIDAQAB”

這樣再加到 Bind 的 Domain 設定中,如果是代管的就只要複製 TXT 之後雙引號之間的內容(包含雙引號)再新增 TXT 的值,host 部份就要設 _domainkey 跟 mail._domainkey 兩筆!

DNS 重起之後就可以用 nslookup 來測試下看看是不是可以正常 (如果沒有 nslookup 指令就是沒安裝 bind-tools 下 emerge bind-tools 來安裝即可)

# nslookup
> set type=txt
> _domainkey.siryeh.com

 就應能查到像下面這樣 

Server:           168.95.1.1
Address:        168.95.1.1#53

_domainkey.siryeh.com   text =

                  "t=y; o=-"

再查 selector._domainkey.mydomain.com 的方式,接續上面 nslookup 的查詢 

> mail._domainkey.siryeh.com
Server:           168.95.1.1
Address:        168.95.1.1#53

mail._domainkey.siryeh.com   text = "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDYc+bsCO0e+yhMMXIvDtV2oHLrLEDyuIySuBf5o0CjElJ65pBfBk2ZTO82CiscI3r vlu1RsVU3/+cikFIjCBzcyP4fPQZ/E0Vx9Lg1a3wozc02/wnQ8yTldup5CvmApjOvF/vSYjdBI4H6xtAtjR4utkwRG4PmuBYoHykx03NuQIDAQAB"

看到 Server 是用 168.95.1.1 是用中華電信的 DNS,如果這樣都查得到就表示較沒有問題,不過有可能不是一下就可以查到,那也可以試試 server 127.0.0.1 就是 DNS 本機先查看看,中華電信查不到的話就需要等一天昨右就會更新上去了,或者用這個網址來測試 http://domainkeys.sourceforge.net/policycheck.html [2] 在 DomainKey Policy Record Tester 下面的地方輸入自己的 Domain 按 Submit 正常會出現下面這樣






Testing siryeh.com

New test [3]

Policy TXT=t=y; o=-

This policy record appears valid.


















Tag Value Explanation
o - Domain signs *ALL* email
t y Domain is in test mode
 再來就是設定 exim.conf 加入私鑰與 selector 的設定,用 vi 來編輯

# vi /etc/exim/exim.conf
/remote_smtp
 先找到這個 remote_smtp:
remote_smtp:
  driver = smtp

官網說不設定 dk_canon 也是 simple,但不知道另一個 nofws 是表示什麼,看 Google 跟 Yahoo 都用 nofws 那就用吧!

remote_smtp:
  driver = smtp
  dk_selector = mail
  dk_private_key = /etc/exim/dk/mail.siryeh.com
  dk_canon = nofws

用 :wq 存檔離開,再重起 exim 後就可以寄看看 Yahoo 的信箱 ,再注意一下 log,如果出現下面這個錯誤表示沒有成功

SMTP error from remote mail server after initial connection: host mx1.mail.tw.yahoo.com [203.188.197.9]: 453 Mail from 122.116.222.116 not allowed - [90]

 或這個錯誤

said: 451 Message temporarily deferred - [90] (in reply to end of DATA command))

這個就要查一下 DNS 是否生效囉!! 如果上述用 nslookup 都可以正常查詢到的話應該是沒有問題才是! 在 Yahoo 的寄件人欄位後也會出現一個小圖示,滑鼠指上去會寫「此寄件人已經過 DomainKeys 的核查」

都還不行可以先寄到 gmail 看一下信的表頭, 看看 domainkeys 是不是 =pass (ok)

Authentication-Results: mta193.mail.tp2.yahoo.com from=siryeh.com; domainkeys=pass (ok); from=siryeh.com; dkim=neutral (no sig)
結語:

有加 DomainKeys 這裡只是寄出時讓 Yahoo 來檢查,之後會不會有更多的人用 DomainKeys 來檢查廣告信就不可預知的了,不過發現加了之後寄 Yahoo 的信變快許多!!
之後有空再試看看寄來的信在 Mail Server 上也做檢查!! 讓討厭的廣告信更少一些! 雖然現在一星期不到一封,反而是 DenyHost 的通知很多!!

參考資料 http://wiki.exim.org/DomainKeys [4]

 

Rating

No one has rated this item yet - be the first!

1 is the lowest and 5 the higher score.

 
Links
  1. http://siryeh.com/index.php?module=News&func=view&prop=Main&cat=33
  2. http://domainkeys.sourceforge.net/policycheck.html
  3. http://domainkeys.sourceforge.net/policycheck.html
  4. http://wiki.exim.org/DomainKeys
  5. http://siryeh.com/javascript:ratingsratefromslider('News','15',20);
  6. http://siryeh.com/javascript:ratingsratefromslider('News','15',40);
  7. http://siryeh.com/javascript:ratingsratefromslider('News','15',60);
  8. http://siryeh.com/javascript:ratingsratefromslider('News','15',80);
  9. http://siryeh.com/javascript:ratingsratefromslider('News','15',100);