[轉載]在 Exim 上安裝加 DomainKeys 解決寄給 Yahoo 信箱問題

什麼?Gentoo 裝不起來?核心怎麼編?安裝失敗等問題?來這裡求救吧!

版主: Forums Team

[轉載]在 Exim 上安裝加 DomainKeys 解決寄給 Yahoo 信箱問題

文章TyroneYeh » 週二 6月 02, 2009 12:00 pm

出處 http://siryeh.com/index.php?module=News ... lay&sid=15
作者 TyroneYeh

原本寄到 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+yhMMXIvDtV2oHLrLEDyuIySuBf5o0CjElJ65pBfBk2ZTO82CiscI3rvlu1RsVU3/+cikFIjCBzcyP4fPQZ/E0Vx9Lg1a3wozc02/wnQ8yTldup5CvmApjOvF/vSYjdBI4H6xtAtjR4utkwRG4PmuBYoHykx03NuQIDAQAB"
不過這個部份不能直接用,要修改一下像下面這樣,要有兩行,且 _domainkey 要放到前面

_domainkey.siryeh.com. IN TXT "t=y; o=-"
mail._domainkey.siryeh.com. IN TXT "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDYc+bsCO0e+yhMMXIvDtV2oHLrLEDyuIySuBf5o0CjElJ65pBfBk2ZTO82CiscI3rvlu1RsVU3/+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+yhMMXIvDtV2oHLrLEDyuIySuBf5o0CjElJ65pBfBk2ZTO82CiscI3rvlu1RsVU3/+cikFIjCBzcyP4fPQZ/E0Vx9Lg1a3wozc02/wnQ8yTldup5CvmApjOvF/vSYjdBI4H6xtAtjR4utkwRG4PmuBYoHykx03NuQIDAQAB"
看到 Server 是用 168.95.1.1 是用中華電信的 DNS,如果這樣都查得到就表示較沒有問題,不過有可能不是一下就可以查到,那也可以試試 server 127.0.0.1 就是 DNS 本機先查看看,中華電信查不到的話就需要等一天昨右就會更新上去了,或者用這個網址來測試 http://domainkeys.sourceforge.net/policycheck.html 在 DomainKey Policy Record Tester 下面的地方輸入自己的 Domain 按 Submit 正常會出現下面這樣

Testing siryeh.com
New test
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
改成這樣,這裡有一個地方跟 wiki 上面不太一樣就是 dk_canon 這裡值為 simple,官網說不設定 dk_canon 也是 simple,但不知道另一個 nofws 是表示什麼

remote_smtp:
driver = smtp
dk_selector = mail
dk_private_key = /etc/exim/dk/mail.siryeh.com
dk_canon = simple
用 :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

Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of xxxx@siryeh.com designates 122.116.222.116 as permitted sender) smtp.mail=xxxx@siryeh.com; domainkeys=pass header.From=xxxx@siryeh.com
結語:
有加 DomainKeys 這裡只是寄出時讓 Yahoo 來檢查,之後會不會有更多的人用 DomainKeys 來檢查廣告信就不可預知的了,不過發現加了之後寄 Yahoo 的信變快許多!!
之後有空再試看看寄來的信在 Mail Server 上也做檢查!! 讓討厭的廣告信更少一些! 雖然現在一星期不到一封,反而是 DenyHost 的通知很多!!

參考資料 http://wiki.exim.org/DomainKeys
--
Best Respects,
TyroneYeh
TyroneYeh
 
文章: 156
註冊時間: 週一 3月 20, 2006 3:19 pm

回到 Gentoo 安裝

誰在線上

正在瀏覽這個版面的使用者:Google [Bot] 和 2 位訪客

cron