ページを選択

ストブロ

Coffee's Blog.

第12回「迷惑メール対策 後編」

執筆者 | 2014年04月20日 | さくらのレンタルサーバー, ストブロ, レンタルサーバーforビギナーズ

※第16回「maildrop、mailfilterによるメール振り分け 完成版」で、もう一度詳しく説明しています。そちらもご覧下さい。

.mailfilter(maildrop)の日本語マッチング用辞書は「文字コード」に問題がありました。

研究内容:
マッチング用辞書ファイルに何かの文字列を入れると、エラーで受信が行われなくなりました。
削除すると元に戻りますが、対象となる文字が意外と多くて原因が特定出来ない状態に。
とにかく文字が何か悪さをしているのだと思い、文字を()で囲ってみたり、””で囲ってみたりするも効果無し。

「文字のエンコード」を原因の主なキーワードと仮定し、様々調べる・・・も有力な情報なし。

その中で偶然「ダメ文字」という言葉を発見しました。
これはShift-jis等の2バイト目の文字がプログラム上の特定の意味を持つ記号になっている場合に発生する問題だと分かりました。
例えば「ソフト」の「ソ」は2バイト目が「0x5c」となりこれは「\(実際には半角ですが)」となるんだそうです。

難しい事は置いといて、この様な問題から何気なく登録した日本語が多くのダメ文字を含んで居たためその都度問題を引き起こしていたという事になります。

解決するにはどうするの?:
どういう訳かは分かりませんが、私がmailfilterの研究をしようと様々な情報を見に行っても、殆どの場合「ファイルの文字エンコードをShift-JISにするべし!」と書かれていました。
ちなみにさくらインターネットのレンタルサーバーの場合、サーバーの文字コードはEUC-JPだそうです。メールは様々な形式で来るし、私はPHPやHTML等をUTF8で書いています。

じゃあ、なんでシフトJISの必要性があるんでしょうか?
むー、全く分かりません。
どの情報を見ても、こういう理由でシフトJISが推奨されますという記述はないのです。

ダメ文字の言葉を知ってから、ダメ文字について検索すると「UTF8ではこれらの問題はありません」というのをよく見掛けます。
HTMLでもUTF8だし・・・問題無いかな?と思い、辞書ファイルをUTF8に変更しました。

結果は   ダメ!w

焦らず騒がず.mailfilterファイルもUTF8に! これでばっちり動きました。

数多くあるmailfilter関連の記事の中で唯一utf8に関する紹介があった記事はこちら
スタジオ・ドリ様 「さくらインターネット「ライトコース」で、自動応答メール機能」

これまでの文字エンコード:shift-jis
新たに変更したエンコード:utf-8

.mailfilter 判定の命令文が書いてあるファイル utf8に変更
.bkword   英語の判定語を記載したファイル shift-jisのまま変更せず
.bkwordjp  日本語の判定語を記載したファイル utf8に変更
その他、ブロックリスト(メールアドレスブロック)なども変更の必要はありませんでした。

単語登録の度に動作不良に悩まされていたのがだいぶ軽減できました!
たまに、動作が上手く行かない場合があるので、まだ何か問題がありそうですが、十分実用レベルだと思います。

.mailfilterと.bkwordjpをutf8に変更する手順

手順1)WinSCPで2つのファイルをローカルにダウンロード
手順2)Terapad等のエディターで開き、「文字コードを指定して保存」でutf8(又はutf8n BOM無し、改行コードLFのみ)を指定して保存
terapad01
terapad02terapad03

手順3)nkfのエンコード出力形式をutf8に変更


if ( /^From:\s*(.*)/ && lookup( $MATCH1, ".blockaddr" ) )
{
to "maildir/.Trash/"
}
if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}
if ( /^To:\s*(.*)undisclosed-recipients(.*)/ )
{
to "maildir/.Trash/"
}
if ( /^Subject:\s*(.*)/ && lookup( $MATCH1, ".bkword" ) )
{
to "maildir/.Trash/"
}
SUBJECT=`cat | grep Subject | nkf -w`
if ( lookup( $SUBJECT, ".bkwordjp" ) )
{
to "maildir/.Trash/"
}

「nkf -w」の所です。

手順4)WinSCPで2つのファイルをアップロード
    作業の都合上拡張しやファイル名を変更した場合は元に戻して下さい。
