Postfix+Mailscanner

這個版面主要討論 debian 在 server 端的應用問題, server 種類繁多..舉凡 Web Server 、 File Server、 DHCP Server..等等。

版主: 阿信

re:Postfix+Mailscanner

文章Tetralet » 週四 11月 04, 2004 1:16 pm

那可否再請教一個問題?


我記得如果使用 spamc/spamd 來過濾郵件時,
(我是用 content_filter + pipe 來呼叫 SpamAssassin 的)
如果 SA 出了問題,因而無法進行 pipe 這個動作,
那麼這封信就會人間蒸發,
直接消失在空氣中了。

而若是使用 amavisd-new 則比較沒有問題;
它們會被留在 Mail Queue 裡。


有試著比較過使用 Before-Queue filter 和 After-Queue filter 這兩種呼叫 amavisd-new 的作法嗎?

amavisd-new 的官方網站上所介紹的是 After-Queue filter 這個做法,
信會先被收下來,然後使用 amavisd-new 來過濾郵件;
如果 amavisd-new 出了問題,
它們會被留在本機的 Mail Queue 裡面。

而 Before-Queue filter 這個則是在信進入 Mail Queue 之前,
會先使用 amavisd-new 來過濾郵件;
如果 amavisd-new 出了問題,
這封信會被丟回去並傳送給對方的 Server 一個錯誤訊息。
這種作法個人認為會比較妥當;
因為對方能明確得知是這邊的 Mail Server 出了問題。
但是可能會比較浪費網路頻寬,
因為在 amavisd-new 出了問題時,同一封信對方的 Server 可能會重寄好幾次。


您覺得如何呢?
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

re:Postfix+Mailscanner

文章twu2 » 週四 11月 04, 2004 2:50 pm

我之前用 after-queue-filter, 目前用 before-queue-filter.
前者問題較少, 後者有些問題需要解決:

1. 整個 smtp 傳送時間變長. 在收到 data 指令後, postfix 就會連到 filter, 同步傳送 data 給 filter, 一直等到 filter 傳回結果, 才會回覆給 client 端. 此時, 如果 client 的 timeout 設定過短, 就會在等待的時候 timeout, 這時, 對寄信的 client 而言, 會認為信沒有送成功, 在之後會繼續重送. 但是實際上, filter 在處理之後, 會認為這封信件成功收下, 再轉寄回給 postfix 做後續處理, 所以實際上這封信如果 client 一直送... 對方就會收到同一封信好幾次.
2. amavisd-new 有時會有問題, 在 filter 的過程那個 process 可能會消失. 我無法確定是 amavisd-new 的問題, 還是 perl 的 Net::Server 造成的. 如果發生這個情形. 就會造成 client timeout 後重送. 不過不會有前述重覆信件的問題, 只是會再使用一次頻寬再送一次. (我這兒之前一天會出現十次左右)

雖然有這兩個問題, 可是我後來還是決定使用 before-queue filter 來直接 reject 掉信件.

對於第一個問題的處理, 應該只有發生在使用 MUA 直接連上來寄信才會發生. 一般 MTA 在轉送時, 並不會那麼快 timeout. 所以請我的主機上頭的使用者修改他們 timeout 的時間就可以避免.

至於第二個問題, 我是自己用 php 寫一個 smtppipe 的中介程式做 before-queue-filter.
也就是 postfix 收 port 25 收信, 轉給 10023 的 smtppipe, 再轉給 10024 的 amavisd-new, 如果 amavisd-new 出現問題, 就直接回覆 postfix 250 ok 的訊息. 然後把信放到自己的 queue 之中, 再嘗試連到 amavisd-new 轉送, 就類似 after-queue filter 的動作. 如果沒有問題, amavisd-new 就會再轉回 10025 的 postfix 會分發的動作.

程式可以在 http://www.teatime.com.tw/~tommy/linux/smtppipe.tgz 抓取.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

Re: re:Postfix+Mailscanner

文章Tetralet » 週四 11月 04, 2004 4:52 pm

twu2 寫:我之前用 after-queue-filter, 目前用 before-queue-filter.
前者問題較少, 後者有些問題需要解決:

1. 整個 smtp 傳送時間變長. 在收到 data 指令後, postfix 就會連到 filter, 同步傳送 data 給 filter, 一直等到 filter 傳回結果, 才會回覆給 client 端. 此時, 如果 client 的 timeout 設定過短, 就會在等待的時候 timeout, 這時, 對寄信的 client 而言, 會認為信沒有送成功, 在之後會繼續重送. 但是實際上, filter 在處理之後, 會認為這封信件成功收下, 再轉寄回給 postfix 做後續處理, 所以實際上這封信如果 client 一直送... 對方就會收到同一封信好幾次.
2. amavisd-new 有時會有問題, 在 filter 的過程那個 process 可能會消失. 我無法確定是 amavisd-new 的問題, 還是 perl 的 Net::Server 造成的. 如果發生這個情形. 就會造成 client timeout 後重送. 不過不會有前述重覆信件的問題, 只是會再使用一次頻寬再送一次. (我這兒之前一天會出現十次左右)

