Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

Postfix 與 DomainKeys
post by tommy @ 21 八月, 2006 15:51
Postfix 在 2.3 之後, 支援 sendmail 的 milter 功能. 所以, 原本一些 sendmail 使用的 milter, 現在也可以在 postfix 中使用了.

DomainKeys 是 Yahoo 所提出用來檢驗發信者的 email 是否來自某個 domain. 當你收到某個被驗證過的信件時, 在讀取該信件時, 就會顯示 "網域認證鑰匙確認這信件寄出自 xxx.com.xx" 之類的訊息.

現在, 透過 domainkeys-milter, 也可以讓我們自己的 mail server 寄信到有 Yahoo 的信箱時, 會出現這個訊息.

下載這個軟體後, 只要 ./Build; ./Build install 之後, 就算安裝完成了. 詳約的設定可以參考這篇中文的說明, 與這篇英文的說明.  當你的 DNS 設定生效之後, 在發信的信件中, 就會把加上 DomainKey-Signature 這個 header, 而收到信件的程式, 就可以依據這個 header 的內容, 來判斷信件的出處是否正確.

除了 Yahoo 的信箱外,  也可以寄到下列幾個信箱來檢查:

這些信箱在收到信之後, 會回覆一封信件給你, 說明檢查的結果. 不過... 在我的測試中, 並非上述所有的檢查都正確, 因為同一封信, 在 Yahoo 時成功的, 但是有些會失敗.

另外, 在搭配 postfix 使用時, 要注意這兒所提示的修改.

或是抓這個 patch 回去使用:

diff -Nur dk-milter-0.4.1.orig/dk-filter/dk-filter.c dk-milter-0.4.1/dk-filter/dk-filter.c
--- dk-milter-0.4.1.orig/dk-filter/dk-filter.c 2006-05-20 05:42:05.000000000 +0800
+++ dk-milter-0.4.1/dk-filter/dk-filter.c 2006-08-22 08:45:33.615662379 +0800
@@ -2076,6 +2076,13 @@
dfc = cc->cctx_msg;
assert(dfc != NULL);

+ /* Determine the job ID for logging. */
+ if (dfc->mctx_jobid == 0 || strcmp(dfc->mctx_jobid, JOBIDUNKNOWN) == 0) {
+ char *jobid = smfi_getsymval(ctx, "i");
+ if (jobid != 0)
+ dfc->mctx_jobid = jobid;
+ }
+
/* get hostname; used in the X header and in new MIME boundaries */
hostname = smfi_getsymval(ctx, "j");
if (hostname == NULL)
 

補充說明一下, 在我家的 Debian Etch 中, 我安裝的是 sid 中的 postfix 2.3.2 x86-64 版本. 在配合 dk-filter 時, 偶而會發生 dk_getsig(): resource unavailable: Cannot allocate memory 這個錯誤. 我查了一下程式, 居然是在一個 b64len / 60 的運算中, 會隨機發生錯誤, 產生一個負數, 所以後頭的記憶體 allocate 的動作就會失敗. 後來我是把 libdk/libdk.c 的編譯參數 -O2 這個最佳化的參數移除, 好像就正常了. 到目前似乎沒有再碰過同樣的錯誤了. 如果你有相同的問題, 可以參考看看.

 

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
authimage

迴響

  

Bad Behavior 已經阻擋了 57 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS