2008年1月9日 星期三

Postfix > Extmail裡webmail不受smtpd_recipient_restrictions控制的問題

在設好Extmail,讓它能和Postfix正常運作後,發現了一個問題,用smtp連線的用戶能正常受到Postfix中main.cf裡面的smtp_recipient_restrictions控制,但經webmail發出去的信卻好像不受smtp_recipient_restrictions控制,可能是安裝Extmail時沒有設定好,但又找不到問題所在.於是從測試郵件中的header尋找線索.

在一輪測試後發現一般用smtp連線所發出去的郵件是經過master.cf裡smtp inet那個transport出去的,而webmail發的郵件是從pickup出去的,也許問題就出在這裡,pickup沒有調用main.cf裡的smtp_recipient_restrictions.

於是嘗試修改master.cf, 在pickup這個transport下加上options:
-o myhostname=pickup.example.com
-o content_filter=smtp:[127.0.0.1]:25
其中myhostname只是為了在郵件header中方便確認經過pickup的位置及時間, 可以不加,example.com是隨便輸入的,而content_filter會把郵件傳送給smtp (注意是smtp unix, 而不是smtp inet),然後會以smtp protocol送到127.0.0.1:25中,然後就會經過smtpd_recipient_restrictions處理.

若不直接丟給port 25,中間還可以經過其他的處理,如在master.cf中加上127.0.0.1:10026這個transport來處理
127.0.0.1:10026 inet n - n - - smtpd
-o myhostname=redirect.example.com
-o content_filter=[127.0.0.1]:10024
10024是我的Postfix上amavisd的port, 這會把信丟給amavisd, 同樣方法可以針對不同的transport在中間加多層選項及防毒軟件.

沒有留言 :