ヘッダーイメージ 本文へジャンプ
日記

2011年04月27日 09時40分
SPFレコードのチェック
メールは「さくらのVPS」を使わせてもらって、独自ドメインで運用しているのですが
自分のアドレスを名乗るSPAMメールがちょくちょく着ます

「なんとかならんのか」

と思っていたのですがDNSにSPFレコードとか言うのを追加すれば
そのドメインがメールサーバーとして認証しているサーバーを指定できるらしいです

まずは、自分のサイトの認証しているサーバーの設定

DNSサーバーに TXT レコードを追加するだけのようです

「@ TXT v=spf1 a mx ~all」

こんな感じのレコードを追加すればとりあえずOKみたいです
(~all では無くて -all の方がよいかもしれません・・・)

これで、他のサイトで、SPFのチェックをしているところへは、アドレスを詐称してのメールは飛ばなくなる事が期待できます
※後日わかりましたが
 ~all は許可されているサーバー以外は softfail =詐称されている可能性ありで
 -all は許可されているサーバー以外は fail =詐称されている
 なので、-all で無いと意味がないかもしれません
 ちなみに ?all は不明となって +all は全て許可になります

次は、自サイトでのフィルターです

sid-milter ってのを使えば良いみたいなので、まずはダウンロード
http://sourceforge.net/projects/colinux/files/ で sid-milter で検索してダウンロードしました
私は Sendmail を使っているのですが、MILTER のオプションが付いてコンパイルされている必要があるようですが、CentOS5.5 のSendmail はオプションが付いてコンパイルされているようです

#sendmail -d0.1
Version 8.13.8
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
TCPWRAPPERS USERDB USE_LDAP_INIT
※以下略(Ctrl+Cで終了)

ダウンロードした sid-milter を適当なディレクトリーに展開して ./Build を流したのですが
どうやら libmilter が無いって怒っているみたい・・・

「なんだそりゃ?」と思って調べると、sendmail のライブラリーみたいなので
ソースをダウンロードしてコンパイルしました
ftp://ftp.sendmail.org/pub/sendmail/ から、使っているバージョンのソースをダウンロードして
適当なところに展開し libmilter のフォルダーに行って
./Build
./Build install

で sid-milter のフォルダーに戻って ./Build -c
(オプション付けるとリビルドするみたいです。念のため・・・)

今度はリンクでエラーが出るみたいです
家のVMでビルド`成功したのと比べると最後のコンパイルオプションに
-ldb -lresolv -lcrypt -lnsl
が無いのですが -ldb は本当に無いのでそれ以外の3つを付けてコンパイル
(Build スクリプトのオプションに追加すればよいのでしょうが・・・)

sid-filter のディレクトリーに行って(obj.Linux・・・/sid-filter だと思います)
エラーになっている最後の「cc -o sid-filter ・・・・」って言うのをコピーペーストして
最後に「 -lresolv -lcrypt -lnsl 」を追加してコンパイル

「通った!」

念のため元の sid-milter のディレクトリーに戻って ./Build (オプションは付けない)

で、インストール
./Build install

またエラー・・・今度は /usr/man/man8 のディレクトリーが無いって!(作ってよ!)
ディレクトリーを作って再度インストール

で、無事インストールは終了

後は設定ですが、sid-milter をビルドすると sid-filter ができるんですね!
ちょっとはまりました

起動スクリプトが付いていなかったので spamass-milter のをコピーして
/etc/sysconfig/sid-milter/etc/init.d/sid-milter を作成
(リンクしておいたのでよかったら使ってください)

/etc/inid.d/sid-milter の頭の方のコメント
# chkconfig: - 79 20
の79は sendmail より先に起動した方が良いかな?と思ってspamass-milter とは変えたのですが、別に後から上がってもよいみたいなので80でも良いかも・・・

そのあと、自動起動の設定
chkconfig sid-milter on

sendmail.mc に1行追加
INPUT_MAIL_FILTER(`sid-filter',`S=inet:8891@localhost')dnl

sendmail.cf の作成
/etc/mail フォルダーで make するだけ

最後にサービスの起動
service sid-milter start
service sendmail restart

これで、メールのヘッダーに
「Authentication-Results: ホスト名; sender-id=pass header.from=アドレス; spf=pass smtp.mfrom=アドレス」
みたいなヘッダーが付きます

しばらくは様子を見ようと思いますが
/etc/sysconfig/sid-milter の起動パラメーターに 「-rレベル」 を付けると
ヘッダーのsender-id と spf の具合でフィルターが掛けられるそうです

レベルの内容は
0:すべてのメールを受信する(ディフォルト)
1:SenderIDとSPFの認証結果の両方が「fail」の場合メールを永続的に(5xxで)受信拒否する
2:SenderIDかSPFのどちらかの認証結果が「fail」の場合メールを永続的に(5xxで)受信拒否する
3:SenderIDかSPFのどちらかの認証結果が「pass」ではない場合メールを永続的に(5xxで)受信拒否する
4:SenderIDかSPFの両方の認証結果が「pass」ではない場合メールを永続的に(5xxで)受信拒否する

レベルの設定はポリシーに従って!私は[-r1]か「-r2]ぐらいかな・・・



・CentOSの設定
・SPFレコードのチェック
・CGI が動かなくなる
・CentOSのバージョンアップ
・PostgreSQLのバージョンアップではまった
・Postgresql の互換性
・Java Web Start の互換性(?)

カテゴリー:日記
目次へ戻る


フッターイメージ