FreeBSDでSendmailのMilter APIとCyrus IMAPを使ってspam対策を行う方法です。
方針は以下の通り。
sendmail.mcに以下を追加します。
INPUT_MAIL_FILTER(`sid-filter', `S=local:/var/run/sid-filter, F=T, T=R:2m') INPUT_MAIL_FILTER(`dkim-filter', `S=local:/var/run/milteropendkim/socket, F=T, T=R:2m') INPUT_MAIL_FILTER(`spamass-filter', `S=local:/var/run/spamass-milter.sock, F=T, T=R:2m')
フラグの意味
| F= | |
|---|---|
| R | フィルタが利用できない場合はコネクションを拒否する |
| T | フィルタが利用できない場合はコネクションを一時エラーにする |
| なし | フィルタが利用できない場合はフィルタなしの動作を行う |
| T= | |
|---|---|
| C | フィルタへの接続のタイムアウト(デフォルト5分) |
| S | MTAからフィルタへの送信タイムアウト(デフォルト10秒) |
| R | フィルタから応答読み出しタイムアウト(デフォルト10秒) |
| E | フィルタへメッセージの最後まで送信してから、最終確認を待っている間のタイムアウト(デフォルト5分) |
sendmailに設定を反映させます。
# cd /etc/mail # make sendmail.cf # /etc/rc.d/sendmail restart
ソーススクリプト(.sieve.src)を書きます。
require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
fileinto "INBOX.spam";
}
elsif header :contains "Received-SPF" "softfail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "spf=softfail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "spf=fail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "sender-id=softfail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "sender-id=fail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "dkim=softfail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "dkim=hardfail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "domainkeys=softfail" {
fileinto "INBOX.spam";
}
elsif header :contains "Authentication-Results" "domainkeys=hardfail" {
fileinto "INBOX.spam";
}
ソーススクリプトをバイトコンパイルします。
% /usr/local/cyrus/bin/sievec $HOME/.sieve.src $HOME/.sieve
|
Copyright ©2000-2018 T.Hiraga <hiraga@next-hop.net> All Rights Reserved. Last modified: $Date: 2016/02/21 16:11:05 $ |