雖然有這兩個問題, 可是我後來還是決定使用 before-queue filter 來直接 reject 掉信件.

既然如此,
那可否請您說明一下,
為什麼您還是選擇使用 before-queue filter 呢?

twu2 寫:對於第一個問題的處理, 應該只有發生在使用 MUA 直接連上來寄信才會發生. 一般 MTA 在轉送時, 並不會那麼快 timeout. 所以請我的主機上頭的使用者修改他們 timeout 的時間就可以避免.

原來還有 timeout 這個問題呀...

我看過有人使用限制 smtpd_client_connection_count_limit 數量的方式來減輕這個狀況:
代碼: 選擇全部
smtp      inet  n       -       n       -       8       smtpd
                                                        -o smtpd_proxy_filter=127.0.0.1:10024
                                                        -o smtpd_client_connection_count_limit=4

不知對此是否有所幫助?

twu2 寫:至於第二個問題, 我是自己用 php 寫一個 smtppipe 的中介程式做 before-queue-filter.
也就是 postfix 收 port 25 收信, 轉給 10023 的 smtppipe, 再轉給 10024 的 amavisd-new, 如果 amavisd-new 出現問題, 就直接回覆 postfix 250 ok 的訊息. 然後把信放到自己的 queue 之中, 再嘗試連到 amavisd-new 轉送, 就類似 after-queue filter 的動作. 如果沒有問題, amavisd-new 就會再轉回 10025 的 postfix 會分發的動作.

程式可以在 http://www.teatime.com.tw/~tommy/linux/smtppipe.tgz 抓取.

感謝您的指教! :y2_16:
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

Re: re:Postfix+Mailscanner

文章twu2 » 週四 11月 04, 2004 6:27 pm

Tetralet 寫:為什麼您還是選擇使用 before-queue filter 呢?


因為這樣對方會直接收到 reject 的信件 (由與我連線的 MTA 送出, 不是由我的主機送出).
使用 after-queue filter, 對方會認為信件正常送達. 當然, 也可以設定由我的 MTA 送出 reject 相關的信件, 但是.... 通常 email address 是有問題的, 只會造成我的 queue 塞一堆這類的信件.

Tetralet 寫:原來還有 timeout 這個問題呀...
我看過有人使用限制 smtpd_client_connection_count_limit 數量的方式來減輕這個狀況:
不知對此是否有所幫助?


沒什麼關係.
這個參數只是限制同一個時間連線進來的 smtp 數量.
我所說的 timeout 是指 amavisd-new 在處理 virus scan 與呼叫 spamassassin 時, 仍可能超過時間. 因為多數的 timeout 有可能只有 60 秒, 但對於較大的檔案, spamassassin 就可能處理超過 60 秒.

PS. 在我的主機上頭, 一封 300K 上下的 email, spamassassin 就可能處理超過 60 秒.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

Re: re:Postfix+Mailscanner

文章Tetralet » 週五 11月 05, 2004 2:26 am

twu2 寫:
Tetralet 寫:為什麼您還是選擇使用 before-queue filter 呢?


因為這樣對方會直接收到 reject 的信件 (由與我連線的 MTA 送出, 不是由我的主機送出).
使用 after-queue filter, 對方會認為信件正常送達. 當然, 也可以設定由我的 MTA 送出 reject 相關的信件, 但是.... 通常 email address 是有問題的, 只會造成我的 queue 塞一堆這類的信件.

呀!原來如此!

twu2 寫:
Tetralet 寫:原來還有 timeout 這個問題呀...
我看過有人使用限制 smtpd_client_connection_count_limit 數量的方式來減輕這個狀況:
不知對此是否有所幫助?


沒什麼關係.
這個參數只是限制同一個時間連線進來的 smtp 數量.
我所說的 timeout 是指 amavisd-new 在處理 virus scan 與呼叫 spamassassin 時, 仍可能超過時間. 因為多數的 timeout 有可能只有 60 秒, 但對於較大的檔案, spamassassin 就可能處理超過 60 秒.

所以為了怕 amavisd-new 處理不來,
因而限制了連線進來的 smtp 數量,
讓 Amavisd-new 的 Loading 能夠稍稍平緩一些。

我覺得應該還是稍稍有一些幫助吧?

twu2 寫:PS. 在我的主機上頭, 一封 300K 上下的 email, spamassassin 就可能處理超過 60 秒.

這麼誇張? :y2_14:

我記得在 Amavisd-new 裡可以設定,如果信件在某個大小以上就可以不經過 SpamAssassin 處理。
打開這個選項應該可以把 SpamAssassin 的 Loading 再降低一些...


我有看過提供 Anti-Spam 的硬體防火牆。(友旺的?)
裡面我猜用的也是 SpamAssassin。
但效能似乎還不錯?
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

Re: re:Postfix+Mailscanner

文章twu2 » 週五 11月 05, 2004 10:45 am

Tetralet 寫:所以為了怕 amavisd-new 處理不來,
因而限制了連線進來的 smtp 數量,
讓 Amavisd-new 的 Loading 能夠稍稍平緩一些。


不太正確.
那個參數是限制了 smtp 連線數量沒錯.
但主要原因是因為你的 amavisd-new 同一時間執行的 process 是固定的. 是由 amavisd.conf 中所設定的. 也就是你同一時間可以連線到 amavisd-new 的數目是固定的.

如果沒有在 postfix 中限制接受 smtp 的數量, 會造成 postfix 在超出這個數目時, 無法連線到 amavisd-new, 而將信件踢回 (應該是 service unavailable 之類的 code).
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

Re: re:Postfix+Mailscanner

文章Tetralet » 週五 11月 05, 2004 11:31 am

twu2 寫:
Tetralet 寫:所以為了怕 amavisd-new 處理不來,
因而限制了連線進來的 smtp 數量,
讓 Amavisd-new 的 Loading 能夠稍稍平緩一些。


不太正確.
那個參數是限制了 smtp 連線數量沒錯.
但主要原因是因為你的 amavisd-new 同一時間執行的 process 是固定的. 是由 amavisd.conf 中所設定的. 也就是你同一時間可以連線到 amavisd-new 的數目是固定的.

如果沒有在 postfix 中限制接受 smtp 的數量, 會造成 postfix 在超出這個數目時, 無法連線到 amavisd-new, 而將信件踢回 (應該是 service unavailable 之類的 code).

我了解了。

感謝您盡心回覆! :y2_16:
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

文章debian 新手 » 週一 4月 24, 2006 8:13 pm

當中顯示了....mailscanner無法把postfix叫起來
我用3.1 stable版本

Apr 24 19:28:00 mail dovecot: Killed with signal 15
Apr 24 19:28:00 mail spamd[2265]: server killed by SIGTERM, shutting down
Apr 24 19:29:06 mail spamd[2263]: spamd starting
Apr 24 19:29:07 mail spamd[2265]: server started on port 783/tcp (running version 3.0.3)
Apr 24 19:29:07 mail spamd[2265]: server successfully spawned child process, pid 2293
Apr 24 19:29:07 mail spamd[2265]: server successfully spawned child process, pid 2294
Apr 24 19:29:07 mail spamd[2265]: server successfully spawned child process, pid 2295
Apr 24 19:29:07 mail spamd[2265]: server successfully spawned child process, pid 2296
Apr 24 19:29:07 mail spamd[2265]: server successfully spawned child process, pid 2297
Apr 24 19:29:08 mail MailScanner[2300]: MailScanner E-Mail Virus Scanner version 4.41.3 starting...
Apr 24 19:29:08 mail MailScanner[2300]: Read 120 hostnames from the phishing whitelist
Apr 24 19:29:08 mail dovecot: Dovecot starting up
Apr 24 19:29:09 mail MailScanner[2300]: Using locktype = flock
Apr 24 19:31:18 mail MailScanner[2557]: MailScanner E-Mail Virus Scanner version 4.41.3 starting...
Apr 24 19:31:18 mail MailScanner[2557]: Read 120 hostnames from the phishing whitelist
Apr 24 19:31:18 mail MailScanner[2557]: MailScanner child caught a SIGHUP
Apr 24 19:31:21 mail postfix/postfix-script: fatal: the Postfix mail system is not running
Apr 24 19:31:21 mail dovecot: Killed with signal 15
Apr 24 19:31:21 mail spamd[2265]: server killed by SIGTERM, shutting down
Apr 24 19:32:27 mail spamd[2263]: spamd starting
Apr 24 19:32:28 mail spamd[2265]: server started on port 783/tcp (running version 3.0.3)
Apr 24 19:32:28 mail spamd[2265]: server successfully spawned child process, pid 2293
Apr 24 19:32:28 mail spamd[2265]: server successfully spawned child process, pid 2294
Apr 24 19:32:28 mail spamd[2265]: server successfully spawned child process, pid 2295
Apr 24 19:32:28 mail spamd[2265]: server successfully spawned child process, pid 2296
Apr 24 19:32:28 mail spamd[2265]: server successfully spawned child process, pid 2297
Apr 24 19:32:29 mail MailScanner[2300]: MailScanner E-Mail Virus Scanner version 4.41.3 starting...
Apr 24 19:32:29 mail MailScanner[2300]: Read 120 hostnames from the phishing whitelist
Apr 24 19:32:29 mail dovecot: Dovecot starting up
Apr 24 19:32:30 mail MailScanner[2300]: Using locktype = flock
debian 新手
 

上一頁

回到 debian server

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron