ラベル mailfilter の投稿を表示しています。 すべての投稿を表示
ラベル mailfilter の投稿を表示しています。 すべての投稿を表示

2018年6月4日月曜日

続.mailfilterを弄ってみる!(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ6】

は、いよいよメール本文での振り分け方法についてお送りします。

ちょっと間が空いちゃったけど、内容はとっても薄いです。
それでは、本題に入りますよ~

【本文によるスパム判定】

ここでも、ドメイン共通設定となる『.filter』ファイルを編集して、
今度は本文でスパム判定する方法を紹介するよ。もち日本語もOK!

■.filterの編集例3

if ( /今すぐ購入あなたは\d+パーセントの割引を楽しむことができる/:b )
{
  # やりたい処理を記述してね♪
}

[解説]

はい、何の捻りも御座いません。普通に日本語使ってみたら出来ちゃった的な。。。

ちなみに、"本文"では件名時のような文字コードのデコードは必要なさそう!
なお、例2と同様にlookup関数が使えないかと色々試してみたけど、何故か
行を跨ぐ複数行に渡っての比較が出来なかったので、あえなく断念しております。

例3に話を戻すと、本文を検索するパターン(/日本語の本文キーワード/:b)で
単に判定しているだけなんだよね。

一般的には『本文検索は高負荷になりがちな為、なるべくなら控えた方が良い。』
って記事を見かけるけど、真偽の程は不明です。
でもさぁ、そんな事言ってたら、まともなウィルスチェックやスパムチェックなんて
出来やしないとオイラは思うんだよね。
だから、実行環境の性能次第って事も大いにあると思うよ。

ただこの方法、どうしてもオイラが気に入らない点があるんだよね。
そ・れ・は、キーワードが増えるに従ってコードが美しくなくなる事!
この一点が気に入らないのっ。
なので、あんまり多用はしたくないのが正直な所です。

そんなこんなで、以前にふと思いついた
『不満を根本から解決すべくXServer内に別途新たなスパム判定機能を立てる!』
件について、取り組む覚悟が出来ました。

現在、チャレンジの真っ最中♥

と言っても、既に環境の構築は完了しており、経過観察中的な状況です。
こちらの顛末は追々アップする予定でおります。
乞うご期待あれ~♪

2018年5月28日月曜日

.mailfilterを弄ったものの即訂正!(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ5】

は、"to"や"cc"コマンドのディレクトリ名指定時の潜在的な不具合についてお送りします。

前回『.filterの編集例1』において、内部メールアドレスへ転送する際に
Maildir形式のディレクトリ名で指定する方法について紹介したけど、
その直後にちょっとした不具合を発見しちゃったんだよね。

なので、紹介した手前、そのまま知らん顔では申し訳なさ過ぎるので、
図らずも今回はその訂正ネタを記事にしようと思います。

なお、紹介した方法は、レアな使い方かも知れないけど、
特別変な事をやっている訳ではなく、公式マニュアル(?)にある通りの指定を
行っているだけですので、その点は誤解無きようにお願いします。

ちなみに、転送自体は正常に処理されてるんだけどね。
じゃー何が具合が悪いのかと言うと、、、
メールアカウント毎に設定しているメールボックス容量の制限値が、
件の処理を行うと勝手に別の値に書き換わっちゃうのよ!!

もう少し詳しく説明すると、転送先に指定したメールアカウントの
maildirsizeファイル中の1行目に保持されてる制限値が意図していない値に
なっちゃうって事なの! 変な副作用が発生してるでしょ?
なお、maildirsize中の値は、サーバーパネル上の設定が元になってるハズだけど、
何故か両値は連動してないみたいだよ。で、実際効いてるのはmaildirsizeの方ね!
なので、確認する場合は、FTPかWebメールの画面から調べて見てね。

オイラのケースでは、メールボックス容量を最大の5,000MBにしておいたのに、
メール受信の不調で色々調べてたら、勝手に300MBに変わってたんだよね。
で、オーバーフローしてたと言う落ち。
ちょっと俄かには信じ難い挙動でしょ?

より正確性を期す説明をするならば、"to"ではなく"cc"で発生していた現象です。
また、複数のドメイン、複数のメールアカウントを作成して、アカウント毎に
メールボックス容量も複数の設定がある状態でした。
値はランダムに変わるんじゃなく、他の設定値の何れかの値に固定化されてる感じかな?

と言う様にエックスサーバーではカオス状態に陥る事が判明したので、
以下に、その代替となる回避方法を晒しておきます。

MAILADDR="/home/サーバーID/ドメイン名/mail/サブドメイン名/内部メールアドレス/"
to "|/usr/bin/deliverquota $MAILADDR"
または、
xfilter "/usr/bin/deliverquota $MAILADDR"

転送じゃなくコピー目的なら、
cc "|/usr/bin/deliverquota $MAILADDR"

ググって、"deliverquota"コマンドで試して見たら、変な副作用を回避できました。

では、次回こそ本文編です。お楽しみに~

2018年5月24日木曜日

.mailfilterを弄ってみる!(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ4】

は、役立たずSAの代役として、メール振り分け機能をフル活用する方法についてお送りします。

前回は、大事な所で電池が切れちゃって、ご免なさい。
ではでは、早速本題に入りますよ~

【件名によるスパム判定】

ここでは、ドメイン共通設定となる『.filter』ファイルを編集して、
件名でスパム判定する方法を紹介するね。もちろん日本語にも完全対応!
(.filterの場所:"/home/サーバーID/ドメイン名/mail/")

■.filterの編集例1

if (`cat | grep Subject | nkf -mw` =~ /.*日本語の件名キーワード.*/)
{
    # 件名の先頭に"[Meiwaku] "を付加する
    xfilter "sed -e 's/^Subject: /Subject: \[Meiwaku\] /'"

    # 内部メールアドレスへ転送する
    to "/home/サーバーID/ドメイン名/mail/サブドメイン名/内部メールアドレス/"
}
# 文字コード:UTF-8N、改行コード:LF

[解説]

"日本語の件名キーワード"と一致する場合に、件名の先頭に"[Meiwaku] "を付加して、
指定された内部メールアドレスへ転送する例です。
バッククォート演算子『``』を使って、拾い出した件名にMIMEデコードを掛けて、
UTF-8Nコードへ変換してるとこが一番の肝であって味噌なんだよね!

また、本例では内部配送となるメールアドレスへ転送する場合を想定して、
Maildir形式のディレクトリ名で指定してみました。
レアな使い方だけど、この方が余計な処理も走らずにスマートな転送が可能だよ。
(【重要】変な副作用の不具合がある模様です。詳細は次回記事をご参照下さい。)
なお、外部のメールアドレスへ転送する場合は、素直に例2の様な一般的な方法でお願いねっ。

[豆知識]

話は脱線するけど、".mailfilter"、".alias"、".filter"、".header"や".spamassassin"等のファイル中
でのパス指定の方法がやや謎的に感じたので、ここで簡単に説明しておこうと思います。

絶対パス指定時の基準は、言わずと知れたルートディレクトリ"\"が基準です。
また、相対パス指定時の基準は、カレントディレクトリと相場は決まっています。
では、そのカレントは何処かと言うと、各メールアドレス毎に準備された".mailfilter"ファイル
が存在しているそれぞれのディレクトリが、フィルター実行時のカレントとなっています。

つまり、相対パス指定を行う場合は、
"/home/サーバーID/ドメイン名/mail/サブドメイン名/各メールアドレス/"
が基準となるので、そこからの相対でパスを指定すれば良い事になります。

なお、このカレントの基準は、ファイル配置が異なる".filter"や".header"でも同様です。
最終的には".mailfilter"でインクルードされてるだけなので、ちょっと考えれば分かるでしょ?


■.filterの編集例2

SUBJECT = `cat | grep Subject | nkf -mw` # 変数を使用する例
if (lookup($SUBJECT, "../../block_subject.dat")) # 相対パス指定の例
{
    # 件名の先頭に"[Meiwaku2] "を付加する
    xfilter "sed -e 's/^Subject: /Subject: \[Meiwaku2\] /'"

    # 外部メールアドレスへ転送する
    to "!転送先メールアドレス"
}

[解説]

件名が以下の"block_subject.dat"ファイル中の各行のキーワードの何れかと一致する場合に云々、と言うような判定処理となります。
(block_subject.datの場所:"/home/サーバーID/ドメイン名/mail/")

lookup関数を使う事で、複数の件名条件をスマートに指定可能となり、後々の保守性も抜群♪
当然ながら"block_subject.dat"のファイル名や配置場所も任意で変更が可能です。

[block_subject.datの内容]

#--- ここから ---
カード利用のお知らせ
あなたのApple IDのセキュリティ質問を再設定してください。
Apple IDアカウントを回復してください
【楽天市場】注文内容ご確認(自動配信メール)
■『FC2.』よりお知らせ※継続課金の停止の可否について
アカウント凍結による所有者特定措置行使【(株)エフシーツー】
注文書、請書及び請求書のご送付
#--- ここまで ---
# で始まる行は、コメントと見なされるよ。
# キーワードは、上から順に評価されるよ。
# キーワードには、正規表現も使えるよ。
# 文字コード:UTF-8N、改行コード:LF

次回は、本文編です。お楽しみにっ!

タイトル設定の迷路に嵌る!(Blogger)

Bloggerのタイトル設定欄、目立たないって思わない? オイラは始めて数日間、まったく気付かず未設定のままだったよ!(恥ずかしぃ~ で、ふと気付いて設定しようとしたものの良く分からない。。。 ググってもヒットするのは、タイトルの表示方法の設定や、 どの様なタイトルを...