手順5)WinSCPのエディタでファイルを開き、正しくアップロードされているか確認する。
該当のファイルをWinSCP上でダブルクリックするとエディタが開きます。
最初はこんな感じで文字化けの状態です。
Editer02
「Encoring」のメニューからUTF8を選択すると・・・
Editer03
じゃじゃーん♪
表示されれば作業はOKです。
手順6)送受信チェック
    自分のアドレスから自分のアドレスに宛ててメールを送信し、送受信に問題がないかチェックして下さい。

判定語ファイル内で利用出来る「正規表現」について
判定語には正規表現の一部が使用できます。

全てを確認している訳ではありませんが、私が確認した範囲内でご説明します。

abc.efg
「.」は何かの1文字という指定です。空白を含む何か1文字があると判断されます。
abcdefg 該当
abc efg 該当
abc1efg 該当
abc22efg 該当せず
abcefg  該当せず

abc.*efg
「*」は直前の文字の「0回以上の」繰り返しという指定です。私の場合「.*」の様に使用する事が多いです。
-2014/05/02:訂正しました。
abcdefg 該当
abcdddefg 該当
abcefg  該当(任意の一時「.」の0回以上の繰り返し「*」なので、該当)
ab00fg  該当せず

(abc|123)-podcast
「|」は「~か~か」という条件を複数設定する機能です。似たような文章でキーワードを複数持たせたい場合に便利です。
abc-podcast 該当
123-podcast 該当
aoi-podcast 該当せず

#競馬当選関係迷惑メールキーワード
「#」はコメントアウトに使用します。検索語として機能しないメモ表記や一時的に特定のワードを解除したい場合に使います。
abc-pod 該当
123-pod 該当
#aoi-pod 該当せず

注意点1)エスケープ文字を検索語に登録する場合
だ.い|し.ゅ|う.ご|う!
この様にエスケープ文字をキーワードに含めたい場合は「¥」を文字の前に付記する事でエスケープ(単純にして文字として取り扱う)事が可能です。検索辞書内で忘れずにエスケープして下さい。
だ\.い\|し\.ゅ\|う\.ご\|う!

注意点2)パイプ「|」の重ね設定について
検索語辞書ファイル内ではこれ位の正規表現で十分だと思います。
「何となくのクセ」という曖昧な情報共有になりますが、以下の様に「|」での条件をいっぱい重ねるのは苦手な感じがします。

(abc|123|aoi).*(def|456).*(8888|9999|0000).*無料

最初は単独でキーワードを設定して、その後「|」を使ってまとめる時にはエラーが出ないかチェックしながら行う、というのが良さそうです。

コメントアウトも出来るし、カテゴリ毎にキーワードをまとめて行くとだいぶ修正しやすいものになります。
スパムメール対策だけではなく、「利用明細はこのフォルダ」とか利用価値は様々あると思いますので、活用してみて下さい。

使用する場合には自己責任でお願いします。
くれぐれも、受信メールがスタックした状態で放置しないようにして下さいね(^^ゞ

みなさんのテクニックなど有れば是非教えて下さい。

-------------------------------------
迷惑メール対策、ゾーン編集(SPFレコード、TXTレコード)についての追加情報
Gmail等で迷惑メールとして判定される不具合からSPFレコードについて調べ、自分のサーバーでも設定しました。
この情報をレンタルサーバーforビギナーズで公開してから、以外と反響が大きくてビックリしました。
皆さんも同じ悩みをお持ちだったんですね(^^ゞ

業務でしようしているサーバーでもSPFレコード、IPv6への対応になり、早速SPFレコードを編集しようとしたましたが問題がありましたのでご報告します。

.co.jp等の地域型、属性型ドメインではゾーン編集(TXTレコード等の編集の事)が出来ない場合があります。
サーバー運営会社等によるのかも知れませんが、少なくてもさくらインターネットではさくらインターネットで取得したか、他社で取得し管理をさくらインターネットに移管したかに依らず、co.jpドメインのゾーン編集は出来ないそうです。
サポートにメールを送ったり、マニュアルを確認したりしていましたが、きちんと回答がありました。
出来ません(>_< ) ドメインの管理画面にco.jpは表示すらされません。 domain01
それでも、コントロールメニュー内のドメイン設定にはco.jpも表示されます。
domain02
そもそも個人利用でco.jpはあり得ないので、この問題に直面している方は企業でサーバー管理などをされている方だと思いますが、
co.jpドメインではコントロールメニューから選べる「SPFレコードを使用する、IPv6を利用する」のチェックボックスだけが操作可能です。

co.jpドメインの場合それでも問題なさそうですが、どうしても問題なら.jpや.com等の別ドメインを検討するしかなさそうです、今のところ。

じゃあ、さくらインターネット以外ではどうか?と思って調べてみましたが、表面上の情報ではなかなかヒットせず、今ひとつ分かりませんでした。
情報お持ちの方いらっしゃいましたら教えて頂けると幸いです。

センダーベース.org (IPのスパマー評価をするシスコシステム運営のウェブサイト
senderbase.org

久しぶりに出勤

おはようございます。 皆様ご機嫌如何ですか? 桂 コヒ蔵です。 被災地のみなさんには心よりお見舞い申し上げます。 一日でも早く暖かく安心できる春が来る事をお祈りしております。 震災後、会社が休業となりその後初出勤です。...

震災後初めて迎える月曜日。

おはようございます。 今日は震災後初めて迎える月曜日です。 各方面、かなりの混乱が発生する可能性があります。 みなさん、どうかいつも以上に気をつけて行動してください。 被災地のみなさん、安否確認や連絡がとれないみなさん。...

こそっ

|`・ω・´)? | ) ミ  さっ

あ、間に合ったw

昨日からの雪で交通状態は最悪。 ってことで、会社に来る時間もぎりぎりになりました。...

iPhone4用スタンド&Dockケーブル

いまさらですが、 昨日iPhone4用のスタンドとDockケーブルを購入しました。 ポイントなのは「バンパー」との併用です! バンパーが大好きって訳ではないのですが、私にとっては現状最も使いやすいケースなのです。 ただ、問題なのがスリムコネクター。...

ひき始めの攻防

日曜日の朝からなんとなく喉が痛いと思っていたのですが、 どうやら風邪のひき始めの様子。 ここで風邪をひいてはなるまいと、早めの葛根湯攻撃! 「風邪VS私」 で激しい攻防戦が続いております(`・ω・´) 2年に一度位3月に大きな風邪を引きまして、...

一年前は?:電器屋新CM

一年前は何をしていたか? とブログを振り返ると、2010年の3月は既にほぼ毎日更新をスタートしていました。 2010年3月7日は日曜日、なので本来ストブロはお休みでしたが、 この日は書き込みがありましたね。...

たった一言でも・・・

たった一言でも、 ストブロを更新し続ける為に、 自分のペースを守る為に、 自分のルールを守る為に、 たった一言でも、 ブログへ投稿するべきなのだろうか? 「おはよ」だけでも、 かきこむべきなのだろうか? それは読んでくれている人を裏切る行為なのか?...

冬が戻ってきました(>_

今朝は冷え込みましたね! こちらでは、また雪が降っちゃいました。 もう三月だけど、春は遠いなぁって感じです。 出勤に時間が掛かってしまった為・・・ 本日はこれにて!ww...

ミニチュアの日

3月2日は「ミニチュア」の日なんだそうです。 3(み) 2(に) の語呂合わせでしょうね。 ・・・ん? だとすると、ミニが付くものなら何でも来いかな? ミニスカートの日 ミニ肉まんの日 ミニミニピザの日 ミニダンボーの日 ミニーマウスの日 ミニ四駆の日...

終わっちゃいますよ!

2月が終わっちゃいますよ!? あっという間に! え、今日28日? 2月最終日じゃないですかΣ( ̄。 ̄ノ)ノ 早かったですねぇ。 もう、今日は2月の余韻に浸って一杯飲みたいと思いますw...

久しぶりの雨

みなさん、雨はお好きですか? 私はINST内では無双の雨好きなのですが、「雨が好き!」っていうと だいたい理解してくれませんw 今朝は私の町では久しぶりのまとまった雨が降っています。 今日は午後まで降り続く予報です。...

0コメント


電器屋Walkerの過去配信のBGMで利用させて頂いております。

ポッドキャスト品質向上、整音テクニック 解説Live

開催のお知らせ

詳細はこちら

国際ポッドキャストの日

International Podcast Day Event

ツキイチ - 隣のポッドキャスト

まとめファンサイト