#navi #boxdate ** XMail Server の SPF(Sender Policy Framework) 対応 [#gb5fff4d] RIGHT:&tag(自宅サーバー,SPF,メールサーバー,プログラミング); xpWiki のプラグイン moblog では、メールによってページを作成することができますが、認証判断は送信元メールアドレスのみで行っています。 できるだけ簡単に投稿できるようにしたかったので、敢えて Subject や本文にパスワードを入れたりする仕様にしなかったのですが、他人の成りすましによる偽投稿が可能なので、なんとか防がなければいけません。 その、動作検証するのに SPF 環境が必要なので、自宅サーバーの XMail Server (Win32) に SPF フィルターを導入しました。 調べてみると、XMail の Web サイトに、xm-spf.pl という perl のフィルターがありましたので、導入してみましたが上手く動きません。早速、ソースを眺めてみましたが、久々の perl なので、結構手間取りましたが、数箇所おかしなところがあったので、修正し、Mail Header に "Received-SPF:" を付け加えるフィルターも書いてみました。 Mail::SPF::Query のレスポンスが "fail" だった場合、XMail に終了コード(4)を返しますので、問答無用で受け取り拒否します。 ** Mail::SPF::Query が必要です [#pb34a3f6] サーバー機のコマンドプロンプトで >cpan >install Mail::SPF::Query として、インストールして置いてください。 ** フィルター定義 [#y0e6d6f9] - SMTP RCPT 後処理 フィルター (Mail::SPF::Query を使用して判定します) -- &ref(spf_rcpt.pl); -- フィルター定義 |起動コマンド |最初の引数 |その他の引数 |h |C:\Perl\bin\perl.exe |[絶対パス]/spf_rcpt.pl|--file $(FILE) --tmp c:/winnt/temp| |C:\Perl\bin は環境に合わせる| |--tmp の引数は、システムのテンポラリディレクトリ| - SMTPセッション終了後処理 (Mail Header に "Received-SPF: [判定結果]" を書き加えます。) -- &ref(spf_in.pl); -- フィルター定義 |送信者アドレス|あて先アドレス|リモートIP|ローカルIP|起動ファイル|起動コマンドと引数|h |* |* |0.0.0.0/0 |0.0.0.0/0 |spf_in.tab |"C:\Perl\bin\perl.exe" "[絶対パス]/spf_in.pl" "$(FILE)" "c:/winnt/temp"| | | | | | |C:\Perl\bin は環境に合わせる&br;c:/winnt/temp は SMTP RCPT 後処理 フィルターと合わせる| -- SpamAssassin を利用しているなら、spf_in.tab を SpamAssassin の定義の前に持ってくると、SpamAssassin で Header 判定できるようになります。 *** プログラムソース [#m9d3a0dd] #code(spf_rcpt.pl) #code(spf_in.pl) #navi
(This host) = https://xoops.hypweb